MALICIOUS
274
Risk Score
Malware Insights
MITRE ATT&CK
T1566.001 Spearphishing Attachment
T1059.005 Visual Basic
T1059.001 PowerShell
T1105 Ingress Tool Transfer
The sample is an Excel document containing VBA macros that impersonates a cloud document lure. The Workbook_Open macro executes a series of functions, including 'DownloadEmployeeMasterData', which likely downloads and executes a second-stage payload. This is supported by the 'OLE_VBA_BITSTRANSFER_DROPPER' heuristic firing, indicating a download-and-run command.
Heuristics 11
-
VBA project inside OOXML medium 6 related findings OOXML_VBADocument contains a VBA project — VBA macros present
-
WScript.Shell usage critical OLE_VBA_WSCRIPTWScript.Shell usageMatched line in script
Set wshShell = CreateObject("Wscript.Shell") -
VBA stages a PowerShell/LOLBin download-and-run command critical OLE_VBA_BITSTRANSFER_DROPPERThe macro assembles a download command using a PowerShell or LOLBin download primitive (Start-BitsTransfer, Invoke-WebRequest, Net.WebClient, bitsadmin, certutil, ...) that fetches a remote payload, then executes it -- writing it to a script file and running it, or launching it directly from an auto-exec handler. The keywords are commonly split with PowerShell backtick / cmd caret escapes to evade scanners; this detection de-escapes the source first. A high-confidence downloader/dropper, stronger than the individual Shell / download keywords on their own.Matched line in script
Private Sub Workbook_Open() -
CreateObject call high OLE_VBA_CREATEOBJCreateObject callMatched line in script
Set networkPath = CreateObject("WScript.Network") -
VBA p-code auto-exec with execution tokens high OLE_VBA_PCODE_AUTOEXEC_EXECTriggers on the COMBINATION of two tokens co-occurring in the same compiled VBA/cache stream: an auto-execution entry point (Auto_Open / AutoOpen / Document_Open / Workbook_Open / Auto_Close / AutoClose) AND a shell/download/object-execution token (Shell, CreateObject, GetObject, PowerShell, cmd.exe, URLDownloadToFile, WinHttp, XMLHTTP, ADODB.Stream, ShellExecute, ExecuteExcel4Macro). Neither token alone fires it — it is the pairing that flags p-code-only or source-extraction-failure macro documents where the visible VBA source is unavailable. The matched tokens are named in the detail line below.
-
Workbook_Open macro low OLE_VBA_WBOPENWorkbook_Open macroMatched line in script
Private Sub Workbook_Open() -
Environ() call (env variable access) low OLE_VBA_ENVIRONEnviron() call (env variable access)Matched line in script
scriptFullFileName = Environ("Temp") & "\" & "Config" -
Cloud document impersonation lure medium SE_CLOUD_DOC_LUREDocument impersonates a cloud file-sharing service such as SharePoint, OneDrive, Google Drive, Dropbox, Box, or Microsoft 365 and asks the user to open, verify, or access a shared document
-
External hyperlinks (16) low OOXML_EXTERNAL_HYPERLINKSDocument contains 16 external hyperlinks — clickable URLs are stored as external relationships. First target: https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG6/Shared Documents/Edwards PG 6
-
Hidden worksheet (hidden) low OOXML_HIDDEN_SHEETExcel workbook contains 6 hidden sheet(s) — hidden sheets are commonly used to conceal macro code, staging data, or intermediate payload construction
-
Embedded URL info EMBEDDED_URLOne or more URLs were extracted from the document. The URL itself is not a detection — see the per-URL labels for which channel (macro, JS, link annotation, document body, ...) reached each URL.URL https://docs.google.com/spreadsheets/d/e/2PACX-1vQXt8FJxvsvO1aZADI1MKJfUcLtJAFZO7c-XKIc6j9JCizV8a7yborS3AaasiLLBA/pubhtml Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/PayRunPreparation/Shared%20Documents/MasterIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG3/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG1/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG2/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG3/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG4/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG5/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG6/SharedDocument hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG7/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG8/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG1/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG2/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG4/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG5/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG6/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG72/SharedIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG6/Shared Documents/Edwards PG 6Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG4/Shared Documents/Compressor PG 4Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG1/Shared Documents/Edwards PG 1Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG5/Shared Documents/Edwards PG 5Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG2/Shared Documents/Compressor PG 2Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG3/Shared Documents/Compressor PG 3Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG72/Shared Documents/Compressor PG 7Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/PayRunPreparation/Shared Documents/Master DataDocument hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG4/Shared Documents/Edwards PG 4Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG1/Shared Documents/Compressor PG 1Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG3/Shared Documents/Edwards PG 3Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG6/Shared Documents/Compressor PG 6Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG8/Shared Documents/Edwards PG 8Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG2/Shared Documents/Edwards PG 2Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-EdwardsPG7/Shared Documents/Edwards PG 7Document hyperlink
- https://onevirtualoffice.sharepoint.com/sites/ACNAPayroll-CompressorPG5/Shared Documents/Compressor PG 5Document hyperlink
- https://support.microsoft.com/en-us/help/2745652/object-model-calls-may-fail-from-workbookopen-event-when-exiting-proteIn document text (OOXML body / shared strings)
- https://onevirtualoffice.sharepoint.com/sites/PayRunPreparation/Shared%20Documents/Temp%20Folder/In document text (OOXML body / shared strings)
Extracted artifacts 15
Files carved from inside the sample during analysis.
| Filename | Kind | Source | Size |
|---|---|---|---|
macros.bas |
vba-macro | oletools.olevba.extract_macros (decoded VBA source from OOXML) | 122526 bytes |
SHA-256: e35409abeb35a1dca449b1613b79e27a59fa6e6964b3b7c7febfaaa0c362ddb0 |
|||
Preview scriptFirst 1,000 lines of the extracted script
Attribute VB_Name = "ThisWorkbook"
Attribute VB_Base = "0{00020819-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Private Sub Workbook_Open()
On Error GoTo AnyError
VBConfig
Connect
UnlockEmployeeMasterSheet
DownloadEmployeeMasterData
LockEmployeeMasterSheet
Exit Sub
' --------
AnyError:
MsgBox "Macro failed to complete." & vbNewLine & vbNewLine & Err.Description
End Sub
Attribute VB_Name = "Sheet14"
Attribute VB_Base = "0{00020820-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Attribute VB_Control = "OptionButton7, 17, 7, MSForms, OptionButton"
Attribute VB_Control = "OptionButton5, 15, 8, MSForms, OptionButton"
Attribute VB_Control = "OptionButton4, 14, 9, MSForms, OptionButton"
Attribute VB_Control = "OptionButton1, 3, 10, MSForms, OptionButton"
Attribute VB_Control = "OptionButton2, 4, 11, MSForms, OptionButton"
Attribute VB_Control = "OptionButton3, 5, 12, MSForms, OptionButton"
Attribute VB_Control = "OptionButton12, 22, 13, MSForms, OptionButton"
Attribute VB_Control = "OptionButton16, 26, 14, MSForms, OptionButton"
Attribute VB_Control = "OptionButton17, 27, 15, MSForms, OptionButton"
Attribute VB_Control = "OptionButton18, 28, 16, MSForms, OptionButton"
Attribute VB_Control = "OptionButton19, 29, 17, MSForms, OptionButton"
Attribute VB_Control = "OptionButton20, 30, 18, MSForms, OptionButton"
Attribute VB_Control = "OptionButton6, 31, 19, MSForms, OptionButton"
Private Sub OptionButton3_Click()
' Dim rng As Range
' Set rng = ActiveSheet.Range("C9")
' With ActiveSheet.OLEObjects("OptionButton18")
' .Top = rng.Top
' .Left = rng.Left
' .Width = rng.Width
' .Height = rng.RowHeight
' .Visible = True
'
' End With
'
'
' ThisWorkbook.Worksheets("Ctrl").OptionButton4.Visible = False
' ThisWorkbook.Worksheets("Ctrl").OptionButton5.Visible = False
' ThisWorkbook.Worksheets("Ctrl").OptionButton19.Visible = False
' ThisWorkbook.Worksheets("Ctrl").OptionButton20.Visible = False
' ThisWorkbook.Worksheets("Ctrl").OptionButton16.Visible = False
' ThisWorkbook.Worksheets("Ctrl").OptionButton17.Visible = False
' ThisWorkbook.Worksheets("Ctrl").OptionButton12.Visible = False
'
' ThisWorkbook.Worksheets("Ctrl").OptionButton18.Value = True
'
' AC Compressors has 5 channels
ThisWorkbook.Worksheets("Ctrl").OptionButton4.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton5.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton18.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton19.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton20.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton16.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton17.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton12.Visible = False
ThisWorkbook.Worksheets("Ctrl").OptionButton4.Value = True
Dim rng1 As Range
Set rng1 = ActiveSheet.Range("C9")
With ActiveSheet.OLEObjects("OptionButton4")
.Top = rng1.Top
.Left = rng1.Left
.Width = rng1.Width
.Height = rng1.RowHeight
.Visible = True
End With
Dim rng2 As Range
Set rng2 = ActiveSheet.Range("C11")
With ActiveSheet.OLEObjects("OptionButton5")
.Top = rng2.Top
.Left = rng2.Left
.Width = rng2.Width
.Height = rng2.RowHeight
.Visible = True
End With
Dim rng3 As Range
Set rng3 = ActiveSheet.Range("C13")
With ActiveSheet.OLEObjects("OptionButton18")
.Top = rng3.Top
.Left = rng3.Left
.Width = rng3.Width
.Height = rng3.RowHeight
.Visible = True
End With
Dim rng5 As Range
Set rng5 = ActiveSheet.Range("C15")
With ActiveSheet.OLEObjects("OptionButton19")
.Top = rng5.Top
.Left = rng5.Left
.Width = rng5.Width
.Height = rng5.RowHeight
.Visible = True
End With
Dim rng6 As Range
Set rng6 = ActiveSheet.Range("C17")
With ActiveSheet.OLEObjects("OptionButton20")
.Top = rng6.Top
.Left = rng6.Left
.Width = rng6.Width
.Height = rng6.RowHeight
.Visible = True
End With
Dim rng7 As Range
Set rng7 = ActiveSheet.Range("C19")
With ActiveSheet.OLEObjects("OptionButton16")
.Top = rng7.Top
.Left = rng7.Left
.Width = rng7.Width
.Height = rng7.RowHeight
.Visible = True
End With
Dim rng8 As Range
Set rng8 = ActiveSheet.Range("C21")
With ActiveSheet.OLEObjects("OptionButton17")
.Top = rng8.Top
.Left = rng8.Left
.Width = rng8.Width
.Height = rng8.RowHeight
.Visible = True
End With
'
' Dim rng9 As Range
' Set rng9 = ActiveSheet.Range("C23")
' With ActiveSheet.OLEObjects("OptionButton12")
' .Top = rng9.Top
' .Left = rng9.Left
' .Width = rng9.Width
' .Height = rng9.RowHeight
' .Visible = False
' End With
'Remove colour on cells
Range("G9:G26").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
ThisWorkbook.Worksheets("Ctrl").Range("H9") = ""
ThisWorkbook.Worksheets("Ctrl").Range("H11") = ""
ThisWorkbook.Worksheets("Ctrl").Range("H13") = ""
ThisWorkbook.Worksheets("Ctrl").Range("H15") = ""
ThisWorkbook.Worksheets("Ctrl").Range("G9") = ""
ThisWorkbook.Worksheets("Ctrl").Range("G11") = ""
ThisWorkbook.Worksheets("Ctrl").Range("G13") = ""
ThisWorkbook.Worksheets("Ctrl").Range("G15") = ""
Range("A7").Select
End Sub
Private Sub OptionButton7_Click()
ThisWorkbook.Worksheets("Ctrl").OptionButton4.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton5.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton18.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton19.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton20.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton16.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton17.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton12.Visible = True
ThisWorkbook.Worksheets("Ctrl").OptionButton4.Value = True
Dim rng1 As Range
Set rng1 = ActiveSheet.Range("C9")
With ActiveSheet.OLEObjects("OptionButton4")
.Top = rng1.Top
.Left = rng1.Left
.Width = rng1.Width
.Height = rng1.RowHeight
.Visible = True
End With
Dim rng2 As Range
Set rng2 = ActiveSheet.Range("C11")
With ActiveSheet.OLEObjects("OptionButton5")
.Top = rng2.Top
.Left = rng2.Left
.Width = rng2.Width
.Height = rng2.RowHeight
.Visible = True
End With
Dim rng3 As Range
Set rng3 = ActiveSheet.Range("C13")
With ActiveSheet.OLEObjects("OptionButton18")
.Top = rng3.Top
.Left = rng3.Left
.Width = rng3.Width
.Height = rng3.RowHeight
.Visible = True
End With
Dim rng5 As Range
Set rng5 = ActiveSheet.Range("C15")
With ActiveSheet.OLEObjects("OptionButton19")
.Top = rng5.Top
.Left = rng5.Left
.Width = rng5.Width
.Height = rng5.RowHeight
.Visible = True
End With
Dim rng6 As Range
Set rng6 = ActiveSheet.Range("C17")
With ActiveSheet.OLEObjects("OptionButton20")
.Top = rng6.Top
.Left = rng6.Left
.Width = rng6.Width
.Height = rng6.RowHeight
.Visible = True
End With
Dim rng7 As Range
Set rng7 = ActiveSheet.Range("C19")
With ActiveSheet.OLEObjects("OptionButton16")
.Top = rng7.Top
.Left = rng7.Left
.Width = rng7.Width
.Height = rng7.RowHeight
.Visible = True
End With
Dim rng8 As Range
Set rng8 = ActiveSheet.Range("C21")
With ActiveSheet.OLEObjects("OptionButton17")
.Top = rng8.Top
.Left = rng8.Left
.Width = rng8.Width
.Height = rng8.RowHeight
.Visible = True
End With
Dim rng9 As Range
Set rng9 = ActiveSheet.Range("C23")
With ActiveSheet.OLEObjects("OptionButton12")
.Top = rng9.Top
.Left = rng9.Left
.Width = rng9.Width
.Height = rng9.RowHeight
.Visible = True
End With
'Remove the colour on cells
Range("G9").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent4
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
Range("G11").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
Range("G13").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
Range("G15").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
ThisWorkbook.Worksheets("Ctrl").Range("H9") = "Maximum Overtime (OT)"
ThisWorkbook.Worksheets("Ctrl").Range("H11") = "Maximum Doubletime (DT)"
ThisWorkbook.Worksheets("Ctrl").Range("H13") = "Minimum hours weekly"
ThisWorkbook.Worksheets("Ctrl").Range("H15") = "Minimum hours bi-weekly"
ThisWorkbook.Worksheets("Ctrl").Range("G9") = ""
ThisWorkbook.Worksheets("Ctrl").Range("G11") = ""
ThisWorkbook.Worksheets("Ctrl").Range("G13") = ""
ThisWorkbook.Worksheets("Ctrl").Range("G15") = ""
Range("A7").Select
End Sub
Attribute VB_Name = "SheetConfigScript"
Attribute VB_Base = "0{00020820-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Option Explicit
Attribute VB_Name = "Sheet11"
Attribute VB_Base = "0{00020820-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Attribute VB_Name = "Checkfile"
Sub prototype()
Dim ws As Worksheet
Dim wb As Workbook
'Dim OptionButton1 As Variant
Dim LastRow As Long
Dim LastRow2 As Long
Dim val As Integer
Dim CompId As String
'Dim wb As Workbook
Dim wsCtrl As Worksheet
Dim NumberOfLoop As Long
LOG.sub_ClearLog
'LOG.sub_Log Activity1:="Prototype", Activity2:="Start"
Application.StatusBar = ""
On Error GoTo AnyError
' Start recording summary data, including elapsed time
CallScript "SummaryData_Initialize"
Set wb = ThisWorkbook
Set wsCtrl = wb.Worksheets("Ctrl")
Set wsData = wb.Worksheets("Data")
'Check Comp ID
If ThisWorkbook.Worksheets("Ctrl").OptionButton3.Value = True Then
CompId = ThisWorkbook.Worksheets("Ctrl").OptionButton3.Caption 'AC Compressors
HeaderColumn = "Yes"
EmployeeMasterCOMPID = "ATLASCOI"
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton7.Value = True Then
CompId = ThisWorkbook.Worksheets("Ctrl").OptionButton7.Caption 'Edwards
HeaderColumn = "No"
EmployeeMasterCOMPID = "ATLASEDW"
End If
If ThisWorkbook.Worksheets("Ctrl").OptionButton4.Value = True Then
ChannelPicked = 1
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton5.Value = True Then
ChannelPicked = 2
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton18.Value = True Then
ChannelPicked = 3
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton19.Value = True Then
ChannelPicked = 4
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton20.Value = True Then
ChannelPicked = 5
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton16.Value = True Then
ChannelPicked = 6
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton17.Value = True Then
ChannelPicked = 7
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton12.Value = True Then
ChannelPicked = 8
End If
'set pay frequency for channels in Edwards
If ThisWorkbook.Worksheets("Ctrl").OptionButton7.Value = True Then
If (ChannelPicked = 1 Or ChannelPicked = 2 Or ChannelPicked = 5) Then
PayFrequency = "Weekly"
Else
PayFrequency = "Bi-Weekly"
End If
Else
PayFrequency = "Semi-monthly" 'other companies will have semi
End If
'set pay frequency for channels in Compressors
If ThisWorkbook.Worksheets("Ctrl").OptionButton3.Value = True Then
If (ChannelPicked = 6) Then
PayFrequency = "Weekly"
ElseIf (ChannelPicked = 7) Then
PayFrequency = "Semi-monthly"
Else
PayFrequency = "Bi-Weekly"
End If
Else
End If
'Alert for Edward and Document type is Time sheet only
If ThisWorkbook.Worksheets("Ctrl").OptionButton7.Value = True And ThisWorkbook.Worksheets("Ctrl").OptionButton1.Value = True Then
If (ThisWorkbook.Worksheets("Ctrl").Range("G9") < 1 Or ThisWorkbook.Worksheets("Ctrl").Range("G9") = "") Then
MsgBox "Please input Maximum Overtime (OT)", vbExclamation
GoTo Ende
End If
If (ThisWorkbook.Worksheets("Ctrl").Range("G11") < 1 Or ThisWorkbook.Worksheets("Ctrl").Range("G11") = "") Then
MsgBox "Please input Maximum Doubletime (DT)", vbExclamation
GoTo Ende
End If
If PayFrequency = "Weekly" And (ThisWorkbook.Worksheets("Ctrl").Range("G13") < 1 Or ThisWorkbook.Worksheets("Ctrl").Range("G13") = "") Then
MsgBox "You are selecting PG 1/2/5. Please input minimum hours weekly", vbExclamation
GoTo Ende
ElseIf PayFrequency = "Bi-Weekly" And (ThisWorkbook.Worksheets("Ctrl").Range("G15") < 1 Or ThisWorkbook.Worksheets("Ctrl").Range("G15") = "") Then
MsgBox "You are selecting PG 3/4/6/7. Please input minimum hours bi-weekly", vbExclamation
GoTo Ende
End If
End If
'set correct amount type
If ThisWorkbook.Worksheets("Ctrl").OptionButton1.Value = True Then
Typ = "$"
typ2 = "H"
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton2.Value = True Then
Typ = "H"
typ2 = "$"
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton6.Value = True Then 'It is allowed to be $ and Hours
Typ = ""
typ2 = ""
End If
'If ThisWorkbook.Worksheets("Ctrl").OptionButton3.Value = True Then --> moved to above "Check file properties"
' Code = 105
'End If
'check file properties like : have have Last Name and First Name check
Set wsParam = wb.Worksheets("Param")
LastRowParam = wsParam.Cells(Rows.Count, "A").End(xlUp).Row
HeaderColumn = ""
LastFirstNameCheck = ""
For c = 2 To LastRowParam
If wsParam.Range("A" & c) = CompId Then
Code = wsParam.Range("B" & c).Value
'HeaderColumn = wsParam.Range("C" & c).Value
LastFirstNameCheck = wsParam.Range("D" & c).Value
AmountTypeCheck = wsParam.Range("E" & c).Value
End If
Next c
'open upload file
fileName = ActiveWorkbook.Name
filetoopen = Application.GetOpenFilename _
(Title:="Please choose a file to process:")
If filetoopen = False Then
LOG.sub_Log Activity1:="Choosing file canceled."
MsgBox "No file specified.", vbExclamation, "File error!"
Exit Sub
Else
End If
wb.Sheets("Data").Activate
wb.Sheets("Data").UsedRange.Clear
Workbooks.Open fileName:=filetoopen
Set ws = ActiveSheet
Openfile = ActiveWorkbook.Name
'ws.Range("A1").Select
'Check Header Column exist on the file
answer = MsgBox("Does the file have Column Header ?", vbYesNo)
If answer = vbYes Then
If Trim(CStr(ws.Cells(1, 6))) = "" Then 'check if F1 has data
MsgBox "No column header found in column F.", vbExclamation, "Column Header missing!"
wb.Sheets("Ctrl").Activate
Windows(Openfile).Close SaveChanges:=False
GoTo Ende
Else
HeaderColumn = "Yes"
End If
Else
LastColumnHeader = ws.Cells(1, Columns.Count).End(xlToLeft).Column
For b = 1 To LastColumnHeader
If Trim(CStr(ws.Cells(1, b))) <> "" And Trim(CStr(ws.Cells(2, b))) = "" Then 'check Row1 has data and Row2 no data
answer2 = MsgBox("It seems the file has column header, Do you want to proceed the file ?", vbYesNo)
If answer2 = vbYes Then
HeaderColumn = "No"
Exit For
Else
wb.Sheets("Ctrl").Activate
Windows(Openfile).Close SaveChanges:=False
GoTo Ende
End If
Else
HeaderColumn = "No"
End If
Next b
End If
Dim StartTime As Double
dblStartTime = VBA.Timer
If HeaderColumn = "Yes" Then
ws.Cells.Select
Selection.Copy
Windows(fileName).Activate
ThisWorkbook.Sheets("Data").Activate
ActiveSheet.Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Range("A1").Select
Windows(Openfile).Application.CutCopyMode = False
Windows(Openfile).Close SaveChanges:=False
Else
' Edwards file
ws.Range("A:A").Copy wsData.Range("C1") 'CompID
ws.Range("B:B").Copy wsData.Range("B1") 'ProdID
ws.Range("C:C").Copy wsData.Range("G1") 'Check#
ws.Range("D:D").Copy wsData.Range("L1") '
ws.Range("E:E").Copy wsData.Range("H1") 'Paygroup
ws.Range("F:F").Copy wsData.Range("F1") 'Amt Type
ws.Range("H:H").Copy wsData.Range("D1") 'E/D-CODE
ws.Range("I:I").Copy wsData.Range("E1") 'AMOUNT
ws.Range("O:O").Copy wsData.Range("M1")
Windows(Openfile).Application.CutCopyMode = False
Windows(Openfile).Close SaveChanges:=False
End If
Call UnlockResultCells
'clear sheets
Worksheets("Calc").Cells.Clear
Worksheets("Result").Cells.Clear
If LastFirstNameCheck = "Yes" Then
'check column "N" for LastName and column "O" for FirstName
LastColumn = wb.Worksheets("Data").Cells(1, Columns.Count).End(xlToLeft).Column
LastRow = wb.Worksheets("Data").Cells(Rows.Count, "B").End(xlUp).Row
For c = 1 To LastColumn
If InStr(UCase(CStr(ThisWorkbook.Worksheets("Data").Cells(1, c))), UCase("Last Name")) <> 0 Then
wb.Worksheets("Data").Range(Cells(1, c), Cells(LastRow, c)).Cut wb.Worksheets("Data").Range("N:N")
End If
Next c
For d = 1 To LastColumn
If InStr(UCase(CStr(ThisWorkbook.Worksheets("Data").Cells(1, d))), UCase("First Name")) <> 0 Then
wb.Worksheets("Data").Range(Cells(1, d), Cells(LastRow, d)).Cut wb.Worksheets("Data").Range("O:O")
End If
Next d
' to get vlookup LastName and FirstName match on the employee sheet with the upload file
If wb.Worksheets("Employees").AutoFilterMode Then
wb.Worksheets("Employees").AutoFilterMode = False
End If
End If
Call UnlockEmployeeMasterSheet
LastRowEmployees = wb.Worksheets("Employees").Cells(Rows.Count, "A").End(xlUp).Row
ThisWorkbook.Worksheets("Employees").Range("S2") = "=CONCATENATE(TRIM(E2),TRIM(D2))"
ThisWorkbook.Worksheets("Employees").Range("T2") = "=A2"
ThisWorkbook.Worksheets("Employees").Range("U2") = "=TEXT(C2," & Chr(34) & "00000000" & Chr(34) & ")" 'EmpID IN TEXT FORMAT(8chars)
ThisWorkbook.Worksheets("Employees").Range("V2") = "=CONCATENATE(TRIM(J2),TRIM(U2))" 'EmpID & COMPID
ThisWorkbook.Worksheets("Employees").Range("K2:W2").Copy ThisWorkbook.Worksheets("Employees").Range("K3:W" & LastRowEmployees)
Application.CutCopyMode = False
If HeaderColumn = "No" Then
wsData.Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
'change headers
wsData.Range("A1") = "COMPID"
wsData.Range("B1") = "PRO ID"
wsData.Range("C1") = "CODE TYPE"
wsData.Range("D1") = "E/D-CODE"
wsData.Range("E1") = "AMOUNT"
wsData.Range("F1") = "AMT TYPE"
wsData.Range("G1") = "CHECK #"
wsData.Range("H1") = "PAY GROUP"
wsData.Range("N1") = "LAST NAME"
wsData.Range("O1") = "FIRST NAME"
'add headers for lookup
If wsData.Range("I1") = "" Then wsData.Range("I1") = "*"
If wsData.Range("J1") = "" Then wsData.Range("J1") = "*"
If wsData.Range("K1") = "" Then wsData.Range("K1") = "*"
If wsData.Range("L1") = "" Then wsData.Range("L1") = "*"
If wsData.Range("M1") = "" Then wsData.Range("M1") = "*"
If wsData.Range("P1") = "" Then wsData.Range("P1") = "*"
If wsData.Range("Q1") = "" Then wsData.Range("Q1") = "*"
If wsData.Range("R1") = "" Then wsData.Range("R1") = "*"
If wsData.Range("U1") = "" Then wsData.Range("U1") = "*"
If wsData.Range("X1") = "" Then wsData.Range("X1") = "*"
If wsData.Range("Y1") = "" Then wsData.Range("Y1") = "*"
If wsData.Range("AA1") = "" Then wsData.Range("AA1") = "*"
If wsData.Range("AB1") = "" Then wsData.Range("AB1") = "*"
If wsData.Range("AC1") = "" Then wsData.Range("AC1") = "*"
If wsData.Range("AD1") = "" Then wsData.Range("AD1") = "*"
If wsData.Range("AE1") = "" Then wsData.Range("AE1") = "*"
wsData.Range("S1") = "VEMPID"
wsData.Range("T1") = "VTERMDATE"
wsData.Range("V1") = "CONNAME"
wsData.Range("W1") = "VNAME"
wsData.Range("Z1") = "SUBPAY"
wsData.Range("AB1") = "VSALARYTYPE"
'LastRow = wb.Worksheets("Data").Cells(Rows.Count, "B").End(xlUp).Row
LastRow = wb.Worksheets("Data").Cells.Find(What:="*", After:=Range("A1"), LookAt:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row
''Format B(EMPID) to number
'
' With ThisWorkbook.Worksheets("Data").Range("B:B")
' .NumberFormat = "General"
' .Value = .Value
' End With
'
''Format D(E/D-CODE) to number
'
' With ThisWorkbook.Worksheets("Data").Range("D:D")
' .NumberFormat = "General"
' .Value = .Value
' End With
' data size has less then 200 rows
With ThisWorkbook.Worksheets("Data").Cells(1).CurrentRegion
' With .Columns(2)
' .NumberFormat = "General"
' .Value = .Value
' End With
With .Columns(4)
.NumberFormat = "General"
.Value = .Value
End With
With .Columns(5)
.NumberFormat = "General"
.Value = .Value
End With
End With
'Vlookup data
ThisWorkbook.Worksheets("Data").Range("AD2") = EmployeeMasterCOMPID
ThisWorkbook.Worksheets("Data").Range("R2") = "=CONCATENATE(TRIM(AD2),TEXT(B2,""00000000""))" 'EmpID & COMPID
ThisWorkbook.Worksheets("Data").Range("S2") = "=IFERROR(INDEX(Employees!$A$2:$V$" & LastRowEmployees & ",MATCH(Data!R2,Employees!$V$2:$V$" & LastRowEmployees & ",0),3)," & Chr(34) & Chr(34) & ")" 'EmpID
ThisWorkbook.Worksheets("Data").Range("T2") = "=IFERROR(INDEX(Employees!$A$2:$V$" & LastRowEmployees & ",MATCH(Data!R2,Employees!$V$2:$V$" & LastRowEmployees & ",0),8)," & Chr(34) & Chr(34) & ")" 'TermDate
ThisWorkbook.Worksheets("Data").Range("U2") = "=IFERROR(INDEX(Employees!$A$2:$V$" & LastRowEmployees & ",MATCH(Data!R2,Employees!$V$2:$V$" & LastRowEmployees & ",0),20)," & Chr(34) & Chr(34) & ")" 'PG
ThisWorkbook.Worksheets("Data").Range("V2") = "=IFERROR(INDEX(Employees!$A$2:$V$" & LastRowEmployees & ",MATCH(Data!R2,Employees!$V$2:$V$" & LastRowEmployees & ",0),5)," & Chr(34) & Chr(34) & ")" 'FirstName
ThisWorkbook.Worksheets("Data").Range("W2") = "=IFERROR(INDEX(Employees!$A$2:$V$" & LastRowEmployees & ",MATCH(Data!R2,Employees!$V$2:$V$" & LastRowEmployees & ",0),4)," & Chr(34) & Chr(34) & ")" 'LastName
ThisWorkbook.Worksheets("Data").Range("Z2") = "=IFERROR(INDEX(Employees!$A$2:$V$" & LastRowEmployees & ",MATCH(Data!R2,Employees!$V$2:$V$" & LastRowEmployees & ",0),7)," & Chr(34) & Chr(34) & ")" 'SubPay/OTExempt
ThisWorkbook.Worksheets("Data").Range("AB2") = "=IFERROR(INDEX(Employees!$A$2:$V$" & LastRowEmployees & ",MATCH(Data!R2,Employees!$V$2:$V$" & LastRowEmployees & ",0),6)," & Chr(34) & Chr(34) & ")" 'SalaryType
ThisWorkbook.Worksheets("Data").Range("X2") = "=N2=W2" 'Check LastName = LastName in master employee"
ThisWorkbook.Worksheets("Data").Range("AE2") = "=O2=V2" 'Check FirstName = FirstName in master employee"
'ThisWorkbook.Worksheets("Data").Range("V2") = "=CONCATENATE(TRIM(O2),TRIM(N2))"
ThisWorkbook.Worksheets("Data").Range("Y2") = "=TEXT(H2,""0"")=U2" 'Check PG = PG in master employee"
ThisWorkbook.Worksheets("Data").Range("AC2") = "=IF(F2=" & Chr(34) & Chr(34) & ",FALSE,TRUE)" 'Check PG = PG in master employee"
ThisWorkbook.Worksheets("Data").Range("R2:AE2").Copy ThisWorkbook.Worksheets("Data").Range("R3:AE" & LastRow)
Application.CutCopyMode = False
'If it’s a time file, column G (check ID) is not correct. Currently it’s taking the line item from the time clock system. It should always be #1
If ThisWorkbook.Worksheets("Ctrl").OptionButton1.Value = True Then
ThisWorkbook.Worksheets("Data").Range("G2") = 1
ThisWorkbook.Worksheets("Data").Range("G2:G2").Copy ThisWorkbook.Worksheets("Data").Range("G3:G" & LastRow)
Application.CutCopyMode = False
End If
For i = 2 To LastRow
'Check if empid is existing
If ThisWorkbook.Worksheets("Data").Range("S" & i) = "" Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") doesn't exist in ProBusiness"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'Check if emp is terminated
If ThisWorkbook.Worksheets("Data").Range("T" & i) <> 0 And ThisWorkbook.Worksheets("Data").Range("T" & i) <> "" Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") is terminated"
wb.Worksheets("Result").Range("A" & 1 + f) = "N"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'check if empid is only numeric
If IsNumeric(ThisWorkbook.Worksheets("Data").Range("B" & i)) = False Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") doesn't only contain Numbers"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'Check if Commission file has H in AMT Type (Error if the typ is not "$") -- or Time file has $ in AMT Type (Error if the typ is not "H") -- skip for Edwards
If ThisWorkbook.Worksheets("Data").Range("F" & i) = Typ And ThisWorkbook.Worksheets("Ctrl").OptionButton6.Value = False Then
f = f + 1
If ThisWorkbook.Worksheets("Ctrl").OptionButton1.Value = True Then
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has $ as value in AMT Type"
ElseIf ThisWorkbook.Worksheets("Ctrl").OptionButton2.Value = True Then
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has H as value in AMT Type"
End If
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'check if COMPID is blank
If CompIdOnFile = "Yes" Then
If CStr(ThisWorkbook.Worksheets("Data").Range("A" & i)) = "" Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has blank COMPID"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
End If
'check if PRO ID is blank
If CStr(ThisWorkbook.Worksheets("Data").Range("B" & i)) = "" Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has blank PRO ID"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'check if PAYGROUP is blank in column H, lookup the PG and in the employee master file and add it in the column so that it will be uploaded to the teams file
If UCase(ThisWorkbook.Worksheets("Data").Range("Y" & i)) = "FALSE" Then
wb.Worksheets("Data").Range("H" & i) = wb.Worksheets("Data").Range("U" & i).Value
End If
ThisWorkbook.Worksheets("Data").Range("AA" & i) = Trim(ThisWorkbook.Worksheets("Data").Range("H" & i).Value) & Trim(ThisWorkbook.Worksheets("Data").Range("B" & i).Value)
''check if Salary Type is blank in column F, lookup the Salary type in the employee master file and add it in the column so that it will be uploaded to the teams file
'
'If UCase(ThisWorkbook.Worksheets("Data").Range("AC" & i)) = "FALSE" Then
' wb.Worksheets("Data").Range("F" & i) = wb.Worksheets("Data").Range("AB" & i).Value
'
'End If
' check if S type is other than 135, 140, or 130
If (ThisWorkbook.Worksheets("Data").Range("F" & i) = "S" And CStr(ThisWorkbook.Worksheets("Data").Range("D" & i)) <> "135" And CStr(ThisWorkbook.Worksheets("Data").Range("D" & i)) <> "140" And ThisWorkbook.Worksheets("Data").Range("D" & i) <> "130") Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has a non valid code " & ThisWorkbook.Worksheets("Data").Range("D" & i)
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
' code 380, or 381 give an error message that says: "Please send severance agreement to payroll and remove these entries from upload file"
If CStr(ThisWorkbook.Worksheets("Data").Range("D" & i)) = "380" Or ThisWorkbook.Worksheets("Data").Range("D" & i) = 380 Or CStr(ThisWorkbook.Worksheets("Data").Range("D" & i)) = "381" Or ThisWorkbook.Worksheets("Data").Range("D" & i) = 381 Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has code 380/381. Please send severance agreement to payroll and remove these entries from upload file"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'check if either commission button or adjustment button is checked
If ThisWorkbook.Worksheets("Ctrl").OptionButton2.Value = True Or ThisWorkbook.Worksheets("Ctrl").OptionButton6.Value = True Then
'If it’s a commission file, the macro should check if EMP ID matches Last Name. If it doesn’t it should be a hard error
'If LastFirstNameCheck = "Yes" Then
'Check LastName
If ThisWorkbook.Worksheets("Ctrl").OptionButton2.Value = True And UCase(ThisWorkbook.Worksheets("Data").Range("X" & i).Value) = "FALSE" And ThisWorkbook.Worksheets("Data").Range("S" & i) <> "" Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") and code: " & ThisWorkbook.Worksheets("Data").Range("D" & i) & " doesn't match Last Name:" & ThisWorkbook.Worksheets("Data").Range("W" & i)
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'Check FirstName
If ThisWorkbook.Worksheets("Ctrl").OptionButton2.Value = True And UCase(ThisWorkbook.Worksheets("Data").Range("AE" & i).Value) = "FALSE" And ThisWorkbook.Worksheets("Data").Range("S" & i) <> "" Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") and code: " & ThisWorkbook.Worksheets("Data").Range("D" & i) & " doesn't match First Name:" & ThisWorkbook.Worksheets("Data").Range("V" & i)
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'End If
'check if the commission amount is below 0 for a term employee, error "EmployeeID has commission amount below 0 for a term employee. Please remove these entries from upload file"
If (ThisWorkbook.Worksheets("Data").Range("T" & i) <> 0 And ThisWorkbook.Worksheets("Data").Range("T" & i) <> "") And (ThisWorkbook.Worksheets("Data").Range("E" & i) < 0 And CStr(ThisWorkbook.Worksheets("Data").Range("E" & i)) <> "") Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has Commission amount below 0 for a term employee. Please remove these entries from upload file"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'check if amount under 0, Check# should be 1 (error if it is not 1)
If (ThisWorkbook.Worksheets("Data").Range("E" & i) <= 0 And CStr(ThisWorkbook.Worksheets("Data").Range("E" & i)) <> "") And ThisWorkbook.Worksheets("Data").Range("G" & i) <> 1 And ThisWorkbook.Worksheets("Ctrl").OptionButton2.Value = True Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has Amount less than 0 and check# is not 1"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'check if amount above 0, Check# should not be 1 (error if it is 1)
If (ThisWorkbook.Worksheets("Data").Range("E" & i) > 0 And CStr(ThisWorkbook.Worksheets("Data").Range("E" & i)) <> "") And ThisWorkbook.Worksheets("Data").Range("G" & i) = 1 And ThisWorkbook.Worksheets("Ctrl").OptionButton2.Value = True Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has Amount above than 0 and check# is 1"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
'check if amount commission is blank
If CStr(ThisWorkbook.Worksheets("Data").Range("E" & i)) = "" Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has blank Amount"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
' Error if the code is not 300
If (CStr(ThisWorkbook.Worksheets("Data").Range("D" & i)) <> "300" Or ThisWorkbook.Worksheets("Data").Range("D" & i) <> 300) And ThisWorkbook.Worksheets("Ctrl").OptionButton2.Value = True Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has code not 300"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
' Error if the typ is not "$" -- rule for commission file (not for adjustment file)
If CStr(ThisWorkbook.Worksheets("Data").Range("F" & i)) <> "$" And ThisWorkbook.Worksheets("Ctrl").OptionButton2.Value = True Then
f = f + 1
wb.Worksheets("Result").Range("B" & 1 + f) = "EmpID " & ThisWorkbook.Worksheets("Data").Range("B" & i) & "(" & ThisWorkbook.Worksheets("Data").Range("O" & i) & " " & ThisWorkbook.Worksheets("Data").Range("N" & i) & ") has H as value in AMT Type"
wb.Worksheets("Result").Range("A" & 1 + f) = "Y"
wb.Worksheets("Result").Range("G" & 1 + f) = ThisWorkbook.Worksheets("Data").Range("B" & i)
End If
End If
Next i
…
|
|||
vbaProject_00.bin |
vba-project | OOXML VBA project: xl/vbaProject.bin | 394752 bytes |
SHA-256: 1c3700d41e83b316148efe2e7f446a8ca2b65963013b1095ebfd9bd8668d64bb |
|||
emf_00.emf |
ooxml-emf | OOXML EMF part: xl/media/image2.emf | 3116 bytes |
SHA-256: a7b6bd176b3d362446c21fea4fdd6f29be3ad87b5be7fa103a065a882aae34e6 |
|||
emf_01.emf |
ooxml-emf | OOXML EMF part: xl/media/image11.emf | 3116 bytes |
SHA-256: f019f8094a6d8690f6faa4b131d3346a98095da27e66b12f911afef070ee8f6c |
|||
emf_02.emf |
ooxml-emf | OOXML EMF part: xl/media/image9.emf | 3116 bytes |
SHA-256: 81b43f0b9027d18fa35576e9912ff5fafb98ede65447b228877dc7ac87919b01 |
|||
emf_03.emf |
ooxml-emf | OOXML EMF part: xl/media/image3.emf | 2980 bytes |
SHA-256: 862b83017dbe75cd7ec4a83b9451f66eb584a785f186d4030194219477c78879 |
|||
emf_04.emf |
ooxml-emf | OOXML EMF part: xl/media/image6.emf | 3068 bytes |
SHA-256: 6f5d862edcbd9fa42c011a314817731a2120496b38506d6fde645aafd6b80a3f |
|||
emf_05.emf |
ooxml-emf | OOXML EMF part: xl/media/image8.emf | 3116 bytes |
SHA-256: 7ba9f1014c1fe939bf07f52b57dda8807256fb16848853adf1b378e365b72e28 |
|||
emf_06.emf |
ooxml-emf | OOXML EMF part: xl/media/image4.emf | 3032 bytes |
SHA-256: bc1985b2692365d856437813d1b93d81d9c5467944a37758f1cf48b2c2f88d1b |
|||
emf_07.emf |
ooxml-emf | OOXML EMF part: xl/media/image10.emf | 3116 bytes |
SHA-256: 3c512d5b8259e1f6cb0e39412b6fca875f32eb716b261f40f541def33fdfc860 |
|||
emf_08.emf |
ooxml-emf | OOXML EMF part: xl/media/image1.emf | 3148 bytes |
SHA-256: 7b85ef09d1c4e8868ac28271dede9961b53b0640974e62519c90d00ff330a491 |
|||
emf_09.emf |
ooxml-emf | OOXML EMF part: xl/media/image7.emf | 3116 bytes |
SHA-256: 010f9603a7e2d27afbff35f44a66a47762cb4e3b37a327055e350c3c985da60d |
|||
emf_10.emf |
ooxml-emf | OOXML EMF part: xl/media/image5.emf | 3172 bytes |
SHA-256: 7846c78148ec7ce1a42f52bd5840625d99cf9c4940c3284ed3aaad4679a0ae42 |
|||
emf_11.emf |
ooxml-emf | OOXML EMF part: xl/media/image12.emf | 3116 bytes |
SHA-256: bc520b5738232e0b9e5d04fc270936afd777c8984284bc296f4bfada77737ad0 |
|||
emf_12.emf |
ooxml-emf | OOXML EMF part: xl/media/image13.emf | 3172 bytes |
SHA-256: 04e109bc2b63c5ab715e3543f91698c1513efb19c801f3253bccc53dc241b1f4 |
|||
Open this report in the interactive analyzer, or submit your own file for analysis.