Loading Joe Sandbox Report ...

Edit tour

Windows Analysis Report
samradapps_datepicker_221114.xlam

Overview

General Information

Sample name:samradapps_datepicker_221114.xlam
Analysis ID:1430908
MD5:9a3a270b12e8549a99df3577010ef12b
SHA1:a639b29041bd72091b0df31da8bb4a660b0c2cd2
SHA256:66bdc42fa9dff673e23701b27b401171559d1b3acf8e0e4f67404464e8848a84

Detection

Score:56
Range:0 - 100
Whitelisted:false
Confidence:100%

Signatures

Document contains an embedded VBA macro which may check the desktop resolution (possible anti-VM)
Document contains an embedded VBA macro which may execute shellcode
Document contains an embedded VBA macro with suspicious strings
Document contains an embedded VBA with functions possibly related to ADO stream file operations
Document contains an embedded VBA macro which executes code when the document is opened / closed

Classification

  • System is w7x64
  • EXCEL.EXE (PID: 1980 cmdline: "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE" /dde MD5: D53B85E21886D2AF9815C377537BCAC3)
  • cleanup
No configs have been found
No yara matches
No Sigma rule has matched
No Snort rule has matched

Click to jump to signature section

Show All Signature Results
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEFile opened: C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4940_none_08e4299fa83d7e3c\MSVCR90.dllJump to behavior

System Summary

barindex
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: Private Declare PtrSafe Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: Private Declare Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: g_screenHeight = GetSystemMetrics32(SM_CYMAXIMIZED)
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: g_screenWidth = GetSystemMetrics32(SM_CXMAXIMIZED)
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: Private Declare PtrSafe Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As LongPtr, ByVal hwnd As LongPtr, ByVal Msg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: pathToIcon = Environ("temp") & "\samrad3.bmp"
Source: samradapps_datepicker_221114.xlamStream path 'VBA/dp_core' : found possibly 'ADODB.Stream' functions mode, position, read
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: Private Sub Workbook_Open()
Source: classification engineClassification label: mal56.expl.evad.winXLAM@1/7@0/0
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEFile created: C:\Users\user\Desktop\~$samradapps_datepicker_221114.xlamJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEFile created: C:\Users\user\AppData\Local\Temp\CVR6C0B.tmpJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEFile read: C:\Users\desktop.iniJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEKey value queried: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{C62A69F0-16DC-11CE-9E98-00AA00574A4F}\InprocServer32Jump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEWindow found: window name: SysTabControl32Jump to behavior
Source: Window RecorderWindow detected: More than 3 window changes detected
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEKey opened: HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Resiliency\StartupItemsJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEFile opened: C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4940_none_08e4299fa83d7e3c\MSVCR90.dllJump to behavior

Hooking and other Techniques for Hiding and Protection

barindex
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: Private Declare PtrSafe Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: Private Declare Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: g_screenHeight = GetSystemMetrics32(SM_CYMAXIMIZED)
Source: samradapps_datepicker_221114.xlamOLE, VBA macro line: g_screenWidth = GetSystemMetrics32(SM_CXMAXIMIZED)
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
Source: C:\Program Files\Microsoft Office\Office14\EXCEL.EXEProcess information set: NOOPENFILEERRORBOXJump to behavior
ReconnaissanceResource DevelopmentInitial AccessExecutionPersistencePrivilege EscalationDefense EvasionCredential AccessDiscoveryLateral MovementCollectionCommand and ControlExfiltrationImpact
Gather Victim Identity Information41
Scripting
Valid Accounts1
Command and Scripting Interpreter
41
Scripting
Path Interception1
Masquerading
OS Credential Dumping1
Security Software Discovery
Remote ServicesData from Local SystemData ObfuscationExfiltration Over Other Network MediumAbuse Accessibility Features
CredentialsDomainsDefault AccountsScheduled Task/JobBoot or Logon Initialization ScriptsBoot or Logon Initialization ScriptsRootkitLSASS Memory1
File and Directory Discovery
Remote Desktop ProtocolData from Removable MediaJunk DataExfiltration Over BluetoothNetwork Denial of Service
Email AddressesDNS ServerDomain AccountsAtLogon Script (Windows)Logon Script (Windows)Obfuscated Files or InformationSecurity Account Manager1
System Information Discovery
SMB/Windows Admin SharesData from Network Shared DriveSteganographyAutomated ExfiltrationData Encrypted for Impact
Hide Legend

Legend:

  • Process
  • Signature
  • Created File
  • DNS/IP Info
  • Is Dropped
  • Is Windows Process
  • Number of created Registry Values
  • Number of created Files
  • Visual Basic
  • Delphi
  • Java
  • .Net C# or VB.NET
  • C, C++ or other language
  • Is malicious
  • Internet

This section contains all screenshots as thumbnails, including those not shown in the slideshow.


windows-stand
SourceDetectionScannerLabelLink
samradapps_datepicker_221114.xlam0%ReversingLabs
samradapps_datepicker_221114.xlam0%VirustotalBrowse
No Antivirus matches
No Antivirus matches
No Antivirus matches
No Antivirus matches
No contacted domains info
No contacted IP infos
Joe Sandbox version:40.0.0 Tourmaline
Analysis ID:1430908
Start date and time:2024-04-24 10:57:14 +02:00
Joe Sandbox product:CloudBasic
Overall analysis duration:0h 4m 2s
Hypervisor based Inspection enabled:false
Report type:full
Cookbook file name:defaultwindowsofficecookbook.jbs
Analysis system description:Windows 7 x64 SP1 with Office 2010 SP1 (IE 11, FF52, Chrome 57, Adobe Reader DC 15, Flash 25.0.0.127, Java 8 Update 121, .NET 4.6.2)
Number of analysed new started processes analysed:3
Number of new started drivers analysed:0
Number of existing processes analysed:0
Number of existing drivers analysed:0
Number of injected processes analysed:0
Technologies:
  • HCA enabled
  • EGA enabled
  • AMSI enabled
Analysis Mode:default
Analysis stop reason:Timeout
Sample name:samradapps_datepicker_221114.xlam
Detection:MAL
Classification:mal56.expl.evad.winXLAM@1/7@0/0
EGA Information:Failed
HCA Information:
  • Successful, ratio: 100%
  • Number of executed functions: 0
  • Number of non-executed functions: 0
Cookbook Comments:
  • Found application associated with file extension: .xlam
  • Close Viewer
  • Exclude process from analysis (whitelisted): dllhost.exe, WMIADAP.exe
  • Report size getting too big, too many NtQueryValueKey calls found.
  • Report size getting too big, too many NtSetInformationFile calls found.
No simulations
No context
No context
No context
No context
No context
Process:C:\Program Files\Microsoft Office\Office14\EXCEL.EXE
File Type:data
Category:dropped
Size (bytes):147284
Entropy (8bit):4.421539330315812
Encrypted:false
SSDEEP:1536:C8XL3FNSc8SetKB96vQVCBumVMOej6mXmYarrJQcd1FaLcmB:CsJNSc83tKBAvQVCgOtmXmLpLmB
MD5:37BAB984A277E953DE1F115C5CF32DCA
SHA1:16413DE72C233BAB57B1C47DB1514465803F9666
SHA-256:EE2BF52F68E9CA60935D90172CD59A5710D8B88A04986F75C70997A34E83D6F7
SHA-512:BFCC5C097A9F59067704C480BD0DE03FB71F4EA64A281F5CC2574B957EC16D18C5C615C762FE64ADB56A781A7D91E2F22A3A6F67E31A62BF676EE2B75A1FEE2E
Malicious:false
Reputation:low
Preview:MSFT................Q................................#......$....... ...................d.......,...........X....... ...........L...........x.......@...........l.......4...........`.......(...........T...................H...........t.......<...........h.......0...........\.......$...........P...........|.......D...........p.......8...........d.......,...........X....... ...........L...........x.......@........ ..l ... ..4!...!...!..`"..."..(#...#...#..T$...$...%...%...%..H&...&...'..t'...'..<(...(...)..h)...)..0*...*...*..\+...+..$,...,...,..P-...-......|.......D/.../...0..p0...0..81...1...2..d2...2..,3...3...3..X4...4.. 5...5...5..L6...6...7..x7...7..@8.......8...........N..............\W...............J..............,<...............<..............xW..............xY..xG.............T...........D...............................T...............................................................&!..d...........................................................................................
Process:C:\Program Files\Microsoft Office\Office14\EXCEL.EXE
File Type:PC bitmap, Windows 3.x format, 16 x 16 x 24, image size 770, resolution 2834 x 2834 px/m, cbSize 824, bits offset 54
Category:dropped
Size (bytes):824
Entropy (8bit):2.7940329720325057
Encrypted:false
SSDEEP:12:Kf2Cl33333333333333GJwv73XJW33333333333333O:K+CdR
MD5:8311B1A70DD383E091F3B6858C562D27
SHA1:6655A7D90D83515D9CE075A1E876AC9807264891
SHA-256:394612941273ED5AE00E051BAC56F887331F3072504D7E354FC85F7FE72E200D
SHA-512:1B366316433A05FE4B9F3A09A0EF3E0E02BE3AC1F53407AC0EB7D43ABBC2DFCCA1B7F6CE76DFA41A9582CC29E4AD5FEAFB468D222EE6AE07F896406F86D6A49A
Malicious:false
Reputation:low
Preview:BM8.......6...(.......................................YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY..........................................YYYYYY.........YYYYYYYYY............YYY.........YYYYYY............YYY...............YYY.........YYYYYY............YYY...............YYY.........YYYYYY............YYY......YYYYYYYYYYYY.........YYYYYY............YYY......YYY......YYY.........YYYYYY.........YYYYYY......YYY......YYY.........YYYYYY............YYY......YYY......YYY.........YYYYYY..........................................YYY...................................................2U.2U.2U.2U.2U.2U.2U.2U.2U.2U.2U.2U.2U.2U.......2U....2U....2U....2U.2U.2U.2U.2U.2U.2U.2U.......2U....2U....2U....2U.2U.2U.2U.2U.2U.2U.2U.......2U.2U.2U.2U.2U.2U.2U.2U.2U.2U.2U.2U.2U.2U......................................................
Process:C:\Program Files\Microsoft Office\Office14\EXCEL.EXE
File Type:data
Category:dropped
Size (bytes):344064
Entropy (8bit):0.0
Encrypted:false
SSDEEP:3::
MD5:E265B60A4AF7915C7064C2B7AEC8E1D2
SHA1:5F2F9AB2D2C5B3FA09D05CB71A936FAA64630BB6
SHA-256:0CC5F11E4D6807ACFFD5F9167D709D2BF1E91700460CDC33161486CE3CCC22D9
SHA-512:30EECE5519E9B53D40AB66318367E94F3AC669184B6BC6084EF684014224AAB17EF5ED41542F020DE879C4EBD36E5DBC34DCC2F864C168FB4D6217BD94D55A61
Malicious:false
Reputation:low
Preview:........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Process:C:\Program Files\Microsoft Office\Office14\EXCEL.EXE
File Type:data
Category:dropped
Size (bytes):16384
Entropy (8bit):0.0
Encrypted:false
SSDEEP:3::
MD5:CE338FE6899778AACFC28414F2D9498B
SHA1:897256B6709E1A4DA9DABA92B6BDE39CCFCCD8C1
SHA-256:4FE7B59AF6DE3B665B67788CC2F99892AB827EFAE3A467342B3BB4E3BC8E5BFE
SHA-512:6EB7F16CF7AFCABE9BDEA88BDAB0469A7937EB715ADA9DFD8F428D9D38D86133945F5F2F2688DDD96062223A39B5D47F07AFC3C48D9DB1D5EE3F41C8D274DCCF
Malicious:false
Reputation:high, very likely benign file
Preview:........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Process:C:\Program Files\Microsoft Office\Office14\EXCEL.EXE
File Type:data
Category:dropped
Size (bytes):512
Entropy (8bit):0.0
Encrypted:false
SSDEEP:3::
MD5:BF619EAC0CDF3F68D496EA9344137E8B
SHA1:5C3EB80066420002BC3DCC7CA4AB6EFAD7ED4AE5
SHA-256:076A27C79E5ACE2A3D47F9DD2E83E4FF6EA8872B3C2218F66C92B89B55F36560
SHA-512:DF40D4A774E0B453A5B87C00D6F0EF5D753143454E88EE5F7B607134598294C7905CCBCF94BBC46E474DB6EB44E56A6DBB6D9A1BE9D4FB5D1B5F2D0C6ED34BFE
Malicious:false
Reputation:high, very likely benign file
Preview:................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Process:C:\Program Files\Microsoft Office\Office14\EXCEL.EXE
File Type:data
Category:dropped
Size (bytes):512
Entropy (8bit):0.0
Encrypted:false
SSDEEP:3::
MD5:BF619EAC0CDF3F68D496EA9344137E8B
SHA1:5C3EB80066420002BC3DCC7CA4AB6EFAD7ED4AE5
SHA-256:076A27C79E5ACE2A3D47F9DD2E83E4FF6EA8872B3C2218F66C92B89B55F36560
SHA-512:DF40D4A774E0B453A5B87C00D6F0EF5D753143454E88EE5F7B607134598294C7905CCBCF94BBC46E474DB6EB44E56A6DBB6D9A1BE9D4FB5D1B5F2D0C6ED34BFE
Malicious:false
Reputation:high, very likely benign file
Preview:................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Process:C:\Program Files\Microsoft Office\Office14\EXCEL.EXE
File Type:data
Category:dropped
Size (bytes):165
Entropy (8bit):1.4377382811115937
Encrypted:false
SSDEEP:3:vZ/FFDJw2fV:vBFFGS
MD5:797869BB881CFBCDAC2064F92B26E46F
SHA1:61C1B8FBF505956A77E9A79CE74EF5E281B01F4B
SHA-256:D4E4008DD7DFB936F22D9EF3CC569C6F88804715EAB8101045BA1CD0B081F185
SHA-512:1B8350E1500F969107754045EB84EA9F72B53498B1DC05911D6C7E771316C632EA750FBCE8AD3A82D664E3C65CC5251D0E4A21F750911AE5DC2FC3653E49F58D
Malicious:false
Preview:.user ..A.l.b.u.s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
File type:Microsoft Excel 2007+
Entropy (8bit):7.635864263284178
TrID:
  • Excel Microsoft Office Open XML Format document with Macro (52504/1) 52.24%
  • Excel Microsoft Office Open XML Format document (40004/1) 39.80%
  • ZIP compressed archive (8000/1) 7.96%
File name:samradapps_datepicker_221114.xlam
File size:135'418 bytes
MD5:9a3a270b12e8549a99df3577010ef12b
SHA1:a639b29041bd72091b0df31da8bb4a660b0c2cd2
SHA256:66bdc42fa9dff673e23701b27b401171559d1b3acf8e0e4f67404464e8848a84
SHA512:b06b73acf270684c9423f319ff4748dfca53d262a16b676e7705638ce5cab11f7f80af0d2ac9362ffeda916e40b5a9a283fe0c6a756c1fa468c1bbb001adf630
SSDEEP:3072:dFAhbR1mxqrxsFDBUO1goARJ3uA/dEmqXe8AJfKKz:dF41mw+eRJ3n/umqXenfKKz
TLSH:A4D30231BC0AF829D51891B9F40504857D049BCB891AFDB736CEB58A0F027EF4D69BE9
File Content Preview:PK..........!.gz#.............[Content_Types].xml ...(.........................................................................................................................................................................................................
Icon Hash:e4b37949677fff4b
Document Type:OpenXML
Number of OLE Files:1
Has Summary Info:
Application Name:
Encrypted Document:False
Contains Word Document Stream:False
Contains Workbook/Book Stream:False
Contains PowerPoint Document Stream:False
Contains Visio Document Stream:False
Contains ObjectPool Stream:False
Flash Objects Count:0
Contains VBA Macros:True
Author:dell
Last Saved By:Rad Sheets
Create Time:2009-10-23T16:03:25Z
Last Saved Time:2022-11-14T22:55:16Z
Creating Application:Microsoft Excel
Security:0
Thumbnail Scaling Desired:false
Contains Dirty Links:false
Shared Document:false
Changed Hyperlinks:false
Application Version:16.0300
General
Stream Path:VBA/DatePickerManager
VBA File Name:DatePickerManager
Stream Size:12111
Data ASCII:. . . . . . . . . . . . . . . . . . . . . . . . ' . . . . . . . . . . . 8 . . . . . . . . . . . . . . . . . . . . H . . . . . o L . s P ! . * = h . 8 . . + 3 q . . . . . . . . . . . . . . . . . . . . . [ M . D P . . . . . . . . . . . . . . . . . . . . . . . x . . . . . [ M . D P . . . o L . s P ! . . . . . M E . . . . . . . . . . . . . . . . . . . . . 8 . . . . . . . . . . . . . . S . . . . . S . . . . . S . . . . ` F . . . . . 8 . 8 . . . . . 0 . . . . . 0 . . . . . . > " . . . . . . . . . . L . . . . . P
Data Raw:01 16 01 00 06 00 01 00 00 9c 15 00 00 e4 00 00 00 88 02 00 00 a8 16 00 00 c2 16 00 00 ce 27 00 00 05 00 00 00 01 00 00 00 db f2 07 38 00 00 ff ff 03 00 00 00 80 00 00 00 b6 00 ff ff 01 01 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 48 00 ff ff 00 00 c4 80 f3 04 6f d8 c7 4c b4 d5 8f 73 af 50 21 00 2a 3d fb fc fa a0 68 10 a7 38 08 00 2b 33 71 b5 00 00 00 00 00 00 00 00 00 00 00 00 00
Attribute VB_Name = "DatePickerManager"
Attribute VB_Base = "0{FCFB3D2A-A0FA-1068-A738-08002B3371B5}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False
Option Explicit

'hooks into Excel objects
Private WithEvents c1App As Application
Attribute c1App.VB_VarHelpID = -1

'local vars
Private m_PickerVisible As Boolean

'**************************************************************
'CLASS EVENTS
'**************************************************************

'INIT
Private Sub Class_Initialize()
    On Error Resume Next

    'get the application object
    Set c1App = Application
    
    'set the defaults
    m_PickerVisible = False
    
    On Error GoTo 0
End Sub

'TERMINATE
Private Sub Class_Terminate()
    clearAllUI
End Sub

'**************************************************************
'PROPERTIES
'**************************************************************

'Date Picker Visible Tracking
Public Property Get PickerVisible() As Variant
    PickerVisible = m_PickerVisible
End Property
Public Property Let PickerVisible(ByVal vNewValue As Variant)
    m_PickerVisible = vNewValue
End Property

'**************************************************************
'SHARED UPDATES
'**************************************************************

'sheet changed
Private Sub DoSheetChange()
    clearAllUI
    processSelectionChange
End Sub

'workbook changed
Private Sub DoWorkbookChange()
    DoSheetChange
End Sub

'clear all UI
Private Sub clearAllUI()
    closeDatePicker
    killGridDP
End Sub

'process the cell changing
Private Sub processSelectionChange()
    'clear the ui
    clearAllUI
    
    'see if we should show the DP icon
    If checkForGridDP Then
        'show the date picker
        createGridDP
    End If
End Sub

'called to see if we should show the dp entry point in the grid
Private Function checkForGridDP() As Boolean
    On Error GoTo check_err
    
    'ref to cell above
    Dim cellAbove As Range
    
    'default to false
    checkForGridDP = False
    
    'be sure the flag is enabled
    If (fShowDPInGrid) Then
        'check to see if active cell is a range
        If TypeName(ActiveCell) = "Range" Then
            'check the current cell's value
            If VBA.IsDate(ActiveCell) Or ActiveCell.NumberFormat Like "*[Dd]*" Then
                'show the shape dp
                checkForGridDP = True
            Else
                'exit out if its populated but not a date
                If ActiveCell <> "" Then Exit Function
                
                'make sure we aren't in the top row
                If ActiveCell.Row <> 1 Then
                    'get the cell above
                    Set cellAbove = ActiveCell.Offset(-1, 0)
                    
                    'check to see if the cell above has the word date in it, or if its a date
                    If InStr(1, cellAbove, "date", vbTextCompare) > 0 Or VBA.IsDate(cellAbove) Then
                        'show the shape dp
                        checkForGridDP = True
                    End If
                End If
            End If
        End If
    End If
    
check_err:
End Function

'**************************************************************
'APP EVENTS
'**************************************************************

Private Sub c1App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    DoSheetChange
End Sub

'App New workbook created
Private Sub c1App_NewWorkbook(ByVal Wb As Workbook)
    DoWorkbookChange
End Sub

'App before print
Private Sub c1App_WorkbookBeforePrint(ByVal Wb As Workbook, Cancel As Boolean)
    clearAllUI
End Sub

'App before save
Private Sub c1App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
    clearAllUI
End Sub

'App window resize
Private Sub c1App_WindowResize(ByVal Wb As Workbook, ByVal Wn As Window)
    closeDatePicker
End Sub

'App sheet activated
Private Sub c1App_SheetActivate(ByVal Sh As Object)
    DoSheetChange
End Sub

'App workbook activated
Private Sub c1App_WorkbookActivate(ByVal Wb As Workbook)
    DoWorkbookChange
End Sub

General
Stream Path:VBA/Module1
VBA File Name:Module1
Stream Size:1362
Data ASCII:. . . . . . . . . . . . . . . . . . . . j . . . . . . . . . . . _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M E . . . . . . . . . . . . . . . . . . . . . . . ( . . . . . 6 . . . . . . < . . . . . . . < . . . . . . . < . . . . . . . . . . . . . . . . . . . 8 . . . . . . .
Data Raw:01 16 01 00 03 f0 00 00 00 bc 02 00 00 d4 00 00 00 b0 01 00 00 ff ff ff ff ea 02 00 00 6a 04 00 00 00 00 00 00 01 00 00 00 db f2 5f 0d 00 00 ff ff 03 00 00 00 00 00 00 00 b6 00 ff ff 01 01 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 04 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Attribute VB_Name = "Module1"
Sub Macro1()
Attribute Macro1.VB_ProcData.VB_Invoke_Func = " \n14"
'
' Macro1 Macro
'

'
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.Unprotect
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Range("E8").Select
End Sub

General
Stream Path:VBA/Sheet1
VBA File Name:Sheet1
Stream Size:1150
Data ASCII:. . . . . . . . . < . . . . . . . . . . j . . . x . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . < . . . . g b c z J \\ Z . . . . . . . . . . . . . F . . . . . . . . . . . . . . . . . . . . _ . B ] h L } ( p . . . . . . . . . . . . . . . . . . . . . . x . . . . _ . B ] h L } ( p . g b c z J \\ Z . . . . M E . . . . . . . . . . . . . . . . . . . . . ( . . . . . S L . . . . S . . . . . S . . . . 6 " . . . . . . . . . . N . 0 . { . 0 . 0 . 0 . 2 . 0 . 8 . 2 . 0 . - . 0 . 0 . 0 . 0 . - .
Data Raw:01 16 01 00 06 00 01 00 00 3c 03 00 00 e4 00 00 00 10 02 00 00 6a 03 00 00 78 03 00 00 cc 03 00 00 00 00 00 00 01 00 00 00 db f2 df 0b 00 00 ff ff 23 00 00 00 88 00 00 00 b6 00 ff ff 01 01 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 3c 00 ff ff 00 00 c6 9e 67 62 63 f2 7a 4a 96 5c 8b af de 5a bc a5 20 08 02 00 00 00 00 00 c0 00 00 00 00 00 00 46 00 00 00 00 00 00 00 00 00 00 00 00 00
Attribute VB_Name = "Sheet1"
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

General
Stream Path:VBA/Sheet2
VBA File Name:Sheet2
Stream Size:1158
Data ASCII:. . . . . . . . . D . . . . . . . . . . r . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . < . . . . . z A g Q . 8 . . . . . . . . . . . . . . F . . . . . . . . . . . . . . . . . . . . E Z . v D . W f . . . . . . . . . . . . . . . . . . . . . . . x . . . . E Z . v D . W f . . . z A g Q . 8 . . . . . M E . . . . . . . . . . . . . . . . . . . . . ( . . . . . S L . . . . S . . . . . S . . . . 6 " . . . . . . . . . . N . 0 . { . 0 . 0 . 0 . 2 . 0 . 8 . 2 . 0 . - . 0 . 0 . 0 . 0
Data Raw:01 16 01 00 06 00 01 00 00 44 03 00 00 e4 00 00 00 10 02 00 00 72 03 00 00 80 03 00 00 d4 03 00 00 00 00 00 00 01 00 00 00 db f2 8d 1c 00 00 ff ff 23 00 00 00 88 00 00 00 b6 00 ff ff 01 01 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 3c 00 ff ff 00 00 ad 8f d8 2e 7f 97 7a 41 a8 67 ba 51 12 38 cd a9 20 08 02 00 00 00 00 00 c0 00 00 00 00 00 00 46 00 00 00 00 00 00 00 00 00 00 00 00 00
Attribute VB_Name = "Sheet2"
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

General
Stream Path:VBA/ThisWorkbook
VBA File Name:ThisWorkbook
Stream Size:1794
Data ASCII:. . . . . . . . . \\ . . . . . . 8 . . . . . . . . . . . . . . . . . . . . C . . # . . . . . . . . . . . . . . . . . < . . . K ) M ; ] . . . . . . . . . . . . . . F . . . . . . . . . . . . . . . . . . . . * \\ . 0 J _ . . % ` . . . . . . . . . . . . . . . . . . . . . . x . . . . * \\ . 0 J _ . . % ` K ) M ; ] . . . . M E . . . . . . . . . . . . . . . . . . . . . . . P . . . . . S L . . . . S . . . . . S . . . . 6 " . . . . . . . . . . < . . . . . . . < . . . . . . . < . . . . . . . . . . N . 0 . { . 0 . 0 . 0
Data Raw:01 16 01 00 06 00 01 00 00 5c 04 00 00 e4 00 00 00 38 02 00 00 b1 04 00 00 bf 04 00 00 bf 05 00 00 00 00 00 00 01 00 00 00 db f2 43 9c 00 00 ff ff 23 00 00 00 88 00 00 00 b6 00 ff ff 01 01 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 3c 00 ff ff 00 00 b7 b9 b5 4b e8 29 fd 4d 80 bf a6 3b 81 eb 5d f8 19 08 02 00 00 00 00 00 c0 00 00 00 00 00 00 46 00 00 00 00 00 00 00 00 00 00 00 00 00
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
Option Explicit

'init of the samradapps date picker :-)
Private Sub Workbook_Open()
    ensureDPManager
    LoadGlobalSettings
End Sub

General
Stream Path:VBA/api_scroll_wheel
VBA File Name:api_scroll_wheel
Stream Size:13296
Data ASCII:. . . . . . . . . . . . . . . . . c . . . { ) . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . C . r . . . . . . . . . F i n d W i n d o w A . . . . 4 . . . . . . . . . . . . . . . G e t W i n d o w L o n g A . . . . . X . . . . . . . . . . . . . . S e t W i n d o w s H o o k E x A . . . . . . . . . D . . . . . . . . . . . C a l l N e x t H o o k E x . . . . . . . . l . . . . . . . . . . . U n h o o k W i n d o w s H o o k E x . . . . . . . . . . . . . . . . . . P o s t M e s s a g e A . .
Data Raw:01 16 01 00 06 d4 03 00 00 b8 18 00 00 b8 03 00 00 94 04 00 00 ff ff ff ff 63 19 00 00 7b 29 00 00 00 00 00 00 01 00 00 00 db f2 d0 65 00 00 ff ff 03 00 00 00 00 00 00 00 b6 00 ff ff 01 01 90 02 00 00 00 00 9d 02 14 00 43 00 ff ff 72 00 00 00 00 00 00 00 00 00 46 69 6e 64 57 69 6e 64 6f 77 41 00 00 00 d5 02 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 65 74 57 69 6e 64 6f 77
Attribute VB_Name = "api_scroll_wheel"
Option Explicit

Private Const WH_MOUSE_LL As Long = 14
Private Const WM_MOUSEWHEEL As Long = &H20A
Private Const HC_ACTION As Long = 0
Private Const GWL_HINSTANCE As Long = (-6)
Private Const WM_KEYDOWN As Long = &H100
Private Const WM_KEYUP As Long = &H101
Private Const VK_UP As Long = &H26
Private Const VK_DOWN As Long = &H28
Private Const WM_LBUTTONDOWN As Long = &H201
Private Const cSCROLLCHANGE As Long = 10
 
Private Type POINTAPI
    X As Long
    Y As Long
End Type

Private Type MOUSEHOOKSTRUCT
    pt As POINTAPI
    hwnd As Long
    wHitTestCode As Long
    dwExtraInfo As Long
End Type
 
Private mFormHwnd As Long
Private mbHook As Boolean

Dim mForm As Object

'********************************************************************
'** 32/64 bit api's
'********************************************************************
#If Win64 Then

    Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare PtrSafe Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
    Private Declare PtrSafe Function CallNextHookEx Lib "user32" (ByVal hHook As LongPtr, ByVal ncode As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr
    Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" (ByVal hhk As LongPtr) As Long
    Private Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As Long
    Private Declare PtrSafe Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
    Private Declare PtrSafe Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long
    Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As Long

    Private mLngMouseHook As LongPtr

    'mouse message incoming to form
    Private Function MouseProc(ByVal ncode As Long, ByVal wParam As Long, ByRef lParam As MOUSEHOOKSTRUCT) As LongPtr
        On Error GoTo errH
        If (ncode = HC_ACTION) Then
            If GetActiveWindow = mFormHwnd Then
                'see if its a mouse wheel action
                If wParam = WM_MOUSEWHEEL Then
                    MouseProc = True
                    If lParam.hwnd > 0 Then
                        'scroll up, to go previous month
                        datepickerform.prevMonthButton_Click
                    Else
                        'scroll down, go to next month
                        datepickerform.nextMonthButton_Click
                    End If
                    Exit Function
                End If
            End If
        End If
        
        'pass message along
        MouseProc = CallNextHookEx(mLngMouseHook, ncode, wParam, ByVal lParam)
        Exit Function
errH:
        'if there is an error then stop everything
        UnhookFormScroll
    End Function

    'listen to all the mouse events on the form passed in
    Sub DoHookFormScroll(oForm As Object)
        'too unstable on 64 bit
    End Sub
    Sub UnhookFormScroll()
        'too unstable on 64 bit
    End Sub

#Else

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
    Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
    Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long
    Private Declare Function GetActiveWindow Lib "user32" () As Long
    
    Private mLngMouseHook              As Long
    
    'mouse message incoming to form
    Private Function MouseProc(ByVal ncode As Long, ByVal wParam As Long, ByRef lParam As MOUSEHOOKSTRUCT) As Long
        On Error GoTo errH
        If (ncode = HC_ACTION) Then
            If GetActiveWindow = mFormHwnd Then
                'see if its a mouse wheel action
                If wParam = WM_MOUSEWHEEL Then
                    MouseProc = True
                    If lParam.hwnd > 0 Then
                        'scroll up, to go previous month
                        datepickerform.prevMonthButton_Click
                    Else
                        'scroll down, go to next month
                        datepickerform.nextMonthButton_Click
                    End If
                    Exit Function
                End If
            End If
        End If
        
        'pass message along
        MouseProc = CallNextHookEx(mLngMouseHook, ncode, wParam, ByVal lParam)
        Exit Function
errH:
        'if there is an error then stop everything
        UnhookFormScroll
    End Function

    'listen to all the mouse events on the form passed in
    Sub DoHookFormScroll(oForm As Object)
        Dim lngAppInst                  As Long
        Dim hwndUnderCursor             As Long
         
        Set mForm = oForm
        hwndUnderCursor = FindWindow("ThunderDFrame", oForm.Caption)
        If mFormHwnd <> hwndUnderCursor Then
            UnhookFormScroll
            mFormHwnd = hwndUnderCursor
            lngAppInst = GetWindowLong(mFormHwnd, GWL_HINSTANCE)
            If Not mbHook Then
                mLngMouseHook = SetWindowsHookEx(                 WH_MOUSE_LL, AddressOf MouseProc, lngAppInst, 0)
                mbHook = mLngMouseHook <> 0
            End If
        End If
    End Sub

    'stops listening for all the mouse messages to the form
    Sub UnhookFormScroll()
        If mbHook Then
            UnhookWindowsHookEx mLngMouseHook
            mLngMouseHook = 0
            mFormHwnd = 0
            mbHook = False
        End If
    End Sub

#End If


General
Stream Path:VBA/api_title_mouse_timer
VBA File Name:api_title_mouse_timer
Stream Size:18054
Data ASCII:. . . . . t . . . $ . . X . . . . . . & . . ; . . . . . . . . . . D . . . . . . . . . . . . . 0 . . . . . . . . f . w . . . . . . . . . F i n d W i n d o w A . . . . 4 . . . . . . . . . . . . . . . G e t W i n d o w L o n g A . . . . . X . . . . . . . . . . . . . . S e t W i n d o w L o n g A . . . . . | . . . D . . . . . . . . . . . D r a w M e n u B a r . . . . . . . h . . . . . . . . . . . G e t D C . . . . . . . . . . . . . . . . . . . . G e t D e v i c e C a p s . . . . . . . . . . . . . . . . . . .
Data Raw:01 16 01 00 06 74 04 00 00 a8 24 00 00 58 04 00 00 ac 05 00 00 ff ff ff ff f6 26 00 00 8a 3b 00 00 00 00 00 00 01 00 00 00 db f2 44 d8 00 00 ff ff 03 00 00 00 00 00 00 00 b6 00 ff ff 01 01 30 03 00 00 00 00 9d 02 14 00 66 00 ff ff 77 00 00 00 00 00 00 00 00 00 46 69 6e 64 57 69 6e 64 6f 77 41 00 00 00 9d 02 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 65 74 57 69 6e 64 6f 77
Attribute VB_Name = "api_title_mouse_timer"
Option Explicit

'********************************************************************
'** 32/64 bit api's
'********************************************************************
#If Win64 Then

    Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
    Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As Long
    Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare PtrSafe Function DrawMenuBar Lib "user32" (ByVal hwnd As LongPtr) As Long
    Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As LongPtr) As LongPtr
    Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hdc As LongPtr, ByVal nIndex As Long) As Long
    Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As LongPtr, ByVal hdc As LongPtr) As Long
    Private Declare PtrSafe Function GetCursorPos Lib "user32" (p As theCursor) As Long
    Private Declare PtrSafe Function SetTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr
    Private Declare PtrSafe Function KillTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
    Private Declare PtrSafe Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As LongPtr, ByVal hwnd As LongPtr, ByVal Msg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr
    Private Declare PtrSafe Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
    
    Dim TimerID As LongPtr
    Dim hdc As LongPtr
    Dim mhWndForm As LongPtr
    
#Else
    
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
    Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    Private Declare Function GetCursorPos Lib "user32" (p As theCursor) As Long
    Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
    Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
    
    Dim TimerID As Long
    Dim hdc As Long
    Dim mhWndForm As Long
    
#End If

'used for conversion of mouse to form positoning
Const LOGPIXELSX = 88
Const LOGPIXELSY = 90

'mouse position
Public Type theCursor
    Left As Long
    Top As Long
End Type

'timer options
Dim TimerSeconds As Single, tim As Boolean, Counter As Long

'used to get the screen height info
Private Const SM_CXMAXIMIZED = 61
Private Const SM_CYMAXIMIZED = 62

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Public g_screenHeight As Long
Public g_screenWidth As Long

'converts X position for mouse
Private Function pointsPerPixelX() As Double
    hdc = GetDC(0)
    pointsPerPixelX = 72 / GetDeviceCaps(hdc, LOGPIXELSX)
    ReleaseDC 0, hdc
End Function

'converts Y position for mouse
Private Function pointsPerPixelY() As Double
    hdc = GetDC(0)
    pointsPerPixelY = 72 / GetDeviceCaps(hdc, LOGPIXELSY)
    ReleaseDC 0, hdc
End Function

Public Sub getScreenHeight()
    'get the screen height
    g_screenHeight = GetSystemMetrics32(SM_CYMAXIMIZED)
    g_screenHeight = g_screenHeight * pointsPerPixelY
    
    'get the screen width
    g_screenWidth = GetSystemMetrics32(SM_CXMAXIMIZED)
    g_screenWidth = g_screenWidth * pointsPerPixelX
    
    'bump for some comfort space
    g_screenHeight = g_screenHeight - 20
    g_screenWidth = g_screenWidth - 20
    
    'check to be sure we have a generally positive number
    If g_screenHeight < 300 Then g_screenHeight = 300
    If g_screenWidth < 300 Then g_screenWidth = 300
End Sub

'positions the passed in form's top/left to the current mouse position
Sub MoveFormToMouse(theForm)

    Dim mousePos As theCursor
    
    'get the position of the mouse
    GetCursorPos mousePos
    
    'set the form postion to the mouse position
    theForm.Top = pointsPerPixelX * mousePos.Top
    theForm.Left = pointsPerPixelY * mousePos.Left
    
    'make sure we don't run off the bottom
    If g_screenHeight > 0 Then
        If (theForm.Top + theForm.Height) > g_screenHeight Then theForm.Top = g_screenHeight - theForm.Height
    End If
    
    'make sure we don't run off the right
    If g_screenWidth > 0 Then
        If (theForm.Left + theForm.Width) > g_screenWidth Then theForm.Left = g_screenWidth - theForm.Width
    End If
    
End Sub


'********************************************************
'TIMER
'********************************************************

'starts the timer
Sub StartTimer()
    'set the timer for 1 second
    TimerSeconds = 1
    TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
End Sub

'stops the timer
Sub EndTimer()
    On Error Resume Next
    KillTimer 0&, TimerID
End Sub

'timer called on the second, update the calendar clock
Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal nIDEvent As Long, ByVal dwTimer As Long)
    If IsUserFormLoaded("datepickerform") Then
        datepickerform.timeButton.Caption = VBA.Time
    Else
        EndTimer
    End If
End Sub

'checks to see if a particular form is loaded
Private Function IsUserFormLoaded(ByVal UFName As String) As Boolean
    Dim UForm As Object
    For Each UForm In VBA.UserForms
        IsUserFormLoaded = UForm.Name = UFName
        If IsUserFormLoaded Then
            Exit For
        End If
    Next
End Function

'********************************************************
'REMOVE TITLE BAR
'********************************************************

'hides the caption for a userform
Sub removeCaption(objForm As Object)
    Dim lStyle As Long
    Dim hMenu As Long
     
    If Val(Application.Version) < 9 Then
        mhWndForm = FindWindow("ThunderXFrame", objForm.Caption) 'XL97
    Else
        mhWndForm = FindWindow("ThunderDFrame", objForm.Caption) 'XL2000+
    End If
    
    lStyle = GetWindowLong(mhWndForm, -16)
    lStyle = lStyle And Not &HC00000
    SetWindowLong mhWndForm, -16, lStyle
    DrawMenuBar mhWndForm
End Sub

General
Stream Path:VBA/datepickerform
VBA File Name:datepickerform
Stream Size:91357
Data ASCII:. . . . . . . . . . . . . . . . t . . . $ . . . & . . . . N . . . . . . . . . . { . . . . . . . . . . . . . . . . . . . . < . . . 0 6 k ' A . r # . 0 = . K . y 9 Y f O j J B t . ? . . . . . . . . F K } . y . . . . . . . . . . . . . . . . . . . . . . x . . . . . . . F K } . y 0 6 k ' A . r # . . . . . M E . . . . . . . . . . . . . . . . . . . . . D . @ . . . . . S P . . . . S . . . . . S . . . . . S . . . . . > " . . . . . . . . . . L . . . . . L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Raw:01 16 01 00 06 00 01 00 00 08 04 01 00 e4 00 00 00 74 03 00 00 24 08 01 00 26 0e 01 00 06 4e 01 00 9b 00 00 00 01 00 00 00 db f2 0b 7b 00 00 ff ff 01 00 00 00 88 00 00 00 b6 00 ff ff 01 01 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 3c 02 ff ff 00 00 a7 30 8c 36 e7 6b 27 41 98 b9 07 72 96 23 07 d4 30 bc e1 3d ce 91 fb 4b 8d 04 79 e4 b4 39 fb 59 66 4f fa a3 6a 4a 98 42 a3 b8 74 fb 1a
Attribute VB_Name = "datepickerform"
Attribute VB_Base = "0{3C78821A-383B-4A45-9982-DBC74EB6A17E}{28BCA504-84B0-4B16-950E-B8D24AF28465}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False
Option Explicit

Dim cHighlight As Integer       'current day that has the highlight
Dim c1Highlight_Picker As Integer 'current picker highlight

'click on the month picker
Private Sub monthTitle_Click()

    'set the special highlight
    highlightPicker = cMonth
    
    'reset the current highlight
    c1Highlight_Picker = 0
    
    'show the picker
    toggleMonthPicker
    
End Sub

'click on the year picker
Private Sub yearTitle_Click()

    'set the special highlight
    highlightPicker = cYear
    
    'reset the current highlight
    c1Highlight_Picker = 0
    
    'show the picker
    toggleYearPicker
    
End Sub

'next month button click
Public Sub nextMonthButton_Click()
    
    If pickerMode = 0 Then
        'move the month by one
        cMonth = cMonth + 1
        
        'make sure its a valid month
        If cMonth > 12 Then
            cMonth = 1
            cYear = cYear + 1
        End If
        
        'populate the calendar
        populateDatePickerDays
    
    ElseIf pickerMode = 2 Then
        'move to the next set of picker years
        pickerYearsOffset = pickerYearsOffset + 3
        
        'update the picker
        populatePickerYears
    End If
    
End Sub

'previous month button click
Public Sub prevMonthButton_Click()

    If pickerMode = 0 Then
        'move the month by one
        cMonth = cMonth - 1
        
        'make sure its a valid month
        If cMonth < 1 Then
            cMonth = 12
            cYear = cYear - 1
        End If
        
        'populate the calendar
        populateDatePickerDays
    
    ElseIf pickerMode = 2 Then
        'move to previous set of picker years
        pickerYearsOffset = pickerYearsOffset - 3
        
        'update the picker
        populatePickerYears
    End If
    
End Sub

Private Sub UserForm_Initialize()
    
    'get rid of the title bar
    removeCaption Me
    
    'once the borders are gone, we need to resize it to fit the content
    Me.Width = redBG.Width
    Me.Height = barHeight.Height
        
    'init the weekday names
    populateWeekdayNames
    
    'populate the calendar
    populateDatePickerDays
    
    'set the current date and time
    todayButton.Caption = VBA.WeekdayName(VBA.Weekday(VBA.Date, vbSunday)) & ", " & VBA.MonthName(VBA.Month(VBA.Date)) & " " & VBA.day(VBA.Date) & ", " & VBA.Year(VBA.Date)
    timeButton.Caption = VBA.Time
    
    'default the mode
    setPickerMode 0
    
    'start clock timer
    StartTimer
    
End Sub

'processes the mouse move highlight
Sub process2MM(day)

    'see if there is an active highlight
    If cHighlight <> 0 Then
        'see if we need to highlight something else
        If cHighlight <> day Then
            'remove the current highlight
            If cHighlight <= 67 Then
                'remove current highlight
                Me.Controls("daybg" & cHighlight).BackColor = "16777215"
                
                'check to see if its a special date
                specialHighlight Me.Controls("daybg" & cHighlight)
            ElseIf cHighlight = 68 Then
                'insert today button
                datetimebg.BackColor = "16777215"
            ElseIf cHighlight = 69 Then
                'month title caption
                monthTitle.Font.Underline = False
            ElseIf cHighlight = 70 Then
                'year title caption
                yearTitle.Font.Underline = False
            End If
        End If
    End If
    
    'see if we need to apply a new highlight
    If day > 0 Then
        'need to apply new highlight
        If day <= 67 Then
            Me.Controls("daybg" & day).BackColor = "14737632"
        ElseIf day = 68 Then
            'insert today button
            datetimebg.BackColor = "14737632"
        ElseIf day = 69 Then
            'month title caption
            monthTitle.Font.Underline = True
        ElseIf day = 70 Then
            'year title caption
            yearTitle.Font.Underline = True
        End If
        
        'store that its highlighted
        cHighlight = day
    End If
    
End Sub

'process the mouse move with the picker UI
Private Sub process1MMpicker(itemIndex As Integer)
    
    'see if there is an active highlight
    If c1Highlight_Picker <> 0 Then
        'see if we need to highlight something else
        If c1Highlight_Picker <> itemIndex Then
            'remove current highlight
            Me.Controls("mybg" & c1Highlight_Picker).BackColor = "16777215"
            
            'check to see if we should highlight
            specialHighlight Me.Controls("mybg" & c1Highlight_Picker), True
        End If
    End If
    
    'see if we need to apply a new highlight
    If itemIndex > 0 Then
        Me.Controls("mybg" & itemIndex).BackColor = "14737632"
        c1Highlight_Picker = itemIndex
    End If
    
End Sub

'on userform mouse move clear the highlights
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    process2MM 0
End Sub

'on header mouse move clear the highlights
Private Sub redBG_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    process2MM 0
End Sub

'*****************************************
'bunch of mouse click handling for the days
'*****************************************
Private Sub day11_Click(): dayPicked 11: End Sub
Private Sub day12_Click(): dayPicked 12: End Sub
Private Sub day13_Click(): dayPicked 13: End Sub
Private Sub day14_Click(): dayPicked 14: End Sub
Private Sub day15_Click(): dayPicked 15: End Sub
Private Sub day16_Click(): dayPicked 16: End Sub
Private Sub day17_Click(): dayPicked 17: End Sub
Private Sub daybg11_Click(): dayPicked 11: End Sub
Private Sub daybg12_Click(): dayPicked 12: End Sub
Private Sub daybg13_Click(): dayPicked 13: End Sub
Private Sub daybg14_Click(): dayPicked 14: End Sub
Private Sub daybg15_Click(): dayPicked 15: End Sub
Private Sub daybg16_Click(): dayPicked 16: End Sub
Private Sub daybg17_Click(): dayPicked 17: End Sub
Private Sub day21_Click(): dayPicked 21: End Sub
Private Sub day22_Click(): dayPicked 22: End Sub
Private Sub day23_Click(): dayPicked 23: End Sub
Private Sub day24_Click(): dayPicked 24: End Sub
Private Sub day25_Click(): dayPicked 25: End Sub
Private Sub day26_Click(): dayPicked 26: End Sub
Private Sub day27_Click(): dayPicked 27: End Sub
Private Sub daybg21_Click(): dayPicked 21: End Sub
Private Sub daybg22_Click(): dayPicked 22: End Sub
Private Sub daybg23_Click(): dayPicked 23: End Sub
Private Sub daybg24_Click(): dayPicked 24: End Sub
Private Sub daybg25_Click(): dayPicked 25: End Sub
Private Sub daybg26_Click(): dayPicked 26: End Sub
Private Sub daybg27_Click(): dayPicked 27: End Sub
Private Sub day31_Click(): dayPicked 31: End Sub
Private Sub day32_Click(): dayPicked 32: End Sub
Private Sub day33_Click(): dayPicked 33: End Sub
Private Sub day34_Click(): dayPicked 34: End Sub
Private Sub day35_Click(): dayPicked 35: End Sub
Private Sub day36_Click(): dayPicked 36: End Sub
Private Sub day37_Click(): dayPicked 37: End Sub
Private Sub daybg31_Click(): dayPicked 31: End Sub
Private Sub daybg32_Click(): dayPicked 32: End Sub
Private Sub daybg33_Click(): dayPicked 33: End Sub
Private Sub daybg34_Click(): dayPicked 34: End Sub
Private Sub daybg35_Click(): dayPicked 35: End Sub
Private Sub daybg36_Click(): dayPicked 36: End Sub
Private Sub daybg37_Click(): dayPicked 37: End Sub
Private Sub day41_Click(): dayPicked 41: End Sub
Private Sub day42_Click(): dayPicked 42: End Sub
Private Sub day43_Click(): dayPicked 43: End Sub
Private Sub day44_Click(): dayPicked 44: End Sub
Private Sub day45_Click(): dayPicked 45: End Sub
Private Sub day46_Click(): dayPicked 46: End Sub
Private Sub day47_Click(): dayPicked 47: End Sub
Private Sub daybg41_Click(): dayPicked 41: End Sub
Private Sub daybg42_Click(): dayPicked 42: End Sub
Private Sub daybg43_Click(): dayPicked 43: End Sub
Private Sub daybg44_Click(): dayPicked 44: End Sub
Private Sub daybg45_Click(): dayPicked 45: End Sub
Private Sub daybg46_Click(): dayPicked 46: End Sub
Private Sub daybg47_Click(): dayPicked 47: End Sub
Private Sub day51_Click(): dayPicked 51: End Sub
Private Sub day52_Click(): dayPicked 52: End Sub
Private Sub day53_Click(): dayPicked 53: End Sub
Private Sub day54_Click(): dayPicked 54: End Sub
Private Sub day55_Click(): dayPicked 55: End Sub
Private Sub day56_Click(): dayPicked 56: End Sub
Private Sub day57_Click(): dayPicked 57: End Sub
Private Sub daybg51_Click(): dayPicked 51: End Sub
Private Sub daybg52_Click(): dayPicked 52: End Sub
Private Sub daybg53_Click(): dayPicked 53: End Sub
Private Sub daybg54_Click(): dayPicked 54: End Sub
Private Sub daybg55_Click(): dayPicked 55: End Sub
Private Sub daybg56_Click(): dayPicked 56: End Sub
Private Sub daybg57_Click(): dayPicked 57: End Sub
Private Sub day61_Click(): dayPicked 61: End Sub
Private Sub day62_Click(): dayPicked 62: End Sub
Private Sub day63_Click(): dayPicked 63: End Sub
Private Sub day64_Click(): dayPicked 64: End Sub
Private Sub day65_Click(): dayPicked 65: End Sub
Private Sub day66_Click(): dayPicked 66: End Sub
Private Sub day67_Click(): dayPicked 67: End Sub
Private Sub daybg61_Click(): dayPicked 61: End Sub
Private Sub daybg62_Click(): dayPicked 62: End Sub
Private Sub daybg63_Click(): dayPicked 63: End Sub
Private Sub daybg64_Click(): dayPicked 64: End Sub
Private Sub daybg65_Click(): dayPicked 65: End Sub
Private Sub daybg66_Click(): dayPicked 66: End Sub
Private Sub daybg67_Click(): dayPicked 67: End Sub
Private Sub timeButton_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): nowPicked 68, Button: End Sub
Private Sub todayButton_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): nowPicked 68, Button: End Sub
Private Sub datetimebg_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): nowPicked 68, Button: End Sub

'*****************************************
'bunch of mouse moves for the highlights
'*****************************************
Private Sub day11_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 11: End Sub
Private Sub day12_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 12: End Sub
Private Sub day13_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 13: End Sub
Private Sub day14_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 14: End Sub
Private Sub day15_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 15: End Sub
Private Sub day16_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 16: End Sub
Private Sub day17_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 17: End Sub
Private Sub daybg11_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 11: End Sub
Private Sub daybg12_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 12: End Sub
Private Sub daybg13_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 13: End Sub
Private Sub daybg14_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 14: End Sub
Private Sub daybg15_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 15: End Sub
Private Sub daybg16_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 16: End Sub
Private Sub daybg17_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 17: End Sub
Private Sub day21_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 21: End Sub
Private Sub day22_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 22: End Sub
Private Sub day23_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 23: End Sub
Private Sub day24_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 24: End Sub
Private Sub day25_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 25: End Sub
Private Sub day26_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 26: End Sub
Private Sub day27_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 27: End Sub
Private Sub daybg21_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 21: End Sub
Private Sub daybg22_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 22: End Sub
Private Sub daybg23_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 23: End Sub
Private Sub daybg24_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 24: End Sub
Private Sub daybg25_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 25: End Sub
Private Sub daybg26_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 26: End Sub
Private Sub daybg27_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 27: End Sub
Private Sub day31_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 31: End Sub
Private Sub day32_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 32: End Sub
Private Sub day33_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 33: End Sub
Private Sub day34_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 34: End Sub
Private Sub day35_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 35: End Sub
Private Sub day36_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 36: End Sub
Private Sub day37_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 37: End Sub
Private Sub daybg31_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 31: End Sub
Private Sub daybg32_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 32: End Sub
Private Sub daybg33_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 33: End Sub
Private Sub daybg34_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 34: End Sub
Private Sub daybg35_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 35: End Sub
Private Sub daybg36_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 36: End Sub
Private Sub daybg37_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 37: End Sub
Private Sub day41_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 41: End Sub
Private Sub day42_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 42: End Sub
Private Sub day43_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 43: End Sub
Private Sub day44_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 44: End Sub
Private Sub day45_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 45: End Sub
Private Sub day46_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 46: End Sub
Private Sub day47_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 47: End Sub
Private Sub daybg41_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 41: End Sub
Private Sub daybg42_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 42: End Sub
Private Sub daybg43_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 43: End Sub
Private Sub daybg44_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 44: End Sub
Private Sub daybg45_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 45: End Sub
Private Sub daybg46_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 46: End Sub
Private Sub daybg47_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 47: End Sub
Private Sub day51_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 51: End Sub
Private Sub day52_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 52: End Sub
Private Sub day53_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 53: End Sub
Private Sub day54_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 54: End Sub
Private Sub day55_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 55: End Sub
Private Sub day56_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 56: End Sub
Private Sub day57_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 57: End Sub
Private Sub daybg51_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 51: End Sub
Private Sub daybg52_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 52: End Sub
Private Sub daybg53_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 53: End Sub
Private Sub daybg54_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 54: End Sub
Private Sub daybg55_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 55: End Sub
Private Sub daybg56_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 

General
Stream Path:VBA/dp_core
VBA File Name:dp_core
Stream Size:25894
Data ASCII:. . . . . . . . . . . . . . . . . " . . R . . . . . . . . . . F . . . . . . . . . . . . . . . . . . . . . ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . . . . " B . . . . . 0 L . . . . . . 8 . & . . . . . 0 . . . . . > . . . . . . . . . . . . . . . " .
Data Raw:01 16 01 00 06 f0 00 00 00 bc 1e 00 00 d4 00 00 00 c8 02 00 00 ff ff ff ff a7 22 00 00 c7 52 00 00 08 00 00 00 01 00 00 00 db f2 ed 46 00 00 ff ff 03 00 00 00 00 00 00 00 b6 00 ff ff 01 01 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 28 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Attribute VB_Name = "dp_core"
Option Explicit

Global g_oDP As DatePickerManager 'controls the date picker
Global cMonth As Integer 'curent month for the date picker
Global cYear As Integer 'current year for the date picker
Global datePicked As String 'date that get picked and inserted
Global theRibbon As IRibbonUI 'ref to the ribbon
Global fShowDPRightClick As Boolean 'flag if we show the date picker on the right click menu
Global fShowDPInGrid As Boolean 'flag if we show the date picker in the grid
Global highlightDate As Date 'check for cell to highlight in calendar
Global highlightPicker As Integer 'special value to highlight in the "my" picker
Global g_gridDP As Shape 'dp entry point for grid
Global pickerMode As Integer '0=normal, 1=months, 2=years
Global pickerYearsOffset As Integer 'tracks how far off of cYear to show in the years picker

'gets the month and year and populates the date picker
Sub populateDatePickerDays()
    Dim i As Integer: Dim j As Integer
    
    Dim the_startOfMonth As Date 'date object that is the start of the current month
    Dim trackingDate As Date 'the top left position of the calendar control, then incremented as we fill out the calendar
    Dim iStartOfMonthDay As Integer 'day of the week the month starts on
    
    Dim cDayLabel1 As control 'the label control for the day we're editing
    Dim cDayLabelBG1 As control 'the BG label control for the day we're editing
    
    'get the start of the month
    the_startOfMonth = VBA.DateSerial(cYear, cMonth, 1)
    
    'get the day of the week for the start
    iStartOfMonthDay = VBA.Weekday(the_startOfMonth, vbSunday)
    
    'get the top left date for the calendar
    trackingDate = VBA.DateAdd("d", -iStartOfMonthDay + 1, the_startOfMonth)
    
    'set the month label
    datepickerform.monthTitle.Caption = VBA.MonthName(cMonth, True)
    
    'set the year label
    datepickerform.yearTitle.Caption = cYear

    'loop through each week
    For i = 1 To 6
        
        'loop though each day of the week
        For j = 1 To 7
            'get the controls for the day
            Set cDayLabel1 = datepickerform.Controls("day" & i & j)
            Set cDayLabelBG1 = datepickerform.Controls("dayBG" & i & j)
            
            'set the caption for the day
            cDayLabel1.Caption = VBA.day(trackingDate)
            
            'set the tag info for inserting
            cDayLabel1.Tag = trackingDate
            cDayLabelBG1.Tag = trackingDate
            
            'check to see if we should gray the label
            If VBA.Month(trackingDate) <> cMonth Then
                'not current month, fade some
                cDayLabel1.ForeColor = 8421504
            Else
                'current month, make normal
                cDayLabel1.ForeColor = -2147483630
            End If
            
            'check to see if we should highlight the day
            specialHighlight cDayLabelBG1
            
            'move to the next day
            trackingDate = VBA.DateAdd("d", 1, trackingDate)
        Next j
    Next i
    
End Sub

'highlights days in the calendar
Sub specialHighlight(theBGControl As control, Optional picker As Boolean = False)
    
    'check to see if its already flagged and remove it
    '(bug with changing months)
    If theBGControl.BackColor = 12632319 Then
        theBGControl.BackColor = 16777215
    End If
    
    'see if we should highlight it
    If picker Then
        'use highlight picker for the picker control
        If highlightPicker = theBGControl.Tag Then
            theBGControl.BackColor = 12632319
        End If
    Else
        'use highlight date for calendar
        If highlightDate = theBGControl.Tag Then
            theBGControl.BackColor = 12632319
        End If
    End If
    
End Sub

'fills out Sun - Sat captions
Sub populateWeekdayNames()
    Dim i As Integer
    
    For i = 1 To 7
         datepickerform.Controls("dayofweek" & i).Caption = VBA.WeekdayName(i, True, vbSunday)
    Next i
    
End Sub

'shows the date picker
Sub showDatePicker()
    'make sure the manager is loaded
    ensureDPManager

    'flag that picker is visible
    g_oDP.PickerVisible = True

    'setup the special highlight date
    If VBA.IsDate(ActiveCell) Then
        'use the current cells value
        highlightDate = VBA.DateValue(ActiveCell)
    Else
        'use today
        highlightDate = VBA.Date
    End If
    
    'set the global month and year
    cMonth = VBA.Month(highlightDate)
    cYear = VBA.Year(highlightDate)
    
    'show the calendar form
    datepickerform.Show
    
    'be sure the form moves to position
    MoveFormToMouse datepickerform
    
    'hook up mousewheel
    DoHookFormScroll datepickerform
End Sub

'closes the date picker
Sub closeDatePicker()
    'ensure DP object
    ensureDPManager

    'check if its visible
    If g_oDP.PickerVisible Then
        'unhook mouse wheel scrolling
        UnhookFormScroll
        
        'get rid of the date picker form
        Unload datepickerform
        
        'update the manager to false
        g_oDP.PickerVisible = False
    End If
End Sub

'user clicked to insert today, do some processing before handing off to day picked
Sub nowPicked(id As Integer, Button As Integer)
    If Button > 1 Then
        'right click or something else, include time
        dayPicked 68, True
    Else
        'left click, just the date
        dayPicked 68
    End If
End Sub

'called by the buttons on the date picked when clicked
Sub dayPicked(id As Integer, Optional inculdeTime As Boolean = False)
    If id <= 67 Then
        'get the tag info for the control
        datePicked = datepickerform.Controls("day" & id).Tag
    ElseIf id = 68 Then
        'get the date and time for now
        datePicked = VBA.Date
        
        'see if we add time
        If inculdeTime Then datePicked = datePicked & " " & VBA.Time
    End If
    
    'insert the date to the cell(s)
    DoAction Date_Picker, True
    
    'close the date picker
    closeDatePicker
End Sub

'called by the button on the "my" picker when clicked
Sub pickerClicked(id As Integer)

    'check mode
    If pickerMode = 1 Then
        'update month value
        cMonth = datepickerform.Controls("my" & id).Tag
    ElseIf pickerMode = 2 Then
        'update year value
        cYear = datepickerform.Controls("my" & id).Tag
    End If
    
    'reload
    populateDatePickerDays
    
    'close picker
    setPickerMode 0
End Sub

'destroys the grid entry point
Sub killGridDP()
    On Error Resume Next
    
    'delete it
    g_gridDP.Delete
    
    'make sure its set to nothing
    Set g_gridDP = Nothing
    
    On Error GoTo 0
End Sub

'makes the grid entry point and places it
Sub createGridDP()
    
    On Error GoTo create_err
    
    'be sure the current one is deleted
    If Not (g_gridDP Is Nothing) Then
        killGridDP
    End If
    
    'create a new one
    Set g_gridDP = ActiveSheet.Shapes.AddShape(msoShapeRectangle, ActiveCell.Left + ActiveCell.Width + 6, ActiveCell.Top, 16, 16)
    
    'add image
    With g_gridDP.Fill
        .Visible = msoTrue
        .UserPicture pathToIcon
        .TextureTile = msoFalse
        .RotateWithObject = msoTrue
    End With
    
    'format the border away
    g_gridDP.Line.Visible = msoFalse
    
    'add click event
    g_gridDP.OnAction = "'" & ThisWorkbook.Name & "'!dp_core.gridDP_Click"
    
create_err:
End Sub

'user clicked on the gridDP entry
Public Sub gridDP_Click() ' #visible
    showDatePicker
End Sub

'toggles the month picker
Sub toggleMonthPicker()
    If pickerMode = 1 Then
        setPickerMode 0
    Else
        setPickerMode 1
        showPicker
    End If
End Sub

'toggles the year picker
Sub toggleYearPicker()
    If pickerMode = 2 Then
        setPickerMode 0
    Else
        setPickerMode 2
        showPicker
    End If
End Sub

'shows the my picker
Sub showPicker()
    datepickerform.Controls("myFrame").Top = 30
End Sub

'hides the my picker
Sub hidePicker()
    datepickerform.Controls("myFrame").Top = datepickerform.Height + 20
End Sub

'set the mode for the picker, and updates the UI
Sub setPickerMode(mode As Integer)
    If mode = 0 Then
        'hide the picker
        pickerMode = 0
        hidePicker
        
        'show buttons
        showPrevNextMonthButtons
    ElseIf mode = 1 Then
        'populate months
        populatePickerMonths
        
        'hide buttons
        hidePrevNextMonthButtons
        
        'set the flag to months
        pickerMode = 1
    ElseIf mode = 2 Then
        'reset offset for year scrolling
        pickerYearsOffset = -6
        
        'populate years
        populatePickerYears
        
        'show buttons
        showPrevNextMonthButtons
        
        'set the flag
        pickerMode = 2
    End If
End Sub

'updates the "my" picker strings to months
Sub populatePickerMonths()
    Dim i As Integer

    'ref to the control to update
    Dim myControl As control
    Dim myBGControl As control
    
    'loop through and populate the months
    For i = 1 To 12
        'get a ref to the control to update
        Set myControl = datepickerform.Controls("my" & i)
        Set myBGControl = datepickerform.Controls("mybg" & i)
        
        'set the string
        myControl.Caption = VBA.MonthName(i, True)
        
        'set the tag to the value we'll act on later
        myControl.Tag = i
        myBGControl.Tag = i
        
        'clear any highlight
        myBGControl.BackColor = 16777215
        
        'see if we should highlight
        specialHighlight myBGControl, True
    Next i
End Sub

Sub populatePickerYears()
    Dim i As Integer

    'ref to the control to update
    Dim myControl As control
    Dim myBGControl As control
    Dim loopStart As Integer
    
    loopStart = cYear + pickerYearsOffset
    
    'loop through and populate the months
    For i = 1 To 12
        'get a ref to the control to update
        Set myControl = datepickerform.Controls("my" & i)
        Set myBGControl = datepickerform.Controls("mybg" & i)
        
        'set the string
        myControl.Caption = loopStart
        
        'set the tag to the value we'll act on later
        myControl.Tag = loopStart
        myBGControl.Tag = loopStart
        
        'clear any highlight
        myBGControl.BackColor = 16777215
        
        'see if we should highlight
        specialHighlight myBGControl, True
        
        'inc the year
        loopStart = loopStart + 1
    Next i
End Sub

'hides/shows the buttons when they don't apply (for month picker)
Sub hidePrevNextMonthButtons()
    datepickerform.Controls("prevMonthButton").Visible = False
    datepickerform.Controls("nextMonthButton").Visible = False
End Sub
Sub showPrevNextMonthButtons()
    datepickerform.Controls("prevMonthButton").Visible = True
    datepickerform.Controls("nextMonthButton").Visible = True
End Sub


General
Stream Path:VBA/dp_icon
VBA File Name:dp_icon
Stream Size:3258
Data ASCII:. . . . . . . . . . . . . . . . . j . . . f . . . . . . . . . . . f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M E . . . . . . . . . . . . . . . . . . . . . . . P . . . . . > . . . . . . . . . . . . . . . . . " . . . . . L . . . . . L . . . . . . . . . . . < . . . . . . . .
Data Raw:01 16 01 00 06 f0 00 00 00 b4 05 00 00 d4 00 00 00 d8 01 00 00 ff ff ff ff 6a 06 00 00 66 0a 00 00 00 00 00 00 01 00 00 00 db f2 66 ac 00 00 ff ff 03 00 00 00 00 00 00 00 b6 00 ff ff 01 01 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 04 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Attribute VB_Name = "dp_icon"
Option Explicit

Global pathToIcon As String

'creates the icon for the in cell date picker
Sub CreateDPIcon()
    
    'set the path to the icon
    pathToIcon = Environ("temp") & "\samrad3.bmp"
    
    'check if the bmp exists
    If Dir(pathToIcon) = "" Then
        'icon doesn't exist, need to create it
        
        Dim hex_val As String
        hex_val = ThisWorkbook.Sheets("_data12345").Range("iconInCell").Value
    
        Dim output() As String
        output = Split(hex_val, "|")
    
        Dim handle As Long
        handle = FreeFile
        
        Open pathToIcon For Binary As #handle
    
        Dim i As Long
        For i = LBound(output) To UBound(output)
            Put #handle, , CByte("&H" & output(i))
        Next i
    
        Close #handle
    End If
    
End Sub



General
Stream Path:VBA/dp_ribbon
VBA File Name:dp_ribbon
Stream Size:11368
Data ASCII:. . . . . . . . t . . . . . . ( . . . . . . . % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M E . . . . . . . . . . . . . . . . . . . . . < . . . . . . . . . . . . . . 8 L . . . . . ( L . . . . . 0 L . . . . . 0 L . . . . . . > . . . . . . . . . . . . .
Data Raw:01 16 01 00 06 f0 00 00 00 74 11 00 00 d4 00 00 00 28 02 00 00 ff ff ff ff e0 12 00 00 1c 25 00 00 0b 00 00 00 01 00 00 00 db f2 14 80 00 00 ff ff 03 00 00 00 00 00 00 00 b6 00 ff ff 01 01 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 04 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Attribute VB_Name = "dp_ribbon"
Option Explicit

'adds the date picker to the right click menu
Sub AddDatePickerRightClick()
    Dim ContextMenu As CommandBar
    
    'add to context menus
    If DatePickerOnMenu(Application.CommandBars("Cell")) = False Then AddDatePickerToMenu Application.CommandBars("Cell")
    If DatePickerOnMenu(Application.CommandBars("List Range Popup")) = False Then AddDatePickerToMenu Application.CommandBars("List Range Popup")
End Sub

Sub AddDatePickerToMenu(cb As CommandBar)
    ' Add one custom button to the Cell context menu.
    With cb.Controls.Add(Type:=msoControlButton, before:=1, Temporary:=True)
        .OnAction = "'" & ThisWorkbook.Name & "'!" & "DatePicker_Click"
        .FaceId = 1992
        .Caption = "Date Picker"
        .Tag = "samrad_dp"
        .BeginGroup = True
    End With
End Sub

'removes date picker menu item from context menu, cannot be called from the menu item
Sub RemoveDatePickerRightClick()
    'get the cell context menu
    RemoveDatePickerFromMenu Application.CommandBars("Cell")
    RemoveDatePickerFromMenu Application.CommandBars("List Range Popup")
End Sub

'removes the date picker item from the menu
Sub RemoveDatePickerFromMenu(cb As CommandBar)
    Dim ctrl As CommandBarControl
    
    'loop through and find the date picker
    For Each ctrl In cb.Controls
        If ctrl.Tag = "samrad_dp" Then
            ctrl.Delete
            Exit For
        End If
    Next ctrl
End Sub

'checks to see if the date picker menu item already exists
Private Function DatePickerOnMenu(cb As CommandBar) As Boolean
    Dim ctrl As CommandBarControl
    DatePickerOnMenu = False
    
    'loop through and find the date picker
    For Each ctrl In cb.Controls
        If ctrl.Tag = "samrad_dp" Then
            DatePickerOnMenu = True
            Exit For
        End If
    Next ctrl
End Function

'updates the right click menu based on the options
Sub updateRightClickMenu()

    'turn on or off for right click
    If fShowDPRightClick Then
        'add date picker to context menus
        AddDatePickerRightClick
    Else
        'remove date picker from context menus
        RemoveDatePickerRightClick
    End If
    
End Sub

'Callback for btnInsertTodaysDate onAction
Sub InsertTodaysDate_Click(control As IRibbonControl)
    dayPicked 68
End Sub

'Callback for btnInsertTodaysDateTime onAction
Sub InsertTodaysDateTime_Click(control As IRibbonControl)
    dayPicked 68, True
End Sub

'Callback for ShowDPMenu onAction
Sub ShowDPMenu_Click(control As IRibbonControl, pressed As Boolean)
    
    'update the flag
    fShowDPRightClick = pressed
    
    'save the setting
    VBA.SaveSetting "samradapps_datepicker", "ribbon", "fShowDPRightClick", fShowDPRightClick
    
    'refresh the option
    updateRightClickMenu
    
End Sub

'Callback for ShowDPGrid onAction
Sub ShowDPGrid_Click(control As IRibbonControl, pressed As Boolean)
    
    'update the flag
    fShowDPInGrid = pressed
    
    'save the setting
    VBA.SaveSetting "samradapps_datepicker", "ribbon", "fShowDPInGrid", fShowDPInGrid
    
    'refresh the option
    updateRightClickMenu
    
End Sub

'Callback for btnInsertTodaysDate getLabel
Sub InsertTodaysDate_Label(control As IRibbonControl, ByRef returnedVal)
    returnedVal = VBA.Date
End Sub

'Callback for btnInsertTodaysDateTime getLabel
Sub InsertTodaysDateTime_Label(control As IRibbonControl, ByRef returnedVal)
    returnedVal = VBA.Date & " " & VBA.Time
    
    'delay the reset
    Application.OnTime Now + TimeValue("00:00:05"), "resetRibbonControls"
End Sub

'Callback for ShowDPMenu getPressed
Sub ShowDPMenu_State(control As IRibbonControl, ByRef returnedVal)
    returnedVal = fShowDPRightClick
End Sub

'Callback for ShowDPGrid getPressed
Sub ShowDPGrid_State(control As IRibbonControl, ByRef returnedVal)
    returnedVal = fShowDPInGrid
End Sub

'ribbon menu click
Sub DatePicker_Click(Optional control As IRibbonControl)
    showDatePicker
End Sub

'ribbon init
Sub DatePickerRibbonInit(Ribbon As IRibbonUI)
    'get a copy of the ribbon object
    Set theRibbon = Ribbon
End Sub

'called to make sure we updates the labels on insert today in the ribbon
Private Function resetRibbonControls()
    On Error Resume Next
    
    theRibbon.InvalidateControl "btnInsertTodaysDate"
    theRibbon.InvalidateControl "btnInsertTodaysDateTime"
    
    On Error GoTo 0
End Function


General
Stream Path:VBA/shared_code
VBA File Name:shared_code
Stream Size:10274
Data ASCII:. . . . . . . . . ^ . . . . . . . . . D . . . 0 ! . . . . . . . . . . E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . R . . . . . R . . . . . . . . . . . . . . . M E . . . . . . . . . . . . . . . . . . . . . D . . . . . . . @ . . . . . H . & . . . . . 8 . 8 . . . . . " B . . .
Data Raw:01 16 01 00 06 1a 01 00 00 5e 10 00 00 fe 00 00 00 f2 02 00 00 ff ff ff ff 44 12 00 00 30 21 00 00 00 00 00 00 01 00 00 00 db f2 eb 45 00 00 ff ff 03 00 00 00 00 00 00 00 b6 00 ff ff 01 01 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff 04 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Attribute VB_Name = "shared_code"
Option Explicit

'Action types
Enum ActionOnCell
    Date_Picker
End Enum

'called by the click events to begin the action
Sub DoAction(iType As ActionOnCell, Optional noTableGrow As Boolean = False)
    
    'loop through the cells
    LoopCellsController iType, noTableGrow

End Sub

'detects tables and multiple ranges before calling the sub to change the cell
Sub LoopCellsController(iType As ActionOnCell, Optional noTableGrow As Boolean = False)
    Dim Target As Range     'target range object to loop through
    Dim block As Range      'each smaller area of the target to loop through
    
    'see if we have a valid selection
    If TypeName(Selection) = "Range" Then
        'set the target to the current selection
        Set Target = Selection
        
        'see if its just a single cell
        If Target.Cells.Count = 1 Then
            'see if we're in a table and grow
            If IsCellInTable(Target) And noTableGrow = False Then
            'make sure the table has rows
                If Target.ListObject.ListRows.Count > 1 Then
                    'get the column range and fill it
                    Set Target = Target.ListObject.ListColumns(Target.Column - Target.ListObject.DataBodyRange.Column + 1).DataBodyRange
                End If
            End If
        End If
        
        'loop through all the selection ranges
        For Each block In Target.Areas
            'populate the cells
            LoopCellsPopulator block, iType
        Next block
    
    Else
        'not a valid range
    End If
    
End Sub

'performs the action on the range passed in
Sub LoopCellsPopulator(oRange As Range, iType As ActionOnCell)
    Dim cell As Range
    
    'loop through the cells
    For Each cell In oRange
        Select Case iType
            'date picker
            Case Is = ActionOnCell.Date_Picker
                On Error GoTo setcellerror
                cell = GetDatePicked
                On Error GoTo 0
        End Select
    Next cell

    Exit Sub
    
setcellerror:
    
    'can check for specific errors here
    If cell.Locked Then MsgBox "Cell is protected from changes.", vbOKOnly, "Date Picker"
    
End Sub

'called for each cell the date picker is putting a value in
Private Function GetDatePicked() As Date
    GetDatePicked = datePicked
End Function

'returns true if active cell is in a table and false if it isn't.
Function IsCellInTable(Target As Range) As Boolean

    On Error Resume Next
    
    'check to see if there is a table name
    IsCellInTable = (Target.ListObject.Name <> "")
    
    On Error GoTo 0
    
End Function

'returns the number of days in a month
'Function daysInMonth(theDate As Date)
'    daysInMonth = day(DateSerial(Year(theDate), Month(theDate) + 1, 1) - 1)
'End Function

'makes sure the date picker manager is loaded
Sub ensureDPManager()
    If g_oDP Is Nothing Then Set g_oDP = New DatePickerManager
End Sub

'loads the global settings
Sub LoadGlobalSettings()
    
    'show on right click menu
    fShowDPRightClick = VBA.GetSetting("samradapps_datepicker", "ribbon", "fShowDPRightClick", True)
    
    'show in cell
    fShowDPInGrid = VBA.GetSetting("samradapps_datepicker", "ribbon", "fShowDPInGrid", True)
    
    'update right click menus
    updateRightClickMenu
    
    'get the screen height
    getScreenHeight
    
    'make sure the icon exists
    CreateDPIcon
End Sub

General
Stream Path:datepickerform
VBA File Name:datepickerform
Stream Size:-1
Data ASCII:
Data Raw:
Attribute VB_Name = "datepickerform"
Attribute VB_Base = "0{3C78821A-383B-4A45-9982-DBC74EB6A17E}{28BCA504-84B0-4B16-950E-B8D24AF28465}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False
Option Explicit

Dim cHighlight As Integer       'current day that has the highlight
Dim c1Highlight_Picker As Integer 'current picker highlight

'click on the month picker
Private Sub monthTitle_Click()

    'set the special highlight
    highlightPicker = cMonth
    
    'reset the current highlight
    c1Highlight_Picker = 0
    
    'show the picker
    toggleMonthPicker
    
End Sub

'click on the year picker
Private Sub yearTitle_Click()

    'set the special highlight
    highlightPicker = cYear
    
    'reset the current highlight
    c1Highlight_Picker = 0
    
    'show the picker
    toggleYearPicker
    
End Sub

'next month button click
Public Sub nextMonthButton_Click()
    
    If pickerMode = 0 Then
        'move the month by one
        cMonth = cMonth + 1
        
        'make sure its a valid month
        If cMonth > 12 Then
            cMonth = 1
            cYear = cYear + 1
        End If
        
        'populate the calendar
        populateDatePickerDays
    
    ElseIf pickerMode = 2 Then
        'move to the next set of picker years
        pickerYearsOffset = pickerYearsOffset + 3
        
        'update the picker
        populatePickerYears
    End If
    
End Sub

'previous month button click
Public Sub prevMonthButton_Click()

    If pickerMode = 0 Then
        'move the month by one
        cMonth = cMonth - 1
        
        'make sure its a valid month
        If cMonth < 1 Then
            cMonth = 12
            cYear = cYear - 1
        End If
        
        'populate the calendar
        populateDatePickerDays
    
    ElseIf pickerMode = 2 Then
        'move to previous set of picker years
        pickerYearsOffset = pickerYearsOffset - 3
        
        'update the picker
        populatePickerYears
    End If
    
End Sub

Private Sub UserForm_Initialize()
    
    'get rid of the title bar
    removeCaption Me
    
    'once the borders are gone, we need to resize it to fit the content
    Me.Width = redBG.Width
    Me.Height = barHeight.Height
        
    'init the weekday names
    populateWeekdayNames
    
    'populate the calendar
    populateDatePickerDays
    
    'set the current date and time
    todayButton.Caption = VBA.WeekdayName(VBA.Weekday(VBA.Date, vbSunday)) & ", " & VBA.MonthName(VBA.Month(VBA.Date)) & " " & VBA.day(VBA.Date) & ", " & VBA.Year(VBA.Date)
    timeButton.Caption = VBA.Time
    
    'default the mode
    setPickerMode 0
    
    'start clock timer
    StartTimer
    
End Sub

'processes the mouse move highlight
Sub process2MM(day)

    'see if there is an active highlight
    If cHighlight <> 0 Then
        'see if we need to highlight something else
        If cHighlight <> day Then
            'remove the current highlight
            If cHighlight <= 67 Then
                'remove current highlight
                Me.Controls("daybg" & cHighlight).BackColor = "16777215"
                
                'check to see if its a special date
                specialHighlight Me.Controls("daybg" & cHighlight)
            ElseIf cHighlight = 68 Then
                'insert today button
                datetimebg.BackColor = "16777215"
            ElseIf cHighlight = 69 Then
                'month title caption
                monthTitle.Font.Underline = False
            ElseIf cHighlight = 70 Then
                'year title caption
                yearTitle.Font.Underline = False
            End If
        End If
    End If
    
    'see if we need to apply a new highlight
    If day > 0 Then
        'need to apply new highlight
        If day <= 67 Then
            Me.Controls("daybg" & day).BackColor = "14737632"
        ElseIf day = 68 Then
            'insert today button
            datetimebg.BackColor = "14737632"
        ElseIf day = 69 Then
            'month title caption
            monthTitle.Font.Underline = True
        ElseIf day = 70 Then
            'year title caption
            yearTitle.Font.Underline = True
        End If
        
        'store that its highlighted
        cHighlight = day
    End If
    
End Sub

'process the mouse move with the picker UI
Private Sub process1MMpicker(itemIndex As Integer)
    
    'see if there is an active highlight
    If c1Highlight_Picker <> 0 Then
        'see if we need to highlight something else
        If c1Highlight_Picker <> itemIndex Then
            'remove current highlight
            Me.Controls("mybg" & c1Highlight_Picker).BackColor = "16777215"
            
            'check to see if we should highlight
            specialHighlight Me.Controls("mybg" & c1Highlight_Picker), True
        End If
    End If
    
    'see if we need to apply a new highlight
    If itemIndex > 0 Then
        Me.Controls("mybg" & itemIndex).BackColor = "14737632"
        c1Highlight_Picker = itemIndex
    End If
    
End Sub

'on userform mouse move clear the highlights
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    process2MM 0
End Sub

'on header mouse move clear the highlights
Private Sub redBG_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    process2MM 0
End Sub

'*****************************************
'bunch of mouse click handling for the days
'*****************************************
Private Sub day11_Click(): dayPicked 11: End Sub
Private Sub day12_Click(): dayPicked 12: End Sub
Private Sub day13_Click(): dayPicked 13: End Sub
Private Sub day14_Click(): dayPicked 14: End Sub
Private Sub day15_Click(): dayPicked 15: End Sub
Private Sub day16_Click(): dayPicked 16: End Sub
Private Sub day17_Click(): dayPicked 17: End Sub
Private Sub daybg11_Click(): dayPicked 11: End Sub
Private Sub daybg12_Click(): dayPicked 12: End Sub
Private Sub daybg13_Click(): dayPicked 13: End Sub
Private Sub daybg14_Click(): dayPicked 14: End Sub
Private Sub daybg15_Click(): dayPicked 15: End Sub
Private Sub daybg16_Click(): dayPicked 16: End Sub
Private Sub daybg17_Click(): dayPicked 17: End Sub
Private Sub day21_Click(): dayPicked 21: End Sub
Private Sub day22_Click(): dayPicked 22: End Sub
Private Sub day23_Click(): dayPicked 23: End Sub
Private Sub day24_Click(): dayPicked 24: End Sub
Private Sub day25_Click(): dayPicked 25: End Sub
Private Sub day26_Click(): dayPicked 26: End Sub
Private Sub day27_Click(): dayPicked 27: End Sub
Private Sub daybg21_Click(): dayPicked 21: End Sub
Private Sub daybg22_Click(): dayPicked 22: End Sub
Private Sub daybg23_Click(): dayPicked 23: End Sub
Private Sub daybg24_Click(): dayPicked 24: End Sub
Private Sub daybg25_Click(): dayPicked 25: End Sub
Private Sub daybg26_Click(): dayPicked 26: End Sub
Private Sub daybg27_Click(): dayPicked 27: End Sub
Private Sub day31_Click(): dayPicked 31: End Sub
Private Sub day32_Click(): dayPicked 32: End Sub
Private Sub day33_Click(): dayPicked 33: End Sub
Private Sub day34_Click(): dayPicked 34: End Sub
Private Sub day35_Click(): dayPicked 35: End Sub
Private Sub day36_Click(): dayPicked 36: End Sub
Private Sub day37_Click(): dayPicked 37: End Sub
Private Sub daybg31_Click(): dayPicked 31: End Sub
Private Sub daybg32_Click(): dayPicked 32: End Sub
Private Sub daybg33_Click(): dayPicked 33: End Sub
Private Sub daybg34_Click(): dayPicked 34: End Sub
Private Sub daybg35_Click(): dayPicked 35: End Sub
Private Sub daybg36_Click(): dayPicked 36: End Sub
Private Sub daybg37_Click(): dayPicked 37: End Sub
Private Sub day41_Click(): dayPicked 41: End Sub
Private Sub day42_Click(): dayPicked 42: End Sub
Private Sub day43_Click(): dayPicked 43: End Sub
Private Sub day44_Click(): dayPicked 44: End Sub
Private Sub day45_Click(): dayPicked 45: End Sub
Private Sub day46_Click(): dayPicked 46: End Sub
Private Sub day47_Click(): dayPicked 47: End Sub
Private Sub daybg41_Click(): dayPicked 41: End Sub
Private Sub daybg42_Click(): dayPicked 42: End Sub
Private Sub daybg43_Click(): dayPicked 43: End Sub
Private Sub daybg44_Click(): dayPicked 44: End Sub
Private Sub daybg45_Click(): dayPicked 45: End Sub
Private Sub daybg46_Click(): dayPicked 46: End Sub
Private Sub daybg47_Click(): dayPicked 47: End Sub
Private Sub day51_Click(): dayPicked 51: End Sub
Private Sub day52_Click(): dayPicked 52: End Sub
Private Sub day53_Click(): dayPicked 53: End Sub
Private Sub day54_Click(): dayPicked 54: End Sub
Private Sub day55_Click(): dayPicked 55: End Sub
Private Sub day56_Click(): dayPicked 56: End Sub
Private Sub day57_Click(): dayPicked 57: End Sub
Private Sub daybg51_Click(): dayPicked 51: End Sub
Private Sub daybg52_Click(): dayPicked 52: End Sub
Private Sub daybg53_Click(): dayPicked 53: End Sub
Private Sub daybg54_Click(): dayPicked 54: End Sub
Private Sub daybg55_Click(): dayPicked 55: End Sub
Private Sub daybg56_Click(): dayPicked 56: End Sub
Private Sub daybg57_Click(): dayPicked 57: End Sub
Private Sub day61_Click(): dayPicked 61: End Sub
Private Sub day62_Click(): dayPicked 62: End Sub
Private Sub day63_Click(): dayPicked 63: End Sub
Private Sub day64_Click(): dayPicked 64: End Sub
Private Sub day65_Click(): dayPicked 65: End Sub
Private Sub day66_Click(): dayPicked 66: End Sub
Private Sub day67_Click(): dayPicked 67: End Sub
Private Sub daybg61_Click(): dayPicked 61: End Sub
Private Sub daybg62_Click(): dayPicked 62: End Sub
Private Sub daybg63_Click(): dayPicked 63: End Sub
Private Sub daybg64_Click(): dayPicked 64: End Sub
Private Sub daybg65_Click(): dayPicked 65: End Sub
Private Sub daybg66_Click(): dayPicked 66: End Sub
Private Sub daybg67_Click(): dayPicked 67: End Sub
Private Sub timeButton_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): nowPicked 68, Button: End Sub
Private Sub todayButton_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): nowPicked 68, Button: End Sub
Private Sub datetimebg_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): nowPicked 68, Button: End Sub

'*****************************************
'bunch of mouse moves for the highlights
'*****************************************
Private Sub day11_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 11: End Sub
Private Sub day12_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 12: End Sub
Private Sub day13_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 13: End Sub
Private Sub day14_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 14: End Sub
Private Sub day15_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 15: End Sub
Private Sub day16_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 16: End Sub
Private Sub day17_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 17: End Sub
Private Sub daybg11_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 11: End Sub
Private Sub daybg12_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 12: End Sub
Private Sub daybg13_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 13: End Sub
Private Sub daybg14_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 14: End Sub
Private Sub daybg15_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 15: End Sub
Private Sub daybg16_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 16: End Sub
Private Sub daybg17_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 17: End Sub
Private Sub day21_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 21: End Sub
Private Sub day22_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 22: End Sub
Private Sub day23_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 23: End Sub
Private Sub day24_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 24: End Sub
Private Sub day25_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 25: End Sub
Private Sub day26_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 26: End Sub
Private Sub day27_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 27: End Sub
Private Sub daybg21_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 21: End Sub
Private Sub daybg22_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 22: End Sub
Private Sub daybg23_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 23: End Sub
Private Sub daybg24_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 24: End Sub
Private Sub daybg25_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 25: End Sub
Private Sub daybg26_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 26: End Sub
Private Sub daybg27_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 27: End Sub
Private Sub day31_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 31: End Sub
Private Sub day32_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 32: End Sub
Private Sub day33_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 33: End Sub
Private Sub day34_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 34: End Sub
Private Sub day35_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 35: End Sub
Private Sub day36_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 36: End Sub
Private Sub day37_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 37: End Sub
Private Sub daybg31_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 31: End Sub
Private Sub daybg32_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 32: End Sub
Private Sub daybg33_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 33: End Sub
Private Sub daybg34_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 34: End Sub
Private Sub daybg35_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 35: End Sub
Private Sub daybg36_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 36: End Sub
Private Sub daybg37_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 37: End Sub
Private Sub day41_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 41: End Sub
Private Sub day42_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 42: End Sub
Private Sub day43_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 43: End Sub
Private Sub day44_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 44: End Sub
Private Sub day45_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 45: End Sub
Private Sub day46_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 46: End Sub
Private Sub day47_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 47: End Sub
Private Sub daybg41_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 41: End Sub
Private Sub daybg42_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 42: End Sub
Private Sub daybg43_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 43: End Sub
Private Sub daybg44_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 44: End Sub
Private Sub daybg45_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 45: End Sub
Private Sub daybg46_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 46: End Sub
Private Sub daybg47_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 47: End Sub
Private Sub day51_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 51: End Sub
Private Sub day52_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 52: End Sub
Private Sub day53_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 53: End Sub
Private Sub day54_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 54: End Sub
Private Sub day55_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 55: End Sub
Private Sub day56_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 56: End Sub
Private Sub day57_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 57: End Sub
Private Sub daybg51_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 51: End Sub
Private Sub daybg52_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 52: End Sub
Private Sub daybg53_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 53: End Sub
Private Sub daybg54_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 54: End Sub
Private Sub daybg55_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 55: End Sub
Private Sub daybg56_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): process2MM 

General
Stream Path:PROJECT
CLSID:
File Type:ASCII text, with CRLF line terminators
Stream Size:988
Entropy:5.294832510323267
Base64 Encoded:True
Data ASCII:I D = " { 1 2 3 A 0 F E 7 - 9 A 4 A - 4 7 0 4 - 9 3 6 9 - 1 4 A E 6 3 E D E 8 E 6 } " . . D o c u m e n t = T h i s W o r k b o o k / & H 0 0 0 0 0 0 0 0 . . M o d u l e = s h a r e d _ c o d e . . M o d u l e = d p _ c o r e . . P a c k a g e = { A C 9 F 2 F 9 0 - E 8 7 7 - 1 1 C E - 9 F 6 8 - 0 0 A A 0 0 5 7 4 A 4 F } . . B a s e C l a s s = d a t e p i c k e r f o r m . . M o d u l e = a p i _ t i t l e _ m o u s e _ t i m e r . . C l a s s = D a t e P i c k e r M a n a g e r . . M o d u l e = a p i _ s
Data Raw:49 44 3d 22 7b 31 32 33 41 30 46 45 37 2d 39 41 34 41 2d 34 37 30 34 2d 39 33 36 39 2d 31 34 41 45 36 33 45 44 45 38 45 36 7d 22 0d 0a 44 6f 63 75 6d 65 6e 74 3d 54 68 69 73 57 6f 72 6b 62 6f 6f 6b 2f 26 48 30 30 30 30 30 30 30 30 0d 0a 4d 6f 64 75 6c 65 3d 73 68 61 72 65 64 5f 63 6f 64 65 0d 0a 4d 6f 64 75 6c 65 3d 64 70 5f 63 6f 72 65 0d 0a 50 61 63 6b 61 67 65 3d 7b 41 43 39 46
General
Stream Path:PROJECTwm
CLSID:
File Type:data
Stream Size:437
Entropy:3.6361363086045846
Base64 Encoded:False
Data ASCII:T h i s W o r k b o o k . T . h . i . s . W . o . r . k . b . o . o . k . . . s h a r e d _ c o d e . s . h . a . r . e . d . _ . c . o . d . e . . . d p _ c o r e . d . p . _ . c . o . r . e . . . d a t e p i c k e r f o r m . d . a . t . e . p . i . c . k . e . r . f . o . r . m . . . a p i _ t i t l e _ m o u s e _ t i m e r . a . p . i . _ . t . i . t . l . e . _ . m . o . u . s . e . _ . t . i . m . e . r . . . D a t e P i c k e r M a n a g e r . D . a . t . e . P . i . c . k . e . r . M . a . n . a .
Data Raw:54 68 69 73 57 6f 72 6b 62 6f 6f 6b 00 54 00 68 00 69 00 73 00 57 00 6f 00 72 00 6b 00 62 00 6f 00 6f 00 6b 00 00 00 73 68 61 72 65 64 5f 63 6f 64 65 00 73 00 68 00 61 00 72 00 65 00 64 00 5f 00 63 00 6f 00 64 00 65 00 00 00 64 70 5f 63 6f 72 65 00 64 00 70 00 5f 00 63 00 6f 00 72 00 65 00 00 00 64 61 74 65 70 69 63 6b 65 72 66 6f 72 6d 00 64 00 61 00 74 00 65 00 70 00 69 00 63 00
General
Stream Path:VBA/_VBA_PROJECT
CLSID:
File Type:data
Stream Size:19000
Entropy:5.842921099732602
Base64 Encoded:True
Data ASCII:a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . * . \\ . G . { . 0 . 0 . 0 . 2 . 0 . 4 . E . F . - . 0 . 0 . 0 . 0 . - . 0 . 0 . 0 . 0 . - . C . 0 . 0 . 0 . - . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 4 . 6 . } . # . 4 . . . 2 . # . 9 . # . C . : . \\ . P . r . o . g . r . a . m . . F . i . l . e . s . . ( . x . 8 . 6 . ) . \\ . C . o . m . m . o . n . . F . i . l . e . s . \\ . M . i . c . r . o . s . o . f . t . . S . h . a . r . e . d . \\ . V . B . A . \\ . V . B . A . 7 . . . 1 . \\ .
Data Raw:cc 61 b2 00 00 01 00 ff 09 04 00 00 09 04 00 00 e4 04 01 00 00 00 00 00 00 00 00 00 01 00 06 00 02 00 2c 01 2a 00 5c 00 47 00 7b 00 30 00 30 00 30 00 32 00 30 00 34 00 45 00 46 00 2d 00 30 00 30 00 30 00 30 00 2d 00 30 00 30 00 30 00 30 00 2d 00 43 00 30 00 30 00 30 00 2d 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 34 00 36 00 7d 00 23 00 34 00 2e 00 32 00 23 00
General
Stream Path:VBA/__SRP_0
CLSID:
File Type:data
Stream Size:19026
Entropy:4.61146494977996
Base64 Encoded:False
Data ASCII:K * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Raw:93 4b 2a b2 01 00 20 00 00 00 ff ff 00 00 00 00 01 00 02 00 ff ff 00 00 00 00 01 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 00 00 01 00 00 00 03 00 00 00 00 00 01 00 02 00 03 00 00 00 00 00 01 00 00 00 06 00 00 00 00 00 01 00 02 00 06 00 00 00 00 00 01 00 00 00 04 00 00 00 00 00 01 00 02 00 04 00 00 00 00 00 01 00 00 00 08 00 00 00 00 00 01 00 02 00 08 00 00 00 00 00 01 00
General
Stream Path:VBA/__SRP_1
CLSID:
File Type:data
Stream Size:1409
Entropy:3.8271081203425568
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . ~ . . . ~ . . . ~ . . . ~ . . . ~ . . . ~ . . . ~ . . . ~ . . . ~ . . . ~ . . . ~ . . . ~ . . . ~ . . . ~ c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i T y p e . . . . . . . . n o T a b l e G r o w . . . . . . .
Data Raw:72 55 00 01 00 00 80 00 00 00 80 00 00 00 80 00 00 00 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 01 00 00 7e 63 00 00 7f 00 00 00 00 0a 00 00 00 09 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 09 00 00 00 00 00 03 00 09 00 00 00 00 00 11 00 09 00
General
Stream Path:VBA/__SRP_10
CLSID:
File Type:data
Stream Size:648
Entropy:4.119888674215602
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . ~ | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) . . . . . . + . . . . . . . * . . . . . . . , . . . . . . Q * . . . . . . i * . . . . . . * . . . . . . @ . . . . . . . . . . . . . . . . . . . . . . . * . . . . . . . + . . . . . . 1 + . . . . . . Q + . . . . . . y , . . . . . . , . . . . . . i + . . . . . . . . . P . . . . . . 1 : l . . N \\ . \\ . L . . . . . . L : < . . , ` . . . . 6 . . \\ L , . $ . . . . . . . . . M l . @ . . . .
Data Raw:72 55 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 02 00 00 7e 7c 00 00 7f 00 00 00 00 0e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 11 00 08 00 00 00 00 00 10 00 01 00 01 00 11 00 00 00 e1 29 00 00 00 00 00 00 89 2b 00 00 00 00 00 00 09 2a 00 00 00 00 00 00 09 2c 00 00 00 00 00 00 51 2a 00 00 00 00 00 00 69 2a 00 00 00 00 00 00 a9 2a 00 00 00 00 00 00 40 00 00 00 00 00
General
Stream Path:VBA/__SRP_11
CLSID:
File Type:data
Stream Size:105
Entropy:1.9126467465729973
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . . . . . . . . . . ` . . . . . . . . . . . . . . . . . . . n . . . . . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 10 00 ff ff ff ff ff ff ff ff 00 00 00 00 08 00 00 00 04 00 24 00 81 00 00 00 00 00 10 00 00 00 00 60 00 00 fd ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 6e 00 00 7f 00 00 00 00
General
Stream Path:VBA/__SRP_12
CLSID:
File Type:data
Stream Size:276
Entropy:1.9710003874571504
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H . . . . . . . . . . . . . . . . . . . . . . . - . . . . . . - . . . . . . - . . . . . . Y - . . . . . . . . . . 4 . . . - . . . . . . . . . . . . . ! . . . . . . . . . . . . ` . . . . . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 1e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 13 00 48 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 00 00 01 00 81 2d 00 00 00 00 00 00 a9 2d 00 00 00 00 00 00 d1 2d 00 00 00 00 00 00 ff ff ff ff 59 2d 00 00 00 00 00 00 08 00 1c 00 34 00 00 00 f9 2d 00 00 00 00 00 00 99 05 00 00 00 00 01 00 21 2e
General
Stream Path:VBA/__SRP_13
CLSID:
File Type:data
Stream Size:66
Entropy:1.758958702982907
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . . . . . . . . . . n . . . . . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 12 00 ff ff ff ff ff ff ff ff 00 00 00 00 40 00 00 00 04 00 00 00 00 00 00 00 6e 00 00 7f 00 00 00 00
General
Stream Path:VBA/__SRP_14
CLSID:
File Type:data
Stream Size:32854
Entropy:3.2836547374955565
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . j . . . . . . 1 l . . . . . . . k . . . . . . l . . . . . . k . . . . . . . m . . . . . . c . . . . . . m . . . . . . q k . . . . . . . l . . . . . . m . . . . . . . . . . . . . ! . . . . . . . 5 . . . . . . s . . . . . . . t . . . . . . o . . . . . . . p . . . . . . q . . . . . . . . . . . . . 1 t . . . . . . q . . . . . . . . . .
Data Raw:72 55 80 07 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 1e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 15 00 a8 05 00 00 00 00 00 00 e8 00 e8 00 1b 00 00 00 c1 01 00 00 00 00 04 00 21 35 00 00 00 00 00 00 11 0d 00 00 00 00 00 00 d1 00 00 00 00 00 0a 00 81 00 00 00 00 00 0a 00 91 6a 00 00 00 00 00 00 31 6c 00 00 00 00 00 00 01 6b 00 00 00 00 00 00 a1 6c 00 00 00 00
General
Stream Path:VBA/__SRP_15
CLSID:
File Type:data
Stream Size:12884
Entropy:3.266891382263118
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . . . . $ . . . . . . . . . . . . ` . . . . . . . . . . . . . . $ . A . . . . . . . . . . ` . . . . . . . . . . . . . . $ . . . . . . . . . . . ` . . . . . . . . . . . . . . $ . . . . . . . . . . . ` . . . . . . . . . . . . . . $ . . . . . . . . . . . . ` . . . . . . . . . . . . . . ( . A . . . . . . . . . . ` . . . . . . . ) . . . . . . . . . . . . / ( . . . . . . . . . . . ` . . . . . . . 9 . . . . . . . . . . . . & 8 . . . . . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 14 00 ff ff ff ff ff ff ff ff 00 00 00 00 40 02 00 00 04 00 24 00 01 01 00 00 00 00 14 00 00 00 03 60 00 00 98 03 1c 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 1e 24 00 41 01 00 00 00 00 14 00 01 00 03 60 00 00 9c 03 1c 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 1e 24 00
General
Stream Path:VBA/__SRP_16
CLSID:
File Type:data
Stream Size:107
Entropy:1.9789170187363079
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . . . . . . . . . . ` . . . . . . . . . . . . . . . . . . . . . . . . n . . . . . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 17 00 ff ff ff ff ff ff ff ff 00 00 00 00 08 00 00 00 04 00 24 00 81 00 00 00 00 00 17 00 00 00 00 60 00 00 fd ff ff ff ff ff ff ff 91 07 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6e 00 00 7f 00 00 00 00
General
Stream Path:VBA/__SRP_17
CLSID:
File Type:data
Stream Size:84
Entropy:1.9350146163917232
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . ~ | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k . . . . . . .
Data Raw:72 55 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 02 00 00 7e 7c 00 00 7f 00 00 00 00 0e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 16 00 08 00 00 00 00 00 17 00 00 00 00 00 00 00 00 00 ff ff ff ff 04 00 00 12 00 00 6b 00 00 7f 00 00 00 00
General
Stream Path:VBA/__SRP_18
CLSID:
File Type:data
Stream Size:276
Entropy:1.961380742413478
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x . . . . . . - . . . . . . 1 x . . . . . . Y - . . . . . . . . . . 4 . . . - . . . . . . . . . . . . . ! . . . . . . . . . . . . ` . . . . . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 1e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 19 00 08 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 00 00 01 00 09 78 00 00 00 00 00 00 a9 2d 00 00 00 00 00 00 31 78 00 00 00 00 00 00 ff ff ff ff 59 2d 00 00 00 00 00 00 08 00 1c 00 34 00 00 00 f9 2d 00 00 00 00 00 00 99 05 00 00 00 00 01 00 21 2e
General
Stream Path:VBA/__SRP_19
CLSID:
File Type:data
Stream Size:66
Entropy:1.758958702982907
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . . . . . . . . . . n . . . . . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 18 00 ff ff ff ff ff ff ff ff 00 00 00 00 40 00 00 00 04 00 00 00 00 00 00 00 6e 00 00 7f 00 00 00 00
General
Stream Path:VBA/__SRP_2
CLSID:
File Type:data
Stream Size:504
Entropy:2.1191132780976307
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0 . . . . . . . . . . . . . . . I . . . . . . . q . . . . . . . . . . . . . . . ) . . . . . . . Q . . . . . . . y . . . . . . . . . . . . . . . . . 7 . 4 . . . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . ` . . . . . . . . . . . . . . . . . . . . D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . . . . . . I Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 . X .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 1e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 03 00 30 00 00 00 00 00 00 00 01 00 01 00 02 00 00 00 49 01 00 00 00 00 08 00 71 01 00 00 00 00 08 00 01 00 01 00 00 00 01 00 29 0a 00 00 00 00 00 00 51 0a 00 00 00 00 00 00 79 0a 00 00 00 00 00 00 ff ff ff ff 01 0a 00 00 00 00 00 00 08 00 37 00 34 00 00 00 a1 0a
General
Stream Path:VBA/__SRP_3
CLSID:
File Type:data
Stream Size:103
Entropy:2.160201543212218
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . . . . $ . . . . . . . . . . . . ` . . l . . . . . . . . . . . . . . . . . . n . . . . . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 02 00 ff ff ff ff ff ff ff ff 00 00 00 00 40 00 00 00 04 00 24 00 01 01 00 00 00 00 02 00 00 00 03 60 00 00 6c 04 1c 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 1e 00 00 00 00 00 00 6e 00 00 7f 00 00 00 00
General
Stream Path:VBA/__SRP_4
CLSID:
File Type:data
Stream Size:2220
Entropy:3.9998263239431697
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . ~ | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . & . . . $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! . . . . . . . . . . . . . . . . . . . . . ' . . . . . . . o . . . . . . n . . . . . . a n . . . . . . . . . . . . . . n . . . . . . . . . . . . . . . . . . . . Q . . . . . . . r . . . . . . A " . . . . . . ! . . . . . . . r . . . . . . . s . . . . . . 9 s . . . . . . a s . . . . . . i t . . . . . .
Data Raw:72 55 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 02 00 00 7e 7c 00 00 7f 00 00 00 00 0e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 05 00 08 00 00 00 00 00 04 00 15 00 09 00 26 00 00 00 e1 24 00 00 00 00 00 00 a9 00 00 00 00 00 04 00 81 00 00 00 00 00 04 00 f9 1e 00 00 00 00 00 00 09 20 00 00 00 00 00 00 c1 20 00 00 00 00 00 00 21 16 00 00 00 00 00 00 f9 15 00 00 00 00
General
Stream Path:VBA/__SRP_5
CLSID:
File Type:data
Stream Size:1184
Entropy:2.7919628163087324
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . . . . , . . . . . . . . . . . p . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . p . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0 . . . . . . . . . . p . . . . . . . . . . . . . . . . . . . . . ! . . . . . . . . . . . . . . . ( . Q . . . . . . . . . . p . . . . . . . . . . . . . . . . . . . ( . . . . . . . . . . p . . . . . . . . . . . . . . . . . . . , . . . . . . . . < . . p . . . . . . A
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 04 00 ff ff ff ff ff ff ff ff 00 00 00 00 24 00 00 00 04 00 2c 00 09 1c 00 00 00 00 00 00 98 01 00 70 08 00 fe ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 a9 03 00 00 00 00 01 00 c9 03 00 00 00 00 01 00 00 00 00 00 08 10 10 2c 00 d1 1c 00 00 00 00 00 00 b8 01 00 70 08 00 fe ff ff ff ff
General
Stream Path:VBA/__SRP_6
CLSID:
File Type:data
Stream Size:848
Entropy:3.673363233298219
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . ~ | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n . . . . . . n . . . . . . . . . . . . . . . . . . . . . a . . . . . . . s . . . . . . 9 / . . . . . . 0 . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . 5 . . . . . . . 0 . . . . . . . . . . . . . . . . K . . . l . . . . . . . z . . . ^ . . . . q t < l t . . . . . x . . . l . . . . . . . v . . . q x . . . . . . . . . . . b . . . . . . $ . . . . . . . q . . . . . . . . $ . .
Data Raw:72 55 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 02 00 00 7e 7c 00 00 7f 00 00 00 00 0e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 07 00 08 00 00 00 00 00 06 00 0c 00 03 00 0d 00 00 00 a9 6e 00 00 00 00 00 00 d1 6e 00 00 00 00 00 00 09 1c 00 00 00 00 00 00 d1 00 00 00 00 00 06 00 61 2e 00 00 00 00 00 00 81 73 00 00 00 00 00 00 39 2f 00 00 00 00 00 00 e1 30 00 00 00 00
General
Stream Path:VBA/__SRP_7
CLSID:
File Type:data
Stream Size:778
Entropy:2.804189222342877
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . H . . p . . . . . . . . . . . . . . . . . . . . . . . . . . . , . a . . . . . . . h . . p . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 . 9 / . . . . . . . . p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 . . 0 . . . . . . . . p . . . . . . ! . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " ( . 0 . . . . . . . . p . . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 06 00 ff ff ff ff ff ff ff ff 00 00 00 00 14 00 00 00 04 00 2c 00 09 1c 00 00 00 00 00 00 48 01 00 70 08 00 fe ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 a9 03 00 00 00 00 01 00 c9 03 00 00 00 00 01 00 00 00 00 00 08 10 10 2c 00 61 2e 00 00 00 00 00 00 68 01 00 70 08 00 fe ff ff ff ff
General
Stream Path:VBA/__SRP_8
CLSID:
File Type:data
Stream Size:1748
Entropy:4.22546236195458
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . ~ | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 . . . . . . . 9 ' . . . . . . 8 . . . . . . . ) . . . . . . . < . . . . . . . I . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! . . . . . . . . . . . . . . . . . . . . . A i . . . . . . h . . . . . . . . . . . . . ! . . . . . . . ! u . . . . . . I u . . . . . . q u . . . . . . u . . . . . . u . . . . . . . . . . .
Data Raw:72 55 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 02 00 00 7e 7c 00 00 7f 00 00 00 00 0e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 09 00 08 00 00 00 00 00 08 00 07 00 07 00 20 00 00 00 18 01 00 00 00 00 00 00 09 00 00 00 00 00 0c 00 d1 16 00 00 00 00 00 00 a1 16 00 00 00 00 00 00 39 16 00 00 00 00 00 00 39 27 00 00 00 00 00 00 38 01 00 00 00 00 00 00 29 17 00 00 00 00
General
Stream Path:VBA/__SRP_9
CLSID:
File Type:data
Stream Size:412
Entropy:2.4194672613885397
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . ` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( , . . . . . . . . . . . ` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 4 . . . . . . . . . . . ` . . . . . . . . . . . . . . . . . . . . . . . . . = . . . . . . . ( $ . . . . . . . . . . . ` . . . . . . . . . . . , . ! . . . . . . . . . . ` . . . . . . . . . . . . . . . . . . = . . . . . . . $ . I . . . . . . . . . . ` . . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 08 00 ff ff ff ff ff ff ff ff 00 00 00 00 08 00 00 00 04 00 2c 00 81 00 00 00 00 00 08 00 00 00 00 60 08 00 fd ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 81 00 00 00 00 00 01 00 99 00 00 00 00 00 01 00 04 00 00 00 0b 00 00 00 00 28 a3 2c 00 a9 00 00 00 00 00 08 00 01 00 00 60 08 00 fd
General
Stream Path:VBA/__SRP_a
CLSID:
File Type:data
Stream Size:4318
Entropy:4.317772531832211
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . ~ | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B . . . I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h . . . . . . Y h . . . . . . 1 h . . . . . . h . . . . . . ! . . . . . . . . . . . . . . . . . . . . . i . . . . . . ! j . . . . . . j . . . . . . . k . . . . . . q k . . . . . . . . . . . . . 5 . . . . . . . . . . . . . l . . . . . . o . . . . . . o . . . . . . . p . . . . . . n . . . . . . p . . . . . . 1 l
Data Raw:72 55 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 02 00 00 7e 7c 00 00 7f 00 00 00 00 0e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 0b 00 08 00 00 00 00 00 0a 00 14 00 14 00 42 00 00 00 49 01 00 00 00 00 08 00 01 11 00 00 00 00 00 00 d1 00 00 00 00 00 06 00 b8 05 00 00 00 00 00 00 09 00 00 00 00 00 14 00 81 68 00 00 00 00 00 00 59 68 00 00 00 00 00 00 31 68 00 00 00 00
General
Stream Path:VBA/__SRP_b
CLSID:
File Type:data
Stream Size:918
Entropy:2.4262999356477986
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . $ . . . . . . . . . . . ` . . . . . . . . . . . 4 . . . . . . . . . . . ` . . . . . . ) . . . . . . . Q . . . . . . . . . . . . . . . . = . . . . . . . . $ . . . . . . . . . . . ` . . . . . . . . . . . $ . . . . . . . . . . . ` . . . . . . . . . . . $ . ! . . . . . . . . . . ` . . . . . . . . . . . , . I . . . . . . . . . . ` . . . . . . i . . . . . . . y . . . . . . . . . . . . & & , . q . . . . . . . . . . ` . . . . . . i .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 0a 00 ff ff ff ff ff ff ff ff 00 00 00 00 2c 00 00 00 04 00 24 00 81 00 00 00 00 00 0a 00 00 00 00 60 00 00 fd ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 34 00 a9 00 00 00 00 00 0a 00 01 00 00 60 08 00 fd ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 29 01 00 00 00 00 01
General
Stream Path:VBA/__SRP_c
CLSID:
File Type:data
Stream Size:2634
Entropy:3.4717881769840537
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! . . . . . . . . . . . . . . . . . . . . . < . . . . . . . A i . . . . . . h . . . . . . i . . . . . . h . . . . . . Q * . . . . . . . . . . . . . . i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . . 8 . . . ) . . . . . . . . . . . . . . Q . . . . . . . . . . . . . . . . . . . . . . . . = . @ .
Data Raw:72 55 00 01 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 1e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 0d 00 e8 00 00 00 00 00 00 00 10 00 10 00 0f 00 00 00 21 16 00 00 00 00 00 00 f9 15 00 00 00 00 00 00 d1 15 00 00 00 00 00 00 01 11 00 00 00 00 00 00 21 01 00 00 00 00 0a 00 c1 01 00 00 00 00 0a 00 e9 01 00 00 00 00 0a 00 3c 01 00 00 00 00 00 00 41 69 00 00 00 00
General
Stream Path:VBA/__SRP_d
CLSID:
File Type:data
Stream Size:845
Entropy:2.9293712103345
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L . . . . . $ . . . . . . . . . . . ` . . $ . . . . . . . . . . . . $ . . . . . . . . . . . ` . . ( . . . . . . . . . . . . ( . 9 . . . . . . . . . . h . . . . . . . . . . . . . / ( . y . . . . . . . . . . h . . ! . . . . . . . . . . . . . . . . . . . $ . . . . . . . . . . . ` . . , . . . . . . . . . . $ . . . . . . . . . . . ` . . 0 . . . . . . . . . . $ . 9 . . . . . . . . . . ` . . 4 . . . . . . . . . . $ . y . . . . . . . . . . ` . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 0c 00 ff ff ff ff ff ff ff ff 00 00 00 00 4c 00 00 00 04 00 24 00 b9 01 00 00 00 00 0c 00 01 00 03 60 00 00 24 00 0c 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 1e 24 00 f9 01 00 00 00 00 0c 00 02 00 03 60 00 00 28 00 10 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 1e 28 00
General
Stream Path:VBA/__SRP_e
CLSID:
File Type:data
Stream Size:2044
Entropy:3.2888417207528526
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . ~ | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 . . . . . . . . . . . . . . . . . . . . . ' . . . . . . ! . . . . . . . . . . . . . . . . . . . . . ' . . . . . . . . . . . . . ! . . . . . . . . . . . . . . . ( . . . . . . . . . . . . . a ( . . . . . . ( . . . . . . ( . . . . . . ( . . . . . . @ . . . . . . . . . . . . . . . . . . . . . . . . ) . . . . . . ! ) . . . . . . y ) . . . . . . ) . . . . . . 0 . . . . . . . . . . . . . .
Data Raw:72 55 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 02 00 00 7e 7c 00 00 7f 00 00 00 00 0e 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 00 00 0f 00 08 00 00 00 00 00 0e 00 11 00 11 00 1a 00 00 00 38 01 00 00 00 00 00 00 81 00 00 00 00 00 0e 00 d1 00 00 00 00 00 0e 00 a9 27 00 00 00 00 00 00 21 16 00 00 00 00 00 00 f9 15 00 00 00 00 00 00 d1 15 00 00 00 00 00 00 d1 27 00 00 00 00
General
Stream Path:VBA/__SRP_f
CLSID:
File Type:data
Stream Size:970
Entropy:2.6437998291552804
Base64 Encoded:False
Data ASCII:r U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . . . . . . . . . . ` . . . . . . . . . . . , . . . . . . . . . . . ` . . . . . . . . . . . . . . . . . . = . . . . . . . $ . . . . . . . . . . . ` . . . . . . . . . . . , . . . . . . . . . . . ` . . . . . . . . . . . . . . . . . . = . . . . . . . , . ! . . . . . . . . . . ` . . . . . . . . . . . . . . . . . . = . . . . . . . $ . I . . . . . . . . . . ` . . . . . . . . . . . , . q . . . . . . . . . . ` . . . . . . ! . . .
Data Raw:72 55 80 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 00 00 0e 00 ff ff ff ff ff ff ff ff 00 00 00 00 08 00 00 00 04 00 24 00 81 00 00 00 00 00 0e 00 00 00 00 60 00 00 fd ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 2c 00 a9 00 00 00 00 00 0e 00 01 00 00 60 04 00 fd ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 f1 02 00 00 00 00 01
General
Stream Path:VBA/dir
CLSID:
File Type:data
Stream Size:1443
Entropy:6.867436221792509
Base64 Encoded:True
Data ASCII:. . . . . . . . . 0 V J . . . . H . . P . . . H . . . . . . . . . . . V B A P r @ o j e c t . . . . T . @ . . . . . = . . . + . r . . . . . . . . + s e . . . . J < . . . . . . 9 s t d o l . e > . . s . t . d . . o . l . e . . . . h . % ^ . . * \\ G . { 0 0 0 2 0 4 3 0 - . . . . C . . . . . . . 0 0 4 6 } # 2 . . 0 # 0 # C : \\ W . i n d o w s \\ S . y s W O W 6 4 \\ . . e 2 . t l b # O . L E A u t o m a t i o n . 0 . . E O f f i c E O . f . i . c E . . . E 2 D F 8 D . 0 4 C - 5 B F A . - 1 0 1 B - B D E 5 E
Data Raw:01 9f b5 80 01 00 04 00 00 00 01 00 30 56 4a 02 90 01 d0 02 02 48 09 00 50 14 11 06 48 03 00 02 00 8c e4 04 04 04 00 0a 00 1c 56 42 41 50 72 40 6f 6a 65 63 74 05 00 1a 00 54 00 40 02 0a 06 02 0a 3d 02 0a 07 2b 02 72 01 14 08 06 12 09 02 12 89 2b a0 73 65 01 00 0c 02 4a 3c 02 0a 04 16 00 01 39 73 74 64 6f 6c 04 65 3e 02 19 73 00 74 00 64 00 00 6f 00 6c 00 65 00 0d 14 00 68 00 25 5e
General
Stream Path:datepickerform/\x1CompObj
CLSID:
File Type:data
Stream Size:97
Entropy:3.6106491830605214
Base64 Encoded:False
Data ASCII:. . . . . . . . . . . . . . . . . . . . . . . . . . M i c r o s o f t F o r m s 2 . 0 F o r m . . . . . E m b e d d e d O b j e c t . . . . . 9 q . . . . . . . . . . . .
Data Raw:01 00 fe ff 03 0a 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 19 00 00 00 4d 69 63 72 6f 73 6f 66 74 20 46 6f 72 6d 73 20 32 2e 30 20 46 6f 72 6d 00 10 00 00 00 45 6d 62 65 64 64 65 64 20 4f 62 6a 65 63 74 00 00 00 00 00 f4 39 b2 71 00 00 00 00 00 00 00 00 00 00 00 00
General
Stream Path:datepickerform/\x3VBFrame
CLSID:
File Type:ASCII text, with CRLF line terminators
Stream Size:336
Entropy:4.583556996817654
Base64 Encoded:True
Data ASCII:V E R S I O N 5 . 0 0 . . B e g i n { C 6 2 A 6 9 F 0 - 1 6 D C - 1 1 C E - 9 E 9 8 - 0 0 A A 0 0 5 7 4 A 4 F } d a t e p i c k e r f o r m . . C a p t i o n = " d a t e p i c k e r " . . C l i e n t H e i g h t = 1 0 2 2 0 . . C l i e n t L e f t = 1 2 0 . . C l i e n t T o p = 4 6 0 . . C l i e n t W i d t h = 6 4 5 0 . . S h o w M o d a l = 0 '
Data Raw:56 45 52 53 49 4f 4e 20 35 2e 30 30 0d 0a 42 65 67 69 6e 20 7b 43 36 32 41 36 39 46 30 2d 31 36 44 43 2d 31 31 43 45 2d 39 45 39 38 2d 30 30 41 41 30 30 35 37 34 41 34 46 7d 20 64 61 74 65 70 69 63 6b 65 72 66 6f 72 6d 20 0d 0a 20 20 20 43 61 70 74 69 6f 6e 20 20 20 20 20 20 20 20 20 3d 20 20 20 22 64 61 74 65 70 69 63 6b 65 72 22 0d 0a 20 20 20 43 6c 69 65 6e 74 48 65 69 67 68 74
General
Stream Path:datepickerform/f
CLSID:
File Type:TTComp archive data, binary, 1K dictionary
Stream Size:4756
Entropy:3.97974867012293
Base64 Encoded:False
Data ASCII:. . ( . . . . . . . . . . . V . . . . } . . q , . . b F . . . . . . . . . . . R . . . . K Q . . . . . . L . . . C a l i b r i . . g . . . < . . . . . . . . ( . . . . . . . . . . . 2 . . . 8 . . . . . . . r e d B G r i s . . . . . . . . . . ( . . . . . . . . . . . 2 . . . < . . . . . . . d a y b g 1 1 . . . . . . . . . ( . . . . . . . . . . . 2 . . . < . . . . . . . d a y b g 1 2 s . . . . . . . . , . . . . . . . . . . . 2 . . . H . . . . . . . m o n t h T i t l e . . . . . . . . . . ( . . . . . . . . . . .
Data Raw:00 04 28 00 0a 0e 10 0c ff ff ff 00 a8 00 00 00 00 00 ff ff 56 01 00 00 00 7d 00 00 71 2c 00 00 62 46 00 00 00 00 00 00 00 00 00 00 03 52 e3 0b 91 8f ce 11 9d e3 00 aa 00 4b b8 51 01 00 00 00 90 01 08 4c 01 00 07 43 61 6c 69 62 72 69 00 00 67 00 00 00 3c 12 00 00 00 e7 01 00 00 00 28 00 f5 01 00 00 05 00 00 80 02 00 00 00 32 00 00 00 38 00 00 00 01 00 15 00 72 65 64 42 47 72 69 73
General
Stream Path:datepickerform/i140/\x1CompObj
CLSID:
File Type:data
Stream Size:112
Entropy:4.601154491099888
Base64 Encoded:False
Data ASCII:. . . . . . . n ` . . . ` . . . . . M i c r o s o f t F o r m s 2 . 0 F r a m e . . . . . E m b e d d e d O b j e c t . . . . . F o r m s . F r a m e . 1 . 9 q . . . . . . . . . . . .
Data Raw:01 00 fe ff 03 0a 00 00 ff ff ff ff 20 20 18 6e 60 f4 ce 11 9b cd 00 aa 00 60 8e 01 1a 00 00 00 4d 69 63 72 6f 73 6f 66 74 20 46 6f 72 6d 73 20 32 2e 30 20 46 72 61 6d 65 00 10 00 00 00 45 6d 62 65 64 64 65 64 20 4f 62 6a 65 63 74 00 0e 00 00 00 46 6f 72 6d 73 2e 46 72 61 6d 65 2e 31 00 f4 39 b2 71 00 00 00 00 00 00 00 00 00 00 00 00
General
Stream Path:datepickerform/i140/f
CLSID:
File Type:TTComp archive data, binary, 1K dictionary
Stream Size:1068
Entropy:3.4216698747186007
Base64 Encoded:False
Data ASCII:. . , . J . . . . . . . . . . . . . . ; . . . . } . . ? . . . . . . . . . . . . . . . . . . . . . . c . . ( . . . . . . . . . . 2 . . . D . . . . . . . m y B G 1 . . . . . . . . . . . ( . . . . . . . . . . 2 . . . D . . . . . . . m y B G 2 . . . . . . . . . . . ( . . . . . . . . . . 2 . . . D . . . . . . . m y B G 3 . . . . . . . . . . . ( . . . . . . . . . . 2 . . . D . . . . . . . m y B G 4 . . . . . . D . . . . . ( . . . . . . . . . . 2 . . . D . . . . . . . m y B G 5 . . . . . . D . . . . . ( . . . .
Data Raw:00 04 2c 00 4a 0e 00 0c ff ff ff 00 a8 00 00 00 04 80 00 00 00 00 00 00 3b 00 00 00 00 7d 00 00 3f 20 00 00 c4 1d 00 00 00 00 00 00 00 00 00 00 18 00 00 00 f4 03 00 00 00 98 01 63 00 00 28 00 f5 01 00 00 05 00 00 80 8d 00 00 00 32 00 00 00 44 00 00 00 00 00 15 00 6d 79 42 47 31 00 00 00 a7 01 00 00 a7 01 00 00 00 00 28 00 f5 01 00 00 05 00 00 80 8e 00 00 00 32 00 00 00 44 00 00 00
No network behavior found

Click to jump to process

Click to jump to process

Click to dive into process behavior distribution

Target ID:1
Start time:10:58:01
Start date:24/04/2024
Path:C:\Program Files\Microsoft Office\Office14\EXCEL.EXE
Wow64 process (32bit):false
Commandline:"C:\Program Files\Microsoft Office\Office14\EXCEL.EXE" /dde
Imagebase:0x13f8a0000
File size:28'253'536 bytes
MD5 hash:D53B85E21886D2AF9815C377537BCAC3
Has elevated privileges:true
Has administrator privileges:true
Programmed in:C, C++ or other language
Reputation:high
Has exited:false

No disassembly