From 80981db074febbe7a39ae9cb8f180b2e5c51b349 Mon Sep 17 00:00:00 2001 From: Teddy-1024 Date: Tue, 14 Jan 2025 09:02:53 +0000 Subject: [PATCH] Initial commit --- original/Worksheet Relationships.xlsm | Bin 0 -> 520779 bytes src/Enumerations.cls | 66 ++ src/Get_Local_Onedrive_Path.bas | 1040 +++++++++++++++++ src/Main.bas | 600 ++++++++++ src/Matrix_Operations.bas | 1474 +++++++++++++++++++++++++ src/Range_Strings.bas | 70 ++ src/String_Operations.bas | 175 +++ src/Validation_Comparison.bas | 204 ++++ src/WS_Access.cls | 853 ++++++++++++++ src/WS_Relation.cls | 276 +++++ 10 files changed, 4758 insertions(+) create mode 100644 original/Worksheet Relationships.xlsm create mode 100644 src/Enumerations.cls create mode 100644 src/Get_Local_Onedrive_Path.bas create mode 100644 src/Main.bas create mode 100644 src/Matrix_Operations.bas create mode 100644 src/Range_Strings.bas create mode 100644 src/String_Operations.bas create mode 100644 src/Validation_Comparison.bas create mode 100644 src/WS_Access.cls create mode 100644 src/WS_Relation.cls diff --git a/original/Worksheet Relationships.xlsm b/original/Worksheet Relationships.xlsm new file mode 100644 index 0000000000000000000000000000000000000000..302bfbe29f99b1be9611465626fec3b81d8b74ce GIT binary patch literal 520779 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

u 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 Sg@FxxsRFy3%@g1U;Qs)bb0r@D literal 0 HcmV?d00001 diff --git a/src/Enumerations.cls b/src/Enumerations.cls new file mode 100644 index 0000000..5b45a47 --- /dev/null +++ b/src/Enumerations.cls @@ -0,0 +1,66 @@ +' Author: Edward Middleton-Smith +' Precision And Research Technology Systems Limited + +' Project: +' Technology: +' Feature: + + + +' NOTES + + + +' METHOD LAYOUT COMMENTS +' FUNCTION +' ARGUMENTS +' PROCESSING ACCELERATION +' CONSTANTS +' VARIABLE DECLARATION +' ARGUMENT VALIDATION +' VARIABLE INSTANTIATION +' METHODS +' RETURNS +' ERROR HANDLING +' PROCESSING DECELARATION + + + +' MODULE INITIALISATION +' Set array start index to 1 to match spreadsheet indices +Option Base 1 +' Forced Variable Declaration +Option Explicit + + +' Worksheet orientation +Enum orientation + ColumnHeaders = 0 + RowHeaders = 1 +End Enum + + +' Array search direction +Enum direction + x = 1 + y = 2 + Z = 3 +End Enum + + +' Different search direction +Enum dir_traverse + FORWARDS = 1 + BACKWARDS = -1 +End Enum + + +' Customer account status +Enum OverdueStatus + UNDUE = 0 + OVERDUE = 1 + SUPEROVERDUE = 2 +End Enum + + + diff --git a/src/Get_Local_Onedrive_Path.bas b/src/Get_Local_Onedrive_Path.bas new file mode 100644 index 0000000..6229b2b --- /dev/null +++ b/src/Get_Local_Onedrive_Path.bas @@ -0,0 +1,1040 @@ + +'Attribute VB_Name = "GetLocalOneDrivePath" +' Cross-platform VBA Function to get the local path of OneDrive/SharePoint +' synchronized Microsoft Office files (Works on Windows and on macOS) +' +' Author: Guido Witt-Dörring +' Created: 2022/07/01 +' Updated: 2023/06/29 +' License: MIT +' +' ———————————————————————————————————————————————————————————————— +' https://gist.github.com/guwidoe/038398b6be1b16c458365716a921814d +' https://stackoverflow.com/a/73577057/12287457 +' ———————————————————————————————————————————————————————————————— +' +' Copyright (c) 2023 Guido Witt-Dörring +' +' MIT License: +' Permission is hereby granted, free of charge, to any person obtaining a copy +' of this software and associated documentation files (the "Software"), to +' deal in the Software without restriction, including without limitation the +' rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +' sell copies of the Software, and to permit persons to whom the Software is +' furnished to do so, subject to the following conditions: +' +' The above copyright notice and this permission notice shall be included in +' all copies or substantial portions of the Software. +' +' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +' IN THE SOFTWARE. +' +'——————————————————————————————————————————————————————————————————————————————— +' COMMENTS REGARDING THE IMPLEMENTATION: +' 1) Background and Alternative +' This function was intended to be written as a single procedure without any +' dependencies, for maximum portability between projects, as it implements a +' functionality that is very commonly needed for many VBA applications +' working inside OneDrive/SharePoint synchronized directories. I followed +' this paradigm because it was not clear to me how complicated this simple +' sounding endeavour would turn out to be. +' Unfortunately, more and more complications arose, and little by little, +' the procedure turned incredibly complicated. I do not condone the coding +' style applied here, and that this is not how I usually write code, +' nevertheless, I'm not open to rewriting this code in a different style, +' because a clean implementation of this algorithm already exists, as pointed +' out in the following. +' +' If you would like to understand the underlying algorithm of how the local +' path can be found with only the Url-path as input, I recommend following +' the much cleaner implementation by Cristian Buse: +' https://github.com/cristianbuse/VBA-FileTools +' We developed the algorithm together and wrote separate implementations +' concurrently. His solution is contained inside a module-level library, +' split into many procedures and using features like private types and API- +' functions, that are not available when trying to create a single procedure +' without dependencies like below. This makes his code more readable. +' +' Both of our solutions are well tested and actively supported with bugfixes +' and improvements, so both should be equally valid choices for use in your +' project. The differences in performance/features are marginal and they can +' often be used interchangeably. If you need more file-system interaction +' functionality, use Cristians library, and if you only need GetLocalPath, +' just copy this function to any module in your project and it will work. +' +' 2) How does this function NOT work? +' Most other solutions for this problem circulating online (A list of most +' can be found here: https://stackoverflow.com/a/73577057/12287457) are using +' one of two approaches, : +' 1. they use the environment variables set by OneDrive: +' - Environ(OneDrive) +' - Environ(OneDriveCommercial) +' - Environ(OneDriveConsumer) +' and replace part of the URL with it. There are many problems with this +' approach: +' 1. They are not being set by OneDrive on MacOS. +' 2. It is unclear exactly which part of the URL needs to be replaced. +' 3. Environment variables can be changed by the user. +' 4. Only there three exist. If more onedrive accounts are logged in, +' they just overwrite the previous ones. +' or, +' 2. they use the mount points OneDrive writes to the registry here: +' - \HKEY_CURRENT_USER\Software\SyncEngines\Providers\OneDrive\ +' this also has several drawbacks: +' 1. The registry is not available on MacOS. +' 2. It's still unclear exactly what part of the URL should be replaced. +' 3. These registry keys can contain mistakes, like for example, when: +' - Synchronizing a folder called "Personal" from someone else's +' personal OneDrive +' - Synchronizing a folder called "Business1" from someone else's +' personal OneDrive and then relogging your own first Business +' OneDrive account +' - Relogging you personal OneDrive can change the "CID" property +' from a folderID formatted cid (e.g. 3DEA8A9886F05935!125) to a +' regular private cid (e.g. 3dea8a9886f05935) for synced folders +' from other people's OneDrives +' +' For these reasons, this solution uses a completely different approach to +' solve this problem. +' +' 3) How does this function work? +' This function builds the Web to Local translation dictionary by extracting +' the mount points from the OneDrive settings files. +' It reads files from... +' On Windows: +' - the "...\AppData\Local\Microsoft" directory +' On Mac: +' - the "~/Library/Containers/com.microsoft.OneDrive-mac/Data/" & _ +' "Library/Application Support" directory +' - and/or the "~/Library/Application Support" +' It reads the following files: +' - \OneDrive\settings\Personal\ClientPolicy.ini +' - \OneDrive\settings\Personal\????????????????.dat +' - \OneDrive\settings\Personal\????????????????.ini +' - \OneDrive\settings\Personal\global.ini +' - \OneDrive\settings\Personal\GroupFolders.ini +' - \OneDrive\settings\Business#\????????-????-????-????-????????????.dat +' - \OneDrive\settings\Business#\????????-????-????-????-????????????.ini +' - \OneDrive\settings\Business#\ClientPolicy*.ini +' - \OneDrive\settings\Business#\global.ini +' - \Office\CLP\* (just the filename) +' +' Where: +' - "*" ... 0 or more characters +' - "?" ... one character [0-9, a-f] +' - "#" ... one digit +' - "\" ... path separator, (= "/" on MacOS) +' - The "???..." filenames represent CIDs) +' +' On MacOS, the \Office\CLP\* exists for each Microsoft Office application +' separately. Depending on whether the application was already used in +' active syncing with OneDrive it may contain different/incomplete files. +' In the code, the path of this directory is stored inside the variable +' "clpPath". On MacOS, the defined clpPath might not exist or not contain +' all necessary files for some host applications, because Environ("HOME") +' depends on the host app. +' This is not a big problem as the function will still work, however in +' this case, specifying a preferredMountPointOwner will do nothing. +' To make sure this directory and the necessary files exist, a file must +' have been actively synchronized with OneDrive by the application whose +' "HOME" folder is returned by Environ("HOME") while being logged in +' to that application with the account whose email is given as +' preferredMountPointOwner, at some point in the past! +' +' If you are usually working with Excel but are using this function in a +' different app, you can instead use an alternative (Excels CLP folder) as +' the clpPath as it will most likely contain all the necessary information +' The alternative clpPath is commented out in the code, if you prefer to +' use Excels CLP folder per default, just un-comment the respective line +' in the code. +'——————————————————————————————————————————————————————————————————————————————— + +'——————————————————————————————————————————————————————————————————————————————— +' COMMENTS REGARDING THE USAGE: +' This function can be used as a User Defined Function (UDF) from the worksheet. +' (More on that, see "USAGE EXAMPLES") +' +' This function offers three optional parameters to the user, however using +' these should only be necessary in extremely rare situations. +' The best rule regarding their usage: Don't use them. +' +' In the following these parameters will still be explained. +' +'1) returnAll +' In some exceptional cases it is possible to map one OneDrive WebPath to +' multiple different localPaths. This can happen when multiple Business +' OneDrive accounts are logged in on one device, and multiple of these have +' access to the same OneDrive folder and they both decide to synchronize it or +' add it as link to their MySite library. +' Calling the function with returnAll:=True will return all valid localPaths +' for the given WebPath, separated by two forward slashes (//). This should be +' used with caution, as the return value of the function alone is, should +' multiple local paths exist for the input webPath, not a valid local path +' anymore. +' An example of how to obtain all of the local paths could look like this: +' Dim localPath as String, localPaths() as String +' localPath = GetLocalPath(webPath, True) +' If Not localPath Like "http*" Then +' localPaths = Split(localPath, "//") +' End If +' +'2) preferredMountPointOwner +' This parameter deals with the same problem as 'returnAll' +' If the function gets called with returnAll:=False (default), and multiple +' localPaths exist for the given WebPath, the function will just return any +' one of them, as usually, it shouldn't make a difference, because the result +' directories at both of these localPaths are mirrored versions of the same +' webPath. Nevertheless, this option lets the user choose, which mountPoint +' should be chosen if multiple localPaths are available. Each localPath is +' 'owned' by an OneDrive Account. If a WebPath is synchronized twice, this can +' only happen by synchronizing it with two different accounts, because +' OneDrive prevents you from synchronizing the same folder twice on a single +' account. Therefore, each of the different localPaths for a given WebPath +' has a unique 'owner'. preferredMountPointOwner lets the user select the +' localPath by specifying the account the localPath should be owned by. +' This is done by passing the Email address of the desired account as +' preferredMountPointOwner. +' For example, you have two different Business OneDrive accounts logged in, +' foo.bar@business1.com and foo.bar@business2.com +' Both synchronize the WebPath: +' webPath = "https://business1.sharepoint.com/sites/TestLib/Documents/" & _ + "Test/Test/Test/test.xlsm" +' +' The first one has added it as a link to his personal OneDrive, the local +' path looks like this: +' C:\Users\username\OneDrive - Business1\TestLinkParent\Test - TestLinkLib\... +' ...Test\test.xlsm +' +' The second one just synchronized it normally, the localPath looks like this: +' C:\Users\username\Business1\TestLinkLib - Test\Test\test.xlsm +' +' Calling GetLocalPath like this: +' GetLocalPath(webPath,,, "foo.bar@business1.com") will return: +' C:\Users\username\OneDrive - Business1\TestLinkParent\Test - TestLinkLib\... +' ...Test\test.xlsm +' +' Calling it like this: +' GetLocalPath(webPath,,, "foo.bar@business2.com") will return: +' C:\Users\username\Business1\TestLinkLib - Test\Test\test.xlsm +' +' And calling it like this: +' GetLocalPath(webPath,, True) will return: +' C:\Users\username\OneDrive - Business1\TestLinkParent\Test - TestLinkLib\... +' ...Test\test.xlsm//C:\Users\username\Business1\TestLinkLib - Test\Test\... +' ...test.xlsm +' +' Calling it normally like this: +' GetLocalPath(webPath) will return any one of the two localPaths, so: +' C:\Users\username\OneDrive - Business1\TestLinkParent\Test - TestLinkLib\... +' ...Test\test.xlsm +' OR +' C:\Users\username\Business1\TestLinkLib - Test\Test\test.xlsm +' +'3) rebuildCache +' The function creates a "translation" dictionary from the OneDrive settings +' files and then uses this dictionary to "translate" WebPaths to LocalPaths. +' This dictionary is implemented as a static variable to the function doesn't +' have to recreate it every time it is called. It is written on the first +' function call and reused on all the subsequent calls, making them faster. +' If the function is called with rebuildCache:=True, this dictionary will be +' rewritten, even if it was already initialized. +' Note that it is not necessary to use this parameter manually, even if a new +' MountPoint was added to the OneDrive, or a new OneDrive account was logged +' in since the last function call because the function will automatically +' determine if any of those cases occurred, without sacrificing performance. +'——————————————————————————————————————————————————————————————————————————————— +Option Explicit + +''—————————————————————————————————————————————————————————————————————————————— +'' USAGE EXAMPLES: +'' Excel: +'Private Sub TestGetLocalPathExcel() +' Debug.Print GetLocalPath(ThisWorkbook.FullName) +' Debug.Print GetLocalPath(ThisWorkbook.path) +'End Sub +' +' Usage as User Defined Function (UDF): +' You might have to replace ; with , in the formulas depending on your settings. +' Add this formula to any cell, to get the local path of the workbook: +' =GetLocalPath(LEFT(CELL("filename";A1);FIND("[";CELL("filename";A1))-1)) +' +' To get the local path including the filename (the FullName), use this formula: +' =GetLocalPath(LEFT(CELL("filename";A1);FIND("[";CELL("filename";A1))-1) & +' TEXTAFTER(TEXTBEFORE(CELL("filename";A1);"]");"[")) +' +''Word: +'Private Sub TestGetLocalPathWord() +' Debug.Print GetLocalPath(ThisDocument.FullName) +' Debug.Print GetLocalPath(ThisDocument.path) +'End Sub +' +''PowerPoint: +'Private Sub TestGetLocalPathPowerPoint() +' Debug.Print GetLocalPath(ActivePresentation.FullName) +' Debug.Print GetLocalPath(ActivePresentation.path) +'End Sub +''—————————————————————————————————————————————————————————————————————————————— + + +'This Function will convert a OneDrive/SharePoint Url path, e.g. Url containing +'https://d.docs.live.net/; .sharepoint.com/sites; my.sharepoint.com/personal/... +'to the locally synchronized path on your current pc or mac, e.g. a path like +'C:\users\username\OneDrive\ on Windows; or /Users/username/OneDrive/ on MacOS, +'if you have the remote directory locally synchronized with the OneDrive app. +'If no local path can be found, the input value will be returned unmodified. +'Author: Guido Witt-Dörring +'Source: https://gist.github.com/guwidoe/038398b6be1b16c458365716a921814d +' https://stackoverflow.com/a/73577057/12287457 +Public Function GetLocalPath(ByVal path As String, _ + Optional ByVal returnAll As Boolean = False, _ + Optional ByVal preferredMountPointOwner As String = "", _ + Optional ByVal rebuildCache As Boolean = False) _ + As String + #If Mac Then + Const vbErrPermissionDenied As Long = 70 + Const vbErrInvalidFormatInResourceFile As Long = 325 + Const syncIDFileName As String = ".849C9593-D756-4E56-8D6E-42412F2A707B" + Const isMac As Boolean = True + Const ps As String = "/" 'Application.PathSeparator doesn't work + #Else 'Windows 'in all host applications (e.g. Outlook), hence + Const ps As String = "\" 'conditional compilation is preferred here. + Const isMac As Boolean = False + #End If + Const methodName As String = "GetLocalPath" + Const vbErrFileNotFound As Long = 53 + Const vbErrOutOfMemory As Long = 7 + Const vbErrKeyAlreadyExists As Long = 457 + Static locToWebColl As Collection, lastCacheUpdate As Date + + If Not Left(path, 8) = "https://" Then GetLocalPath = path: Exit Function + + Dim webRoot As String, locRoot As String, s As String, vItem As Variant + Dim pmpo As String: pmpo = LCase$(preferredMountPointOwner) + If Not locToWebColl Is Nothing And Not rebuildCache Then + Dim resColl As Collection: Set resColl = New Collection + 'If the locToWebColl is initialized, this logic will find the local path + For Each vItem In locToWebColl + locRoot = vItem(0): webRoot = vItem(1) + If InStr(1, path, webRoot, vbTextCompare) = 1 Then _ + resColl.Add key:=vItem(2), _ + Item:=Replace(Replace(path, webRoot, locRoot, , 1), "/", ps) + Next vItem + If resColl.count > 0 Then + If returnAll Then + For Each vItem In resColl: s = s & "//" & vItem: Next vItem + GetLocalPath = Mid$(s, 3): Exit Function + End If + On Error Resume Next: GetLocalPath = resColl(pmpo): On Error GoTo 0 + If GetLocalPath <> "" Then Exit Function + GetLocalPath = resColl(1): Exit Function + End If + 'Local path was not found with cached mountpoints + GetLocalPath = path 'No Exit Function here! Check if cache needs rebuild + End If + + Dim settPaths As Collection: Set settPaths = New Collection + Dim settPath As Variant, clpPath As String + #If Mac Then 'The settings directories can be in different locations + Dim cloudStoragePath As String, cloudStoragePathExists As Boolean + s = Environ("HOME") + clpPath = s & "/Library/Application Support/Microsoft/Office/CLP/" + s = Left$(s, InStrRev(s, "/Library/Containers/", , vbBinaryCompare)) + settPaths.Add s & _ + "Library/Containers/com.microsoft.OneDrive-mac/Data/" & _ + "Library/Application Support/OneDrive/settings/" + settPaths.Add s & "Library/Application Support/OneDrive/settings/" + cloudStoragePath = s & "Library/CloudStorage/" + + 'Excels CLP folder: + 'clpPath = Left$(s, InStrRev(s, "/Library/Containers", , 0)) & _ + "Library/Containers/com.microsoft.Excel/Data/" & _ + "Library/Application Support/Microsoft/Office/CLP/" + #Else 'On Windows, the settings directories are always in this location: + settPaths.Add Environ("LOCALAPPDATA") & "\Microsoft\OneDrive\settings\" + clpPath = Environ("LOCALAPPDATA") & "\Microsoft\Office\CLP\" + #End If + + Dim i As Long + #If Mac Then 'Request access to all possible directories at once + Dim arrDirs() As Variant: ReDim arrDirs(1 To settPaths.count * 11 + 1) + For Each settPath In settPaths + For i = i + 1 To i + 9 + arrDirs(i) = settPath & "Business" & i Mod 11 + Next i + arrDirs(i) = settPath: i = i + 1 + arrDirs(i) = settPath & "Personal" + Next settPath + arrDirs(i + 1) = cloudStoragePath + Dim accessRequestInfoMsgShown As Boolean + accessRequestInfoMsgShown = GetSetting("GetLocalPath", _ + "AccessRequestInfoMsg", "Displayed", "False") = "True" + If Not accessRequestInfoMsgShown Then MsgBox "The current " _ + & "VBA Project requires access to the OneDrive settings files to " _ + & "translate a OneDrive URL to the local path of the locally " & _ + "synchronized file/folder on your Mac. Because these files are " & _ + "located outside of Excels sandbox, file-access must be granted " _ + & "explicitly. Please approve the access requests following this " _ + & "message.", vbInformation + If Not GrantAccessToMultipleFiles(arrDirs) Then _ + Err.Raise vbErrPermissionDenied, methodName + #End If + + 'Find all subdirectories in OneDrive settings folder: + Dim oneDriveSettDirs As Collection: Set oneDriveSettDirs = New Collection + For Each settPath In settPaths + Dim dirName As String: dirName = Dir(settPath, vbDirectory) + Do Until dirName = vbNullString + If dirName = "Personal" Or dirName Like "Business#" Then _ + oneDriveSettDirs.Add Item:=settPath & dirName & ps + dirName = Dir(, vbDirectory) + Loop + Next settPath + + If Not locToWebColl Is Nothing Or isMac Then + Dim requiredFiles As Collection: Set requiredFiles = New Collection + 'Get collection of all required files + Dim vDir As Variant + For Each vDir In oneDriveSettDirs + Dim cid As String: cid = IIf(vDir Like "*" & ps & "Personal" & ps, _ + "????????????*", _ + "????????-????-????-????-????????????") + Dim FileName As String: FileName = Dir(vDir, vbNormal) + Do Until FileName = vbNullString + If FileName Like cid & ".ini" _ + Or FileName Like cid & ".dat" _ + Or FileName Like "ClientPolicy*.ini" _ + Or StrComp(FileName, "GroupFolders.ini", vbTextCompare) = 0 _ + Or StrComp(FileName, "global.ini", vbTextCompare) = 0 Then _ + requiredFiles.Add Item:=vDir & FileName + FileName = Dir + Loop + Next vDir + End If + + 'This part should ensure perfect accuracy despite the mount point cache + 'while sacrificing almost no performance at all by querying FileDateTimes. + If Not locToWebColl Is Nothing And Not rebuildCache Then + 'Check if a settings file was modified since the last cache rebuild + Dim vFile As Variant + For Each vFile In requiredFiles + If FileDateTime(vFile) > lastCacheUpdate Then _ + rebuildCache = True: Exit For 'full cache refresh is required! + Next vFile + If Not rebuildCache Then Exit Function + End If + + 'If execution reaches this point, the cache will be fully rebuilt... + Dim fileNum As Long, syncID As String, b() As Byte + #If Mac Then 'Variables for manual decoding of UTF-8, UTF-32 and ANSI + Dim j As Long, k As Long, m As Long, ansi() As Byte, sAnsi As String + Dim utf16() As Byte, sUtf16 As String, utf32() As Byte + Dim utf8() As Byte, sUtf8 As String, numBytesOfCodePoint As Long + Dim codepoint As Long, lowSurrogate As Long, highSurrogate As Long + #End If + + lastCacheUpdate = Now() + #If Mac Then 'Prepare building syncIDtoSyncDir dictionary. This involves + 'reading the ".849C9593-D756-4E56-8D6E-42412F2A707B" files inside the + 'subdirs of "~/Library/CloudStorage/", list of files and access required + Dim coll As Collection: Set coll = New Collection + dirName = Dir(cloudStoragePath, vbDirectory) + Do Until dirName = vbNullString + If dirName Like "OneDrive*" Then + cloudStoragePathExists = True + vDir = cloudStoragePath & dirName & ps + vFile = cloudStoragePath & dirName & ps & syncIDFileName + coll.Add Item:=vDir + requiredFiles.Add Item:=vDir 'For pooling file access requests + requiredFiles.Add Item:=vFile + End If + dirName = Dir(, vbDirectory) + Loop + + 'Pool access request for these files and the OneDrive/settings files + If locToWebColl Is Nothing Then + Dim vFiles As Variant + If requiredFiles.count > 0 Then + ReDim vFiles(1 To requiredFiles.count) + For i = 1 To UBound(vFiles): vFiles(i) = requiredFiles(i): Next i + If Not GrantAccessToMultipleFiles(vFiles) Then _ + Err.Raise vbErrPermissionDenied, methodName + End If + End If + + 'More access might be required if some folders inside cloudStoragePath + 'don't contain the hidden file ".849C9593-D756-4E56-8D6E-42412F2A707B". + 'In that case, access to their first level subfolders is also required. + If cloudStoragePathExists Then + For i = coll.count To 1 Step -1 + Dim fAttr As Long: fAttr = 0 + On Error Resume Next + fAttr = GetAttr(coll(i) & syncIDFileName) + Dim IsFile As Boolean: IsFile = False + If Err.Number = 0 Then IsFile = Not CBool(fAttr And vbDirectory) + On Error GoTo 0 + If Not IsFile Then 'hidden file does not exist + 'Dir(path, vbHidden) is unreliable and doesn't work on some Macs + 'If Dir(coll(i) & syncIDFileName, vbHidden) = vbNullString Then + dirName = Dir(coll(i), vbDirectory) + Do Until dirName = vbNullString + If Not dirName Like ".Trash*" And dirName <> "Icon" Then + coll.Add coll(i) & dirName & ps + coll.Add coll(i) & dirName & ps & syncIDFileName, _ + coll(i) & dirName & ps '<- key for removal + End If + dirName = Dir(, vbDirectory) + Loop 'Remove the + coll.Remove i 'folder if it doesn't contain the hidden file. + End If + Next i + If coll.count > 0 Then + ReDim arrDirs(1 To coll.count) + For i = 1 To coll.count: arrDirs(i) = coll(i): Next i + If Not GrantAccessToMultipleFiles(arrDirs) Then _ + Err.Raise vbErrPermissionDenied, methodName + End If + 'Remove all files from coll (not the folders!): Reminder: + On Error Resume Next 'coll(coll(i)) = coll(i) & syncIDFileName + For i = coll.count To 1 Step -1 + coll.Remove coll(i) + Next i + On Error GoTo 0 + + 'Write syncIDtoSyncDir collection + Dim syncIDtoSyncDir As Collection + Set syncIDtoSyncDir = New Collection + For Each vDir In coll + fAttr = 0 + On Error Resume Next + fAttr = GetAttr(vDir & syncIDFileName) + IsFile = False + If Err.Number = 0 Then IsFile = Not CBool(fAttr And vbDirectory) + On Error GoTo 0 + If IsFile Then 'hidden file exists + 'Dir(path, vbHidden) is unreliable and doesn't work on some Macs + 'If Dir(vDir & syncIDFileName, vbHidden) <> vbNullString Then + fileNum = FreeFile(): s = "": vFile = vDir & syncIDFileName + 'Somehow reading these files with "Open" doesn't always work + Dim readSucceeded As Boolean: readSucceeded = False + On Error GoTo ReadFailed + Open vFile For Binary Access Read As #fileNum + ReDim b(0 To LOF(fileNum)): Get fileNum, , b: s = b + readSucceeded = True +ReadFailed: On Error GoTo -1 + Close #fileNum: fileNum = 0 + On Error GoTo 0 + If readSucceeded Then + 'Debug.Print "Used open statement to read file: " & _ + vDir & syncIDFileName + ansi = s 'If Open was used: Decode ANSI string manually: + If LenB(s) > 0 Then + ReDim utf16(0 To LenB(s) * 2 - 1): k = 0 + For j = LBound(ansi) To UBound(ansi) + utf16(k) = ansi(j): k = k + 2 + Next j + s = utf16 + Else: s = vbNullString + End If + Else 'Reading the file with "Open" failed with an error. Try + 'using AppleScript. Also avoids the manual transcoding. + 'Somehow ApplScript fails too, sometimes. Seems whenever + '"Open" works, AppleScript fails and vice versa (?!?!) + vFile = MacScript("return path to startup disk as " & _ + "string") & Replace(Mid$(vFile, 2), ps, ":") + s = MacScript("return read file """ & _ + vFile & """ as string") + 'Debug.Print "Used Apple Script to read file: " & vFile + End If + If InStr(1, s, """guid"" : """, vbBinaryCompare) Then + s = Split(s, """guid"" : """)(1) + syncID = Left$(s, InStr(1, s, """", 0) - 1) + syncIDtoSyncDir.Add key:=syncID, _ + Item:=VBA.Array(syncID, Left$(vDir, Len(vDir) - 1)) + Else + Debug.Print "Warning, empty syncIDFile encountered!" + End If + End If + Next vDir + End If + 'Now all access requests have succeeded + If Not accessRequestInfoMsgShown Then SaveSetting _ + "GetLocalPath", "AccessRequestInfoMsg", "Displayed", "True" + #End If + + 'Declare all variables that will be used in the loop over OneDrive settings + Dim line As Variant, parts() As String, N As Long, libNr As String + Dim tag As String, mainMount As String, relPath As String, email As String + Dim parentID As String, folderID As String, folderName As String + Dim folderIdPattern As String, folderType As String, keyExists As Boolean + Dim siteID As String, libID As String, webID As String, lnkID As String + Dim mainSyncID As String, syncFind As String, mainSyncFind As String + 'The following are "constants" and needed for reading the .dat files: + Dim sig1 As String: sig1 = ChrB$(2) + Dim sig2 As String * 4: MidB$(sig2, 1) = ChrB$(1) + Dim vbNullByte As String: vbNullByte = ChrB$(0) + #If Mac Then + Const sig3 As String = vbNullChar & vbNullChar + #Else 'Windows + Const sig3 As String = vbNullChar + #End If + + 'Writing locToWebColl using .ini and .dat files in the OneDrive settings: + 'Here, a Scripting.Dictionary would be nice but it is not available on Mac! + Dim lastAccountUpdates As Collection, lastAccountUpdate As Date + Set lastAccountUpdates = New Collection + Set locToWebColl = New Collection + For Each vDir In oneDriveSettDirs 'One folder per logged in OD account + dirName = Mid$(vDir, InStrRev(vDir, ps, Len(vDir) - 1, 0) + 1) + dirName = Left$(dirName, Len(dirName) - 1) + + 'Read global.ini to get cid + If Dir(vDir & "global.ini", vbNormal) = "" Then GoTo NextFolder + fileNum = FreeFile() + Open vDir & "global.ini" For Binary Access Read As #fileNum + ReDim b(0 To LOF(fileNum)): Get fileNum, , b + Close #fileNum: fileNum = 0 + #If Mac Then 'On Mac, the OneDrive settings files use UTF-8 encoding + sUtf8 = b: GoSub DecodeUTF8 + b = sUtf16 'b = StrConv(b, vbUnicode) <- UNRELIABLE + #End If + For Each line In Split(b, vbNewLine) + If line Like "cid = *" Then cid = Mid$(line, 7): Exit For + Next line + + If cid = vbNullString Then GoTo NextFolder + If (Dir(vDir & cid & ".ini") = vbNullString Or _ + Dir(vDir & cid & ".dat") = vbNullString) Then GoTo NextFolder + If dirName Like "Business#" Then + folderIdPattern = Replace(Space$(32), " ", "[a-f0-9]") + ElseIf dirName = "Personal" Then + folderIdPattern = Replace(Space$(12), " ", "[A-F0-9]") & "*!###*" + End If + + 'Get email for business accounts + '(only necessary to let user choose preferredMountPointOwner) + FileName = Dir(clpPath, vbNormal) + Do Until FileName = vbNullString + i = InStrRev(FileName, cid, , vbTextCompare) + If i > 1 And cid <> vbNullString Then _ + email = LCase$(Left$(FileName, i - 2)): Exit Do + FileName = Dir + Loop + + #If Mac Then + On Error Resume Next + lastAccountUpdate = lastAccountUpdates(dirName) + keyExists = (Err.Number = 0) + On Error GoTo 0 + If keyExists Then + If FileDateTime(vDir & cid & ".ini") < lastAccountUpdate Then + GoTo NextFolder + Else + For i = locToWebColl.count To 1 Step -1 + If locToWebColl(i)(5) = dirName Then + locToWebColl.Remove i + End If + Next i + lastAccountUpdates.Remove dirName + lastAccountUpdates.Add key:=dirName, _ + Item:=FileDateTime(vDir & cid & ".ini") + End If + Else + lastAccountUpdates.Add key:=dirName, _ + Item:=FileDateTime(vDir & cid & ".ini") + End If + #End If + + 'Read all the ClientPloicy*.ini files: + Dim cliPolColl As Collection: Set cliPolColl = New Collection + FileName = Dir(vDir, vbNormal) + Do Until FileName = vbNullString + If FileName Like "ClientPolicy*.ini" Then + fileNum = FreeFile() + Open vDir & FileName For Binary Access Read As #fileNum + ReDim b(0 To LOF(fileNum)): Get fileNum, , b + Close #fileNum: fileNum = 0 + #If Mac Then 'On Mac, OneDrive settings files use UTF-8 encoding + sUtf8 = b: GoSub DecodeUTF8 + b = sUtf16 'StrConv(b, vbUnicode)UNRELIABLE + #End If + cliPolColl.Add key:=FileName, Item:=New Collection + For Each line In Split(b, vbNewLine) + If InStr(1, line, " = ", vbBinaryCompare) Then + tag = Left$(line, InStr(1, line, " = ", 0) - 1) + s = Mid$(line, InStr(1, line, " = ", 0) + 3) + Select Case tag + Case "DavUrlNamespace" + cliPolColl(FileName).Add key:=tag, Item:=s + Case "SiteID", "IrmLibraryId", "WebID" 'Only used for + s = Replace(LCase$(s), "-", "") 'backup method later + If Len(s) > 3 Then s = Mid$(s, 2, Len(s) - 2) + cliPolColl(FileName).Add key:=tag, Item:=s + End Select + End If + Next line + End If + FileName = Dir + Loop + + 'Read cid.dat file + Const chunkOverlap As Long = 1000 + Const maxDirName As Long = 255 + Dim buffSize As Long: buffSize = -1 'Buffer uninitialized +Try: On Error GoTo Catch + Dim odFolders As Collection: Set odFolders = New Collection + Dim lastChunkEndPos As Long: lastChunkEndPos = 1 + Dim lastFileUpdate As Date: lastFileUpdate = FileDateTime(vDir & _ + cid & ".dat") + i = 0 'i = current reading pos. + Do + 'Ensure file is not changed while reading it + If FileDateTime(vDir & cid & ".dat") > lastFileUpdate Then GoTo Try + fileNum = FreeFile + Open vDir & cid & ".dat" For Binary Access Read As #fileNum + Dim lenDatFile As Long: lenDatFile = LOF(fileNum) + If buffSize = -1 Then buffSize = lenDatFile 'Initialize buffer + 'Overallocate a bit so read chunks overlap to recognize all dirs + ReDim b(0 To buffSize + chunkOverlap) + Get fileNum, lastChunkEndPos, b: s = b + Dim SIZE As Long: SIZE = LenB(s) + Close #fileNum: fileNum = 0 + lastChunkEndPos = lastChunkEndPos + buffSize + + For vItem = 16 To 8 Step -8 + i = InStrB(vItem + 1, s, sig2, 0) 'Sarch pattern in cid.dat + Do While i > vItem And i < SIZE - 168 'and confirm with another + If StrComp(MidB$(s, i - vItem, 1), sig1, 0) = 0 Then 'one + i = i + 8: N = InStrB(i, s, vbNullByte, 0) - i + If N < 0 Then N = 0 'i:Start pos, n: Length + If N > 39 Then N = 39 + #If Mac Then 'StrConv doesn't work reliably on Mac -> + ansi = MidB$(s, i, N) 'Decode ANSI string manually: + j = UBound(ansi) - LBound(ansi) + 1 + If j > 0 Then + ReDim utf16(0 To j * 2 - 1): k = 0 + For j = LBound(ansi) To UBound(ansi) + utf16(k) = ansi(j): k = k + 2 + Next j + folderID = utf16 + Else: folderID = vbNullString + End If + #Else 'Windows + folderID = StrConv(MidB$(s, i, N), vbUnicode) + #End If + i = i + 39: N = InStrB(i, s, vbNullByte, 0) - i + If N < 0 Then N = 0 + If N > 39 Then N = 39 + #If Mac Then 'StrConv doesn't work reliably on Mac -> + ansi = MidB$(s, i, N) 'Decode ANSI string manually: + j = UBound(ansi) - LBound(ansi) + 1 + If j > 0 Then + ReDim utf16(0 To j * 2 - 1): k = 0 + For j = LBound(ansi) To UBound(ansi) + utf16(k) = ansi(j): k = k + 2 + Next j + parentID = utf16 + Else: parentID = vbNullString + End If + #Else 'Windows + parentID = StrConv(MidB$(s, i, N), vbUnicode) + #End If + i = i + 121 + N = InStr(-Int(-(i - 1) / 2) + 1, s, sig3) * 2 - i - 1 + If N > maxDirName * 2 Then N = maxDirName * 2 + If N < 0 Then N = 0 + If folderID Like folderIdPattern _ + And parentID Like folderIdPattern Then + #If Mac Then 'Encoding of folder names is UTF-32-LE + Do While N Mod 4 > 0 + If N > maxDirName * 4 Then Exit Do + N = InStr(-Int(-(i + N) / 2) + 1, s, sig3) _ + * 2 - i - 1 + Loop + If N > maxDirName * 4 Then N = maxDirName * 4 + utf32 = MidB$(s, i, N) + 'UTF-32 can only be converted manually to UTF-16 + ReDim utf16(LBound(utf32) To UBound(utf32)) + j = LBound(utf32): k = LBound(utf32) + Do While j < UBound(utf32) + If utf32(j + 2) + utf32(j + 3) = 0 Then + utf16(k) = utf32(j) + utf16(k + 1) = utf32(j + 1) + k = k + 2 + Else + If utf32(j + 3) <> 0 Then Err.Raise _ + vbErrInvalidFormatInResourceFile, _ + methodName + codepoint = utf32(j + 2) * &H10000 + _ + utf32(j + 1) * &H100& + _ + utf32(j) + m = codepoint - &H10000 + highSurrogate = &HD800& Or (m \ &H400&) + lowSurrogate = &HDC00& Or (m And &H3FF) + utf16(k) = highSurrogate And &HFF& + utf16(k + 1) = highSurrogate \ &H100& + utf16(k + 2) = lowSurrogate And &HFF& + utf16(k + 3) = lowSurrogate \ &H100& + k = k + 4 + End If + j = j + 4 + Loop + If k > LBound(utf16) Then + ReDim Preserve utf16(LBound(utf16) To k - 1) + folderName = utf16 + Else: folderName = vbNullString + End If + #Else 'On Windows encoding is UTF-16-LE + folderName = MidB$(s, i, N) + #End If + 'VBA.Array() instead of just Array() is used in this + 'function because it ignores Option Base 1 + odFolders.Add VBA.Array(parentID, folderName), _ + folderID + End If + End If + i = InStrB(i + 1, s, sig2, 0) 'Find next sig2 in cid.dat + Loop + If odFolders.count > 0 Then Exit For + Next vItem + Loop Until lastChunkEndPos >= lenDatFile _ + Or buffSize >= lenDatFile + GoTo Continue +Catch: + Select Case Err.Number + Case vbErrKeyAlreadyExists + 'This can happen at chunk boundries, folder might get added twice: + odFolders.Remove folderID 'Make sure the folder gets added new again + Resume 'to avoid folderNames truncated by chunk ends + Case Is <> vbErrOutOfMemory: Err.Raise Err, methodName + End Select + If buffSize > &HFFFFF Then buffSize = buffSize / 2: Resume Try + Err.Raise Err, methodName 'Raise error if less than 1 MB RAM available +Continue: + On Error GoTo 0 + + 'Read cid.ini file + fileNum = FreeFile() + Open vDir & cid & ".ini" For Binary Access Read As #fileNum + ReDim b(0 To LOF(fileNum)): Get fileNum, , b + Close #fileNum: fileNum = 0 + #If Mac Then 'On Mac, the OneDrive settings files use UTF-8 encoding + sUtf8 = b: GoSub DecodeUTF8: + b = sUtf16 'b = StrConv(b, vbUnicode) <- UNRELIABLE + #End If + Select Case True + Case dirName Like "Business#" 'Settings files for a business OD account + 'Max 9 Business OneDrive accounts can be signed in at a time. + Dim libNrToWebColl As Collection: Set libNrToWebColl = New Collection + mainMount = vbNullString + For Each line In Split(b, vbNewLine) + webRoot = "": locRoot = "": parts = Split(line, """") + Select Case Left$(line, InStr(1, line, " = ", 0) - 1) + Case "libraryScope" 'One line per synchronized library + locRoot = parts(9) + syncFind = locRoot: syncID = Split(parts(10), " ")(2) + libNr = Split(line, " ")(2) + folderType = parts(3): parts = Split(parts(8), " ") + siteID = parts(1): webID = parts(2): libID = parts(3) + If mainMount = vbNullString And folderType = "ODB" Then + mainMount = locRoot: FileName = "ClientPolicy.ini" + mainSyncID = syncID: mainSyncFind = syncFind + Else: FileName = "ClientPolicy_" & libID & siteID & ".ini" + End If + On Error Resume Next 'On error try backup method... + webRoot = cliPolColl(FileName)("DavUrlNamespace") + On Error GoTo 0 + If webRoot = "" Then 'Backup method to find webRoot: + For Each vItem In cliPolColl + If vItem("SiteID") = siteID _ + And vItem("WebID") = webID _ + And vItem("IrmLibraryId") = libID Then + webRoot = vItem("DavUrlNamespace"): Exit For + End If + Next vItem + End If + If webRoot = vbNullString Then Err.Raise vbErrFileNotFound _ + , methodName + libNrToWebColl.Add VBA.Array(libNr, webRoot), libNr + If Not locRoot = vbNullString Then _ + locToWebColl.Add VBA.Array(locRoot, webRoot, email, _ + syncID, syncFind, dirName), key:=locRoot + Case "libraryFolder" 'One line per synchronized library folder + libNr = Split(line, " ")(3) + locRoot = parts(1): syncFind = locRoot + syncID = Split(parts(4), " ")(1) + s = vbNullString: parentID = Left$(Split(line, " ")(4), 32) + Do 'If not synced at the bottom dir of the library: + ' -> add folders below mount point to webRoot + On Error Resume Next: odFolders parentID + keyExists = (Err.Number = 0): On Error GoTo 0 + If Not keyExists Then Exit Do + s = odFolders(parentID)(1) & "/" & s + parentID = odFolders(parentID)(0) + Loop + webRoot = libNrToWebColl(libNr)(1) & s + locToWebColl.Add VBA.Array(locRoot, webRoot, email, _ + syncID, syncFind, dirName), locRoot + Case "AddedScope" 'One line per folder added as link to personal + relPath = parts(5): If relPath = " " Then relPath = "" 'lib + parts = Split(parts(4), " "): siteID = parts(1) + webID = parts(2): libID = parts(3): lnkID = parts(4) + FileName = "ClientPolicy_" & libID & siteID & lnkID & ".ini" + On Error Resume Next 'On error try backup method... + webRoot = cliPolColl(FileName)("DavUrlNamespace") & relPath + On Error GoTo 0 + If webRoot = "" Then 'Backup method to find webRoot: + For Each vItem In cliPolColl + If vItem("SiteID") = siteID _ + And vItem("WebID") = webID _ + And vItem("IrmLibraryId") = libID Then + webRoot = vItem("DavUrlNamespace") & relPath + Exit For + End If + Next vItem + End If + If webRoot = vbNullString Then Err.Raise vbErrFileNotFound _ + , methodName + s = vbNullString: parentID = Left$(Split(line, " ")(3), 32) + Do 'If link is not at the bottom of the personal library: + On Error Resume Next: odFolders parentID + keyExists = (Err.Number = 0): On Error GoTo 0 + If Not keyExists Then Exit Do 'add folders below + s = odFolders(parentID)(1) & ps & s 'mount point to + parentID = odFolders(parentID)(0) 'locRoot + Loop + locRoot = mainMount & ps & s + locToWebColl.Add VBA.Array(locRoot, webRoot, email, _ + mainSyncID, mainSyncFind, dirName), locRoot + Case Else: Exit For + End Select + Next line + Case dirName = "Personal" 'Settings files for a personal OD account + 'Only one Personal OneDrive account can be signed in at a time. + For Each line In Split(b, vbNewLine) 'Loop should exit at first line + If line Like "library = *" Then + parts = Split(line, """"): locRoot = parts(3) + syncFind = locRoot: syncID = Split(parts(4), " ")(2) + Exit For + End If + Next line + On Error Resume Next 'This file may be missing if the personal OD + webRoot = cliPolColl("ClientPolicy.ini")("DavUrlNamespace") 'account + On Error GoTo 0 'was logged out of the OneDrive app + If locRoot = "" Or webRoot = "" Or cid = "" Then GoTo NextFolder + locToWebColl.Add VBA.Array(locRoot, webRoot & "/" & cid, email, _ + syncID, syncFind, dirName), key:=locRoot + If Dir(vDir & "GroupFolders.ini") = "" Then GoTo NextFolder + 'Read GroupFolders.ini file + cid = vbNullString: fileNum = FreeFile() + Open vDir & "GroupFolders.ini" For Binary Access Read As #fileNum + ReDim b(0 To LOF(fileNum)): Get fileNum, , b + Close #fileNum: fileNum = 0 + #If Mac Then 'On Mac, the OneDrive settings files use UTF-8 encoding + sUtf8 = b: GoSub DecodeUTF8 + b = sUtf16 'StrConv(b, vbUnicode) is UNRELIABLE + #End If 'Two lines per synced folder from other peoples personal ODs + For Each line In Split(b, vbNewLine) + If line Like "*_BaseUri = *" And cid = vbNullString Then + cid = LCase$(Mid$(line, InStrRev(line, "/", , 0) + 1, _ + InStrRev(line, "!", , 0) - InStrRev(line, "/", , 0) - 1)) + folderID = Left$(line, InStr(line, "_") - 1) + ElseIf cid <> vbNullString Then + locToWebColl.Add VBA.Array(locRoot & ps & odFolders( _ + folderID)(1), webRoot & "/" & cid & "/" & _ + Mid$(line, Len(folderID) + 9), email, _ + syncID, syncFind, dirName), _ + key:=locRoot & ps & odFolders(folderID)(1) + cid = vbNullString: folderID = vbNullString + End If + Next line + End Select +NextFolder: + cid = vbNullString: s = vbNullString: email = vbNullString + Next vDir + + 'Clean the finished "dictionary" up, remove trailing "\" and "/" + Dim tmpColl As Collection: Set tmpColl = New Collection + For Each vItem In locToWebColl + locRoot = vItem(0): webRoot = vItem(1): syncFind = vItem(4) + If Right$(webRoot, 1) = "/" Then _ + webRoot = Left$(webRoot, Len(webRoot) - 1) + If Right$(locRoot, 1) = ps Then _ + locRoot = Left$(locRoot, Len(locRoot) - 1) + If Right$(syncFind, 1) = ps Then _ + syncFind = Left$(syncFind, Len(syncFind) - 1) + tmpColl.Add VBA.Array(locRoot, webRoot, vItem(2), _ + vItem(3), syncFind), locRoot + Next vItem + Set locToWebColl = tmpColl + + #If Mac Then 'deal with syncIDs + If cloudStoragePathExists Then + Set tmpColl = New Collection + For Each vItem In locToWebColl + locRoot = vItem(0): syncID = vItem(3): syncFind = vItem(4) + locRoot = Replace(locRoot, syncFind, _ + syncIDtoSyncDir(syncID)(1), , 1) + tmpColl.Add VBA.Array(locRoot, vItem(1), vItem(2)), locRoot + Next vItem + Set locToWebColl = tmpColl + End If + #End If + + GetLocalPath = GetLocalPath(path, returnAll, pmpo, False): Exit Function + Exit Function +DecodeUTF8: 'StrConv doesn't work reliably, therefore UTF-8 must + #If Mac Then 'be transcoded to UTF-16 manually (yes, this is insane) + utf8 = sUtf8 + ReDim utf16(0 To (UBound(utf8) - LBound(utf8) + 1) * 2) + i = LBound(utf8): k = 0 + Do While i <= UBound(utf8) 'Loop through the UTF-8 byte array + 'Determine the number of bytes in the current UTF-8 codepoint + numBytesOfCodePoint = 1 + If utf8(i) And &H80 Then + If utf8(i) And &H20 Then + If utf8(i) And &H10 Then + numBytesOfCodePoint = 4 + Else: numBytesOfCodePoint = 3: End If + Else: numBytesOfCodePoint = 2: End If + End If + If i + numBytesOfCodePoint - 1 > UBound(utf8) Then _ + Err.Raise vbErrInvalidFormatInResourceFile, methodName + 'Calculate the Unicode codepoint value from the UTF-8 bytes + If numBytesOfCodePoint = 1 Then + codepoint = utf8(i) + Else: codepoint = utf8(i) And (2 ^ (7 - numBytesOfCodePoint) - 1) + For j = 1 To numBytesOfCodePoint - 1 + codepoint = (codepoint * 64) + (utf8(i + j) And &H3F) + Next j + End If + 'Convert the Unicode codepoint to UTF-16LE bytes + If codepoint < &H10000 Then + utf16(k) = codepoint And &HFF& + utf16(k + 1) = codepoint \ &H100& + k = k + 2 + Else 'Codepoint must be encoded as surrogate pair + m = codepoint - &H10000 + highSurrogate = &HD800& Or (m \ &H400&) + lowSurrogate = &HDC00& Or (m And &H3FF) + utf16(k) = highSurrogate And &HFF& + utf16(k + 1) = highSurrogate \ &H100& + utf16(k + 2) = lowSurrogate And &HFF& + utf16(k + 3) = lowSurrogate \ &H100& + k = k + 4 + End If + i = i + numBytesOfCodePoint 'Move to the next UTF-8 codepoint + Loop + If k > 0 Then + ReDim Preserve utf16(0 To k - 1) + sUtf16 = utf16 + Else: sUtf16 = "" + End If + Return 'Jump back to the statement after last encountered GoSub + #End If +End Function + diff --git a/src/Main.bas b/src/Main.bas new file mode 100644 index 0000000..9a29fc9 --- /dev/null +++ b/src/Main.bas @@ -0,0 +1,600 @@ +' Author: Edward Middleton-Smith +' Precision And Research Technology Systems Limited + + +' MODULE INITIALISATION +' Set array start index to 1 to match spreadsheet indices +Option Base 1 +' Forced Variable Declaration +Option Explicit + +' Sleep function +Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) + +Sub Main() +' FUNCTION + ' Create database relationship bbetwee different tables of data in worksheets +' VARIABLE DECLARATION + ' Excel + Dim wb_me As Workbook + Dim wb_cash As Workbook + Dim wb_day As Workbook + Dim wb_customers As Workbook + Dim ws_out As Worksheet + Dim ws_anal As Worksheet + Dim ws_cash As Worksheet + Dim ws_day As Worksheet + Dim ws_customers As Worksheet + ' Worksheet Container Relation + Dim ws_rel As ws_relation + ' Worksheet Containers + Dim wsc_out As ws_access + Dim wsc_cash As ws_access + Dim wsc_day As ws_access + Dim wsc_customers As ws_access + Dim headings_S() As String + ' PowerPoint + Dim pptApp As PowerPoint.Application + Dim ppt As PowerPoint.Presentation + Dim pptSlide As PowerPoint.Slide + Dim paste_shape As PowerPoint.Shape + ' Temporary + Dim headings_V() As Variant + Dim i As Long + Dim j As Long + Dim tmp_total As Long + Dim tmp_heading As String + Dim i_col_out As Long + Dim i_col_cash As Long + Dim i_col_day As Long + Dim tmp_S As String + Dim t_sleep As Long +' VARIABLE INSTANTIATION + t_sleep = 5000 + ' PowerPoint + Set pptApp = New PowerPoint.Application + Set ppt = pptApp.Presentations.Open("C:\Users\edwar\OneDrive\Documents\4 Shires\Alex Automation\4 Shires Books Public\Pivot Linked.pptx") + Set pptSlide = ppt.Slides(2) + pptSlide.Select + Sleep t_sleep + ' Worksheet Relation + Set ws_rel = New ws_relation + Set wb_me = ActiveWorkbook + Set ws_out = create_sheet_out(wb_me) + Set ws_anal = wb_me.Sheets("Analysis") + get_downloaded_sheets wb_me, wb_cash, ws_cash, wb_day, ws_day, wb_customers, ws_customers, ws_rel, t_sleep + ' Worksheet Containers + ' Cashbook + headings_V = Array("BATCH NO", "BATCH DATE", "TRAN DATE", "CUST REF", "CUSTOMER NAME", "", "TRAN REF", "FURTHER REF", "", "", "", "", "", "", "CASH", "DISCOUNT", "", "", "", "", "", "", "") + convert_1D_Variant_2_String headings_V, headings_S + Set wsc_cash = New ws_access + wsc_cash.Init ws_cash, "Cashbook", headings_S, ColumnHeaders, 7, True, 3, False, 1, 0, 4 + ws_rel.AddWSC wsc_cash + ' Daybook + Erase headings_S + Erase headings_V + headings_V = Array("BATCH NO", "BATCH DATE", "TRAN DATE", "CUST REF", "CUST NAME", "CASH STATUS", "TRAN REF", "FURTHER REF", "", "GOODS", "VAT", "TOT INV", "TOT CRN", "ACC STAT", "", "", "", "", "", "", "", "", "") + convert_1D_Variant_2_String headings_V, headings_S + Set wsc_day = New ws_access + wsc_day.Init ws_day, "Daybook", headings_S, ColumnHeaders, 7, True, 3, False, 1, 0, 4 + If Not ws_rel.AddWSC(wsc_day) Then GoTo errhand + ' Customer List + Erase headings_S + Erase headings_V + headings_V = Array("", "", "", "A/C", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Name") + convert_1D_Variant_2_String headings_V, headings_S + Set wsc_customers = New ws_access + wsc_customers.Init ws_customers, "Customer List", headings_S, ColumnHeaders, 4, True, 6, False, 2, 0, 7, 0, 10 + If Not ws_rel.AddWSC(wsc_customers) Then GoTo errhand + ' Export + ' Set ws_out = create_sheet_out() + Erase headings_S + Erase headings_V + headings_V = Array("BATCH NO", "BATCH DATE", "Date", "Account Reference", "CUST NAME", "IMPORT ID NO.", "Reference", "Extra Reference", "User Name", "", "Tax Amount", "", "", "CASH STATUS", "", "", "Type", "Nominal A/C Ref", "Details", "Net Amount", "Tax Code", "TOT INV", "CUST NAME VLOOKUP") + convert_1D_Variant_2_String headings_V, headings_S + Set wsc_out = New ws_access + wsc_out.Init ws_out, "Export", headings_S, ColumnHeaders, 7, True, 1, False, 1, 0, 2 + If Not ws_rel.AddWSC(wsc_out) Then GoTo errhand + ' Worksheet size + tmp_total = wsc_cash.RowMax - wsc_cash.RowMin + 1 +' PROCESSING ACCELERATION + ' Disable automatic spreadsheet calculation - prevents refreshing of whole ws on each cell entry + Application.Calculation = xlCalculationManual + ' Disable screen updating + Application.ScreenUpdating = False +' METHODS + ' Populate export wsc with references from cashbook, daybook + wsc_out.ResizeLocal wsc_out.ColumnMin, wsc_out.ColumnMax, wsc_out.RowMin, wsc_cash.RowMax - wsc_cash.RowMin + wsc_day.RowMax - wsc_day.RowMin + wsc_out.RowMin + 1, True + ' Cashbook + For j = 1 To tmp_total + ' ' Set key value for record-wise population + ' wsc_out.SetCellDataLocal j, wsc_out.ColumnSearch, wsc_cash.GetCellDataLocal(j, wsc_cash.ColumnSearch) + + ' Set all available values + For i = 1 To ws_rel.nHeadings + i_col_out = wsc_out.ColumnID(CStr(i), True) + If i_col_out > 0 Then + wsc_out.Cell(j + wsc_out.RowMin - 1, i_col_out + wsc_out.ColumnMin - 1).Interior.ColorIndex = 17 ' 6 + i_col_cash = wsc_cash.ColumnID(CStr(i), True) + If i_col_cash > 0 Then + If tmp_heading = "Net Amount" Then + wsc_out.SetCellDataLocal j, i_col_out, CMoney_String(CDbl(wsc_cash.GetCellDataLocal(j, i_col_cash))) + Else + wsc_out.SetCellDataLocal j, i_col_out, wsc_cash.GetCellDataLocal(j, i_col_cash) + End If + Else + tmp_heading = wsc_out.HeadingName(i) + If tmp_heading = "Type" Or tmp_heading = "Details" Then + ' pass + ElseIf tmp_heading = "Nominal A/C Ref" Then + tmp_S = Left(wsc_cash.GetCellDataLocal(j, wsc_cash.ColumnID("FURTHER REF")), 2) + If tmp_S = "BA" Or tmp_S = "BX" Or tmp_S = "CQ" Then + wsc_out.SetCellDataLocal j, i_col_out, "1200" + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Tax Code"), "T9" + If wsc_cash.GetCellDataLocal(j, wsc_cash.ColumnID("FURTHER REF")) = "BX DUPLICATE ENTRY" Then + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Details"), "REFUND" + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Type"), "SP" + Else + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Details"), "PAYMENT RECEIVED" + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Type"), "SA" + End If + ElseIf tmp_S = "CA" Then + wsc_out.SetCellDataLocal j, i_col_out, "1230" + If CLng(wsc_cash.GetCellDataLocal(j, wsc_cash.ColumnID("CASH"))) < 0 Then + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Details"), "REFUND" + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Type"), "SP" + Else + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Details"), "PAYMENT RECEIVED" + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Type"), "SA" + End If + ElseIf tmp_S = "CC" Or tmp_S = "WE" Then + wsc_out.SetCellDataLocal j, i_col_out, "1250" + If CLng(wsc_cash.GetCellDataLocal(j, wsc_cash.ColumnID("CASH"))) < 0 Then + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Details"), "REFUND" + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Type"), "SP" + Else + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Details"), "PAYMENT RECEIVED" + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Type"), "SA" + End If + Else + wsc_out.SetCellDataLocal j, i_col_out, "1255" + If CLng(wsc_cash.GetCellDataLocal(j, wsc_cash.ColumnID("CASH"))) < 0 Then + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Details"), "REFUND" + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Type"), "SP" + Else + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Details"), "PAYMENT RECEIVED" + wsc_out.SetCellDataLocal j, wsc_out.ColumnID("Type"), "SA" + End If + End If + ElseIf tmp_heading = "Net Amount" Then + wsc_out.SetCellDataLocal j, i_col_out, CMoney_String(Abs(CDbl(wsc_cash.GetCellDataLocal(j, wsc_cash.ColumnID("CASH"))))) + ElseIf tmp_heading = "Tax Code" Then + wsc_out.SetCellDataLocal j, i_col_out, "T9" + ElseIf tmp_heading = "Tax Amount" Then + wsc_out.SetCellDataLocal j, i_col_out, "'0.00" + ElseIf tmp_heading = "User Name" Then + wsc_out.SetCellDataLocal j, i_col_out, "ALEX-IMPORTED" + End If + End If + End If + Next + Next + ' Daybook + For j = 1 To wsc_day.RowMax - wsc_day.RowMin + 1 + ' ' Set key value for record-wise population + ' wsc_out.SetCellDataLocal tmp_total + j, wsc_out.ColumnSearch, wsc_day.GetCellDataLocal(j, wsc_day.ColumnSearch) + + ' Set all available values + For i = 1 To ws_rel.nHeadings + i_col_out = wsc_out.ColumnID(CStr(i), True) + If i_col_out > 0 Then + wsc_out.Cell(tmp_total + j + wsc_out.RowMin - 1, i_col_out + wsc_out.ColumnMin - 1).Interior.ColorIndex = 42 ' 50 + i_col_day = wsc_day.ColumnID(CStr(i), True) + tmp_heading = wsc_out.HeadingName(i) + If i_col_day > 0 Then + ' If tmp_heading = "Tax Amount" Or tmp_heading = "TOT INV" Then + ' wsc_out.SetCellDataLocal tmp_total + j, i_col_out, CMoney_String(CDbl(wsc_day.GetCellDataLocal(j, i_col_day))) + ' Else + wsc_out.SetCellDataLocal tmp_total + j, i_col_out, wsc_day.GetCellDataLocal(j, i_col_day) + ' End If + Else + If tmp_heading = "Type" Then + ' pass + If CLng(wsc_day.GetCellDataLocal(j, wsc_day.ColumnID("GOODS"))) < 0 Then + wsc_out.SetCellDataLocal tmp_total + j, wsc_out.ColumnID("Type"), "SC" + wsc_out.SetCellDataLocal tmp_total + j, wsc_out.ColumnID("Details"), "CREDIT" + Else + wsc_out.SetCellDataLocal tmp_total + j, wsc_out.ColumnID("Type"), "SI" + wsc_out.SetCellDataLocal tmp_total + j, wsc_out.ColumnID("Details"), "INVOICE" + End If + ElseIf tmp_heading = "Nominal A/C Ref" Then + wsc_out.SetCellDataLocal tmp_total + j, wsc_out.ColumnSearch, "4000" + ElseIf tmp_heading = "Net Amount" Then + wsc_out.SetCellDataLocal tmp_total + j, i_col_out, CMoney_String(Abs(CDbl(wsc_day.GetCellDataLocal(j, wsc_day.ColumnID("GOODS"))))) + wsc_out.SetCellDataLocal tmp_total + j, wsc_out.ColumnID("Tax Amount"), CMoney_String(Abs(CDbl(wsc_day.GetCellDataLocal(j, wsc_day.ColumnID("VAT"))))) + wsc_out.SetCellDataLocal tmp_total + j, wsc_out.ColumnID("TOT INV"), CMoney_String(CDbl(wsc_day.GetCellDataLocal(j, wsc_day.ColumnID("GOODS"))) + CDbl(wsc_day.GetCellDataLocal(j, wsc_day.ColumnID("VAT")))) + ElseIf tmp_heading = "Tax Code" Then + wsc_out.SetCellDataLocal tmp_total + j, i_col_out, "T1" + ElseIf tmp_heading = "User Name" Then + wsc_out.SetCellDataLocal tmp_total + j, i_col_out, "ALEX-IMPORTED" + End If + End If + End If + Next + Next + ' Customer name 'vlookup' + wsc_out.ColumnSearch = wsc_out.ColumnID("Account Reference") + ws_rel.Populate "Export", False, "Customer List", False + wsc_out.ExportLocalData2WS + + ' ' Populate matching columns + ' ws_rel.Populate "Export", False, "Cashbook", False, True + ' ws_rel.Populate "Export", False, "Daybook", False, True + +' RETURNS + ' WS data + wsc_out.ExportLocalData2WS + ' table objects + ws_out.ListObjects.Add(xlSrcRange, ws_out.Range("$A$1:$W$" & CStr(wsc_out.RowMax)), , xlYes).name = "tbl_audit" ' 'Audit Trail'! + ws_anal.PivotTables("pivot_audit").ClearTable + With ws_anal.PivotTables("pivot_audit") + .ColumnGrand = True + .HasAutoFormat = True + .DisplayErrorString = False + .DisplayNullString = True + .EnableDrilldown = True + .ErrorString = "" + .MergeLabels = False + .NullString = "" + .PageFieldOrder = 2 + .PageFieldWrapCount = 0 + .PreserveFormatting = True + .RowGrand = True + .SaveData = True + .PrintTitles = False + .RepeatItemsOnEachPrintedPage = True + .TotalsAnnotation = False + .CompactRowIndent = 1 + .InGridDropZones = False + .DisplayFieldCaptions = True + .DisplayMemberPropertyTooltips = False + .DisplayContextTooltips = True + .ShowDrillIndicators = True + .PrintDrillIndicators = False + .AllowMultipleFilters = False + .SortUsingCustomLists = True + .FieldListSortAscending = False + .ShowValuesRow = False + .CalculatedMembersInFilters = False + .RowAxisLayout xlCompactRow + End With + With ws_anal.PivotTables("pivot_audit").PivotCache + .RefreshOnFileOpen = False + .MissingItemsLimit = xlMissingItemsDefault + End With + ws_anal.PivotTables("pivot_audit").RepeatAllLabels xlRepeatLabels + With ws_anal.PivotTables("pivot_audit").PivotFields("CUST NAME") + .orientation = xlRowField + .position = 1 + End With + ws_anal.PivotTables("pivot_audit").AddDataField ws_anal.PivotTables( _ + "pivot_audit").PivotFields("Net Amount"), "Sum of Net Amount", xlSum + ' Bring presentation to front + ' AppActivate ppt.path + ' Set ppt = pptApp.Presentations.Open("C:\Users\edwar\OneDrive\Documents\4 Shires\Alex Automation\4 Shires Books Public\Pivot Linked.pptx") + ' PowerPoint.Presentations(ppt.path).Windows(1).Activate + ws_anal.Range("A1:B27").Copy + ' ppt.Slides(2).Shapes(1).TextFrame.TextRange.PasteSpecial + pptSlide.Shapes.PasteSpecial DataType:=ppPasteEnhancedMetafile + ' pptApp.ActiveWindow.View.PasteSpecial ppPasteEnhancedMetafile + Set paste_shape = pptSlide.Shapes(pptSlide.Shapes.count) + paste_shape.Left = paste_shape.Left - 150 + ws_anal.Range("A28:B54").Copy + ' ppt.Slides(2).Shapes(1).TextFrame.TextRange.PasteSpecial + pptSlide.Shapes.PasteSpecial DataType:=ppPasteEnhancedMetafile + ' pptApp.ActiveWindow.View.PasteSpecial ppPasteEnhancedMetafile + Set paste_shape = pptSlide.Shapes(pptSlide.Shapes.count) + paste_shape.Left = paste_shape.Left + 150 + ' Add overdue statuses + ws_anal.Cells(1, 3).value = "Overdue Status" + ws_anal.Cells(1, 3).Interior.Color = RGB(209, 225, 239) ' "#D1E1EF" + ws_anal.Cells(1, 3).Font.Bold = True + ws_anal.Columns("C:C").ColumnWidth = 14.14 + For i = 2 To 53 Step 1 + If (i < 5) Then + ws_anal.Cells(i, 3).value = OverdueStatusName(i - 2) + Else + ws_anal.Cells(i, 3).value = OverdueStatusName(CLng(Rnd() * 2)) + End If + Next + ' Emails + ' MsgBox "Ready to send emails?" + ' Sleep 25000 + ' Scroll through processed data, ppt + mail_account_balances ws_anal, ws_customers +' ERROR HANDLING +errhand: + On Error Resume Next + wb_cash.Close + wb_day.Close + wb_customers.Close +' endgame: +' PROCESSING DECELARATION + ' Enable automatic spreadsheet calculation - prevents refreshing of whole ws on each cell entry + Application.Calculation = xlCalculationAutomatic + ' Enable screen updating + Application.ScreenUpdating = True +End Sub + +Sub mail_account_balances(ByRef ws_anal As Worksheet, ByRef ws_customer As Worksheet) +' FUNCTION + ' Contact all customers (as necessary) regarding their account balance +' CONSTANTS + Const nCustomer = 52 +' VARIABLE DECLARATION + Dim olApp As Outlook.Application + ' Dim olNS As Outlook.Namespace + Dim ws_rel As ws_relation + Dim wsc_anal As ws_access + Dim wsc_customer As ws_access + Dim headings_V() As Variant + Dim headings_S() As String + ' Iterables + Dim iRow As Long + Dim iRowCustomer As Long + Dim colIDAnal_Company As Long + Dim colIDAnal_Balance As Long + Dim colIDAnal_status As Long + Dim colIDCustomer_Contact As Long + Dim colIDCustomer_Address As Long +' VARIABLE INSTANTIATION + Set olApp = New Outlook.Application + ' Set olNS = olApp.GetNamespace("MAPI") + ' Worksheet Relation + Set ws_rel = New ws_relation + ' Worksheet Containers + ' Customers + headings_V = Array("A/C", "Name", "Contact Name", "Telephone", "Email", "", "") + convert_1D_Variant_2_String headings_V, headings_S + Set wsc_customer = New ws_access + ' Init(ByRef ws As Worksheet, ByVal name As String, ByRef headings() As String, Optional Orient As orientation = orientation.ColumnHeaders, Optional search_col As Long = 1, Optional search_col_is_heading_index As Boolean = False, Optional search_row As Long = 1, Optional search_row_is_heading_index As Boolean = False, Optional col_min As Long = 1, Optional col_max As Long = 0, Optional row_min As Long = 2, Optional row_max As Long = 0, Optional gap_max As Long = 1, Optional mutable_headings As Boolean = False) + ' wsc_customer.Init ws_customer, "Customers", headings_S, ColumnHeaders, 2, True, 6, False, 1, 0, 7 + wsc_customer.Init ws_customer, "Customer List", headings_S, ColumnHeaders, 2, True, 6, False, 2, 0, 7, 0, 10 + ws_rel.AddWSC wsc_customer + ' Analysis + Erase headings_S + Erase headings_V + headings_V = Array("", "Row Labels", "", "", "", "Sum of Net Amount", "Overdue Status") + convert_1D_Variant_2_String headings_V, headings_S + Set wsc_anal = New ws_access + wsc_anal.Init ws_anal, "Analysis", headings_S, ColumnHeaders, 1, False, 1, False, 1, 0, 2 + If Not ws_rel.AddWSC(wsc_anal) Then GoTo errhand + ' Indices + colIDAnal_Company = wsc_anal.ColumnID("Row Labels") + colIDAnal_Balance = wsc_anal.ColumnID("Sum of Net Amount") + colIDAnal_status = wsc_anal.ColumnID("Overdue Status") + colIDCustomer_Contact = wsc_customer.ColumnID("Contact Name") + colIDCustomer_Address = wsc_customer.ColumnID("Email") +' METHODS + For iRow = 2 To 5 Step 1 ' 1 + nCustomer + iRowCustomer = wsc_customer.Match(wsc_anal.GetCellDataLocal(iRow - 1, colIDAnal_Company)) + mail_account_balance olApp, _ + wsc_customer.GetCellDataLocal(iRow - 1, colIDCustomer_Contact), _ + wsc_customer.GetCellDataLocal(iRow - 1, colIDCustomer_Address), _ + GetOverdueStatus(wsc_anal.GetCellDataLocal(iRow - 1, colIDAnal_status)), _ + CLng(wsc_anal.GetCellDataLocal(iRow - 1, colIDAnal_Balance)) + Next +' RETURNS +' ERROR HANDLING +errhand: + Exit Sub +End Sub + +Sub mail_account_balance(ByRef olApp As Outlook.Application, ByVal name As String, ByVal address As String, ByVal overdue_status As OverdueStatus, ByVal balance As Long) +' FUNCTION + ' Send email to account holder regarding balance +' ARGUMENTS + ' Outlook.Application olApp + ' String name + ' String address + ' OverdueStatus overdue_status + ' String balance +' VARIABLE DECLARATION + Dim new_mail As Object + Dim mail_body As String + Dim subj As String + +' VARIABLE INSTANTIATION + Set new_mail = olApp.CreateItem(olMailItem) + + mail_body = "" + mail_body = mail_body & "

Dear " & name & ",

" + +' METHODS + Select Case overdue_status + Case OverdueStatus.OVERDUE: + mail_body = mail_body & "

Your account is overdue with a balance of £" & CStr(balance) & ".
" + mail_body = mail_body & "Please resolve your balance as soon as possible.

" + subj = "Overdue account balance" + Case OverdueStatus.SUPEROVERDUE: + mail_body = mail_body & "

Your account is overdue with a balance of £" & CStr(balance) & ".
" + mail_body = mail_body & "Please resolve your balance as soon as possible.

" + subj = "REMINDER: Overdue account balance" + Case Else: + mail_body = mail_body & "Your account has a negative balance of £" & CStr(balance) & ".
" + mail_body = mail_body & "This balance is due to be settled by " & Format(DateSerial(2023, Month(Now()) + 1, -1), "Long Date") & ".

" + subj = "Negative account balance" + End Select + + mail_body = mail_body & "

Kind regards,
" + mail_body = mail_body & "Lord Edward Middleton-Smith
" + mail_body = mail_body & "Director
" + mail_body = mail_body & "Precision And Research Technology Systems Limited" + +' RETURNS + With new_mail + .To = address + .Subject = subj + .HTMLBody = mail_body + .Display + End With +End Sub + +Sub get_downloaded_sheets(ByRef wb As Workbook, ByRef wb_cash As Workbook, ByRef ws_cash As Worksheet, ByRef wb_day As Workbook, ByRef ws_day As Worksheet, ByRef wb_customers As Workbook, ByRef ws_customers As Worksheet, ByRef ws_rel As ws_relation, ByVal t_sleep As Long) +' FUNCTION + ' Get downloaded cashbook, daybook, and customer list +' ARGUMENTS + ' Worksheet ws_cash + ' Worksheet ws_day + ' Worksheet ws_customers + ' ws_relation ws_rel +' PROCESSING ACCELERATION +' CONSTANTS +' VARIABLE DECLARATION + ' Dim wb_cash As Workbook + ' Dim wb_day As Workbook + ' Dim wb_customers As Workbook + Dim fold As Scripting.Folder + Dim f As Scripting.File + Dim objFSO As Scripting.FileSystemObject + Dim path_S As String + Dim suffix As String + Dim iTmp As Long + Dim sTmp As String +' ARGUMENT VALIDATION +' VARIABLE INSTANTIATION + Set objFSO = New Scripting.FileSystemObject + path_S = GetLocalPath(wb.FullName) + path_S = Left(path_S, Len(path_S) - Len(wb.name) - 1) + If (Left(path_S, 41) = "https://d.docs.live.net/5728c5526437cee2/") Then + path_S = "C:\Users\edwar\OneDrive\" & Mid(path_S, 42) + End If + Debug.Print path_S + Set fold = objFSO.GetFolder(path_S) +' METHODS + For Each f In fold.Files + suffix = f.name + iTmp = InStr(1, suffix, ".xl") + If iTmp > 0 Then + suffix = Mid(suffix, iTmp) + suffix = Mid(suffix, 2, 2) + If suffix = "xl" Then + ' If f.Type = "Microsoft Macro-Enabled Workbook" Then + sTmp = f.name + If Not sTmp = wb.name Then + If Left(sTmp, 10) = "SL DAYBOOK" Then ' daybook + sTmp = f.path + Debug.Print sTmp + ' Set wb_day = Workbooks.Open(sTmp) + Set wb_day = ws_rel.SafeOpenWB(sTmp) + Set ws_day = wb_day.Sheets("Daybook") + ws_day.Activate + ws_day.Select + Sleep t_sleep + ElseIf Left(sTmp, 11) = "SL CASHBOOK" Then ' cashbook + sTmp = f.path + Debug.Print sTmp + ' Set wb_cash = Workbooks.Open(sTmp) + Set wb_cash = ws_rel.SafeOpenWB(sTmp) + Set ws_cash = wb_cash.Sheets("Cashbook") + ws_cash.Activate + ws_cash.Select + Sleep t_sleep + ElseIf sTmp = "Customers.xlsx" Then ' customer list + sTmp = f.path + Debug.Print sTmp + ' Set wb_customers = Workbooks.Open(sTmp) + Set wb_customers = ws_rel.SafeOpenWB(sTmp) + Set ws_customers = wb_customers.Sheets("Customer List") + ws_customers.Activate + ws_customers.Select + Sleep t_sleep + End If + End If + End If + End If + Next +' RETURNS +' ERROR HANDLING +' PROCESSING DECELARATION +End Sub + +Function create_sheet_out(ByRef wb As Workbook) As Worksheet +' FUNCTION + ' Create new output sheet +' ARGUMENTS + ' Workbook wb +' PROCESSING ACCELERATION +' CONSTANTS +' VARIABLE DECLARATION + Dim ws As Worksheet + Dim headings_V() As Variant + Dim colours_V() As Variant + Dim i As Long + Dim N As Long + Dim found As Boolean + Dim w As Long +' ARGUMENT VALIDATION +' VARIABLE INSTANTIATION + headings_V = Array("Type", "Account Reference", "Nominal A/C Ref", "Department Code", "Date", "Reference", "Details", "Net Amount", "Tax Code", "Tax Amount", "Exchange Rate", "Extra Reference", "User Name", "Project Refn", "Cost Code Refn", "TOT INV", "IMPORT ID NO.", "BATCH NO", "BATCH DATE", "CASH STATUS", "NO", "CUST NAME", "CUST NAME VLOOKUP") + ' colours_V = Array("50", "50", "50", "27", "50", "27", "27", "50", "50", "50", "27", "27", "27", "27", "27", "15", "15", "15", "15", "15", "15", "15", "15") + colours_V = Array("42", "42", "42", "17", "42", "17", "17", "42", "42", "42", "17", "17", "17", "17", "17", "15", "15", "15", "15", "15", "15", "15", "15") + N = SizeArrayDim_Variant(headings_V) + Set ws = wb.Sheets.Add() + ' Name ws + found = True + i = 0 + Do While found + found = False + For w = 1 To wb.Sheets.count + If i = 0 Then + If wb.Sheets.Item(w).name = "Audit Trail" Then + found = True + Exit For + End If + Else + If wb.Sheets.Item(w).name = "Audit Trail " & CStr(i) Then + found = True + Exit For + End If + End If + Next + If found Then i = i + 1 + Loop + If i = 0 Then + ws.name = "Audit Trail" + Else + ws.name = "Audit Trail " & CStr(i) + End If +' METHODS + For i = 1 To N + ws.Cells(1, i).value = headings_V(i) + ws.Cells(1, i).Interior.ColorIndex = CLng(colours_V(i)) + Next +' RETURNS + Set create_sheet_out = ws +' ERROR HANDLING +' PROCESSING DECELARATION +End Function + +Function OverdueStatusName(ByVal overdue_status As OverdueStatus) As String + Select Case overdue_status + Case UNDUE: + OverdueStatusName = "Not due" + Case OVERDUE: + OverdueStatusName = "Overdue" + Case SUPEROVERDUE: + OverdueStatusName = "Super Overdue" + End Select +End Function + +Function GetOverdueStatus(ByVal overdue_status As String) As OverdueStatus + Select Case overdue_status + Case "Not due": + GetOverdueStatus = OverdueStatus.UNDUE + Case "Overdue": + GetOverdueStatus = OverdueStatus.OVERDUE + Case "Super Overdue": + GetOverdueStatus = OverdueStatus.SUPEROVERDUE + End Select +End Function diff --git a/src/Matrix_Operations.bas b/src/Matrix_Operations.bas new file mode 100644 index 0000000..2977351 --- /dev/null +++ b/src/Matrix_Operations.bas @@ -0,0 +1,1474 @@ +' Author: Edward Middleton-Smith +' Precision And Research Technology Systems Limited + + +' MODULE INITIALISATION +' Set array start index to 1 to match spreadsheet indices +Option Base 1 +' Forced Variable Declaration +Option Explicit + + +Sub ReDimPreserve_String(ByRef arr() As String, ByVal dimension As Long, ByVal newbound As Long, ByVal NDim As Long) +' FUNCTION + ' Redimensionalise array without losing data (unless shrinking) +' ARGUMENTS + ' String Array arr + ' Long dimension - dimension of arr to change + ' Long newbound - new size of dimension + ' Long ndim - number of dimensions of arr +' VARIABLE DECLARATION + Dim x() As Long ' Iterables for each dimension + Dim N() As Long ' Size of each dimension + Dim i As Long + Dim j As Long + Dim iterate As Boolean + Dim Outs() As String + Dim Nold() As Long + Dim minbound As Long +' VARIABLE INSTANTIATION + ReDim x(NDim) + ReDim N(NDim) + iterate = True +' METHODS + ' Populate N + For i = 1 To NDim + x(i) = 1 + N(i) = SizeArrayDim_String(arr, i) + Next + Nold = N + N(dimension) = newbound + minbound = min_Long(newbound, Nold(dimension)) + ' Redimensionalise outputs + Select Case NDim + Case 1 + ReDim Outs(N(1)) + Case 2 + ReDim Outs(N(1), N(2)) + Case 3 + ReDim Outs(N(1), N(2), N(3)) + Case 4 + ReDim Outs(N(1), N(2), N(3), N(4)) + Case 5 + ReDim Outs(N(1), N(2), N(3), N(4), N(5)) + Case Else + MsgBox "Too many dimensions" + Exit Sub + End Select + ' Fill values + Do While iterate + ' Fill value + Select Case NDim + Case 1 + Outs(x(1)) = arr(x(1)) + Case 2 + Outs(x(1), x(2)) = arr(x(1), x(2)) + Case 3 + Outs(x(1), x(2), x(3)) = arr(x(1), x(2), x(3)) + Case 4 + Outs(x(1), x(2), x(3), x(4)) = arr(x(1), x(2), x(3), x(4)) + Case 5 + Outs(x(1), x(2), x(3), x(4), x(5)) = arr(x(1), x(2), x(3), x(4), x(5)) + Case Else + MsgBox "Too many dimensions" + Exit Sub + End Select + ' Iterate position + For i = NDim To 1 Step -1 + If (i = dimension) Then + If (x(dimension) < minbound) Then + x(dimension) = x(dimension) + 1 + If (dimension < NDim) Then + For j = dimension + 1 To NDim + x(j) = 1 + Next + End If + Exit For + End If + ElseIf (x(i) < N(i)) Then + x(i) = x(i) + 1 + If (i < NDim) Then + For j = i + 1 To NDim + x(j) = 1 + Next + End If + Exit For + End If + If (i = 1) Then + iterate = False + End If + Next + Loop +' RETURNS + arr = Outs +End Sub + + +Sub ReDimPreserve_Long(ByRef arr() As Long, ByVal dimension As Long, ByVal newbound As Long, ByVal NDim As Long) +' FUNCTION + ' Redimensionalise array without losing data (unless shrinking) +' ARGUMENTS + ' Long Array arr + ' Long dimension - dimension of arr to change + ' Long newbound - new size of dimension + ' Long ndim - number of dimensions of arr +' VARIABLE DECLARATION + Dim x() As Long ' Iterables for each dimension + Dim N() As Long ' Size of each dimension + Dim i As Long + Dim j As Long + Dim iterate As Boolean + Dim Outs() As Long + Dim Nold() As Long + Dim minbound As Long +' VARIABLE INSTANTIATION + ReDim x(NDim) + ReDim N(NDim) + iterate = True +' METHODS + ' Populate N + For i = 1 To NDim + x(i) = 1 + N(i) = SizeArrayDim_Long(arr, i) + Next + Nold = N + N(dimension) = newbound + minbound = min_Long(newbound, Nold(dimension)) + ' Redimensionalise outputs + Select Case NDim + Case 1 + ReDim Outs(N(1)) + Case 2 + ReDim Outs(N(1), N(2)) + Case 3 + ReDim Outs(N(1), N(2), N(3)) + Case 4 + ReDim Outs(N(1), N(2), N(3), N(4)) + Case 5 + ReDim Outs(N(1), N(2), N(3), N(4), N(5)) + Case Else + MsgBox "Too many dimensions" + Exit Sub + End Select + ' Fill values + Do While iterate + ' Fill value + Select Case NDim + Case 1 + Outs(x(1)) = arr(x(1)) + Case 2 + Outs(x(1), x(2)) = arr(x(1), x(2)) + Case 3 + Outs(x(1), x(2), x(3)) = arr(x(1), x(2), x(3)) + Case 4 + Outs(x(1), x(2), x(3), x(4)) = arr(x(1), x(2), x(3), x(4)) + Case 5 + Outs(x(1), x(2), x(3), x(4), x(5)) = arr(x(1), x(2), x(3), x(4), x(5)) + Case Else + MsgBox "Too many dimensions" + Exit Sub + End Select + ' Iterate position + For i = NDim To 1 Step -1 + If (i = dimension) Then + If (x(dimension) < minbound) Then + x(dimension) = x(dimension) + 1 + If (dimension < NDim) Then + For j = dimension + 1 To NDim + x(j) = 1 + Next + End If + Exit For + End If + ElseIf (x(i) < N(i)) Then + x(i) = x(i) + 1 + If (i < NDim) Then + For j = i + 1 To NDim + x(j) = 1 + Next + End If + Exit For + End If + If (i = 1) Then + iterate = False + End If + Next + Loop +' RETURNS + arr = Outs +End Sub + + +Sub ReDimPreserve_Variant(ByRef arr() As Variant, ByVal dimension As Long, ByVal newbound As Long, ByVal NDim As Long) +' FUNCTION + ' Redimensionalise array without losing data (unless shrinking) +' ARGUMENTS + ' Variant Array arr + ' Long dimension - dimension of arr to change + ' Long newbound - new size of dimension + ' Long ndim - number of dimensions of arr +' VARIABLE DECLARATION + Dim x() As Long ' Iterables for each dimension + Dim N() As Long ' Size of each dimension + Dim i As Long + Dim j As Long + Dim iterate As Boolean + Dim Outs() As Variant + Dim Nold() As Long + Dim minbound As Long +' VARIABLE INSTANTIATION + ReDim x(NDim) + ReDim N(NDim) + iterate = True +' METHODS + ' Populate N + For i = 1 To NDim + x(i) = 1 + N(i) = SizeArrayDim_Variant(arr, i) + Next + Nold = N + N(dimension) = newbound + minbound = min_Long(newbound, Nold(dimension)) + ' Redimensionalise outputs + Select Case NDim + Case 1 + ReDim Outs(N(1)) + Case 2 + ReDim Outs(N(1), N(2)) + Case 3 + ReDim Outs(N(1), N(2), N(3)) + Case 4 + ReDim Outs(N(1), N(2), N(3), N(4)) + Case 5 + ReDim Outs(N(1), N(2), N(3), N(4), N(5)) + Case Else + MsgBox "Too many dimensions" + Exit Sub + End Select + ' Fill values + Do While iterate + ' Fill value + Select Case NDim + Case 1 + Outs(x(1)) = arr(x(1)) + Case 2 + Outs(x(1), x(2)) = arr(x(1), x(2)) + Case 3 + Outs(x(1), x(2), x(3)) = arr(x(1), x(2), x(3)) + Case 4 + Outs(x(1), x(2), x(3), x(4)) = arr(x(1), x(2), x(3), x(4)) + Case 5 + Outs(x(1), x(2), x(3), x(4), x(5)) = arr(x(1), x(2), x(3), x(4), x(5)) + Case Else + MsgBox "Too many dimensions" + Exit Sub + End Select + ' Iterate position + For i = NDim To 1 Step -1 + If (i = dimension) Then + If (x(dimension) < minbound) Then + x(dimension) = x(dimension) + 1 + If (dimension < NDim) Then + For j = dimension + 1 To NDim + x(j) = 1 + Next + End If + Exit For + End If + ElseIf (x(i) < N(i)) Then + x(i) = x(i) + 1 + If (i < NDim) Then + For j = i + 1 To NDim + x(j) = 1 + Next + End If + Exit For + End If + If (i = 1) Then + iterate = False + End If + Next + Loop +' RETURNS + arr = Outs +End Sub + + +Function SizeArrayDim_String(ByRef arr() As String, Optional dimension As Long = 1) As Long +' FUNCTION + ' Find size of dimension of arr +' VARIABLE INSTANTIATION + dimension = max_Long(1, dimension) +' METHODS + On Error GoTo errhand + If Not ((Not arr) = -1) Then + SizeArrayDim_String = UBound(arr, dimension) - LBound(arr, dimension) + 1 + Else + SizeArrayDim_String = 0 + End If + Exit Function +' ERROR HANDLING +errhand: + SizeArrayDim_String = 0 +End Function + + +Function SizeArrayDim_Long(ByRef arr() As Long, Optional dimension As Long = 1) As Long +' FUNCTION + ' Find size of dimension of arr +' VARIABLE INSTANTIATION + dimension = max_Long(1, dimension) +' METHODS + On Error GoTo errhand + If Not ((Not arr) = -1) Then + SizeArrayDim_Long = UBound(arr, dimension) - LBound(arr, dimension) + 1 + Else + SizeArrayDim_Long = 0 + End If + Exit Function +' ERROR HANDLING +errhand: + SizeArrayDim_Long = 0 +End Function + + +Function SizeArrayDim_Variant(ByRef arr() As Variant, Optional dimension As Long = 1) As Long +' FUNCTION + ' Find size of dimension of arr +' VARIABLE INSTANTIATION + dimension = max_Long(1, dimension) +' METHODS + On Error GoTo errhand + If Not ((Not arr) = -1) Then + SizeArrayDim_Variant = UBound(arr, dimension) - LBound(arr, dimension) + 1 + Else + SizeArrayDim_Variant = 0 + End If + Exit Function +' ERROR HANDLING +errhand: + SizeArrayDim_Variant = 0 +End Function + + +Function SizeArrayDim_Variant_0(ByVal arr As Variant) As Long +' FUNCTION + ' Find size of dimension of arr +' METHODS + On Error GoTo errhand + If Not IsEmpty(arr) Then ' ((Not arr) = -1) Then + SizeArrayDim_Variant_0 = UBound(arr) - LBound(arr) + 1 + Else + SizeArrayDim_Variant_0 = 0 + End If + Exit Function +' ERROR HANDLING +errhand: + SizeArrayDim_Variant_0 = 0 +End Function + + +Function create_1D_mat_Boolean(Optional value As Boolean = False, Optional N As Long = 1) As Boolean() +' FUNCTION + ' Create 1D matrix (array) of size N, type Boolean and value +' ARGUMENTS + ' Boolean value - for each element of array + ' Long N - number of elements in array +' PROCESSING ACCELERATION +' CONSTANTS +' VARIABLE DECLARATION + Dim Outs() As Boolean + Dim i As Long +' ARGUMENT VALIDATION + N = max_Long(1, N) +' VARIABLE INSTANTIATION + ReDim Outs(N) +' METHODS + For i = 1 To N + Outs(i) = value + Next +' RETURNS + create_1D_mat_Boolean = Outs +End Function + + +Function create_1D_mat_Long(Optional value As Long = 0, Optional N As Long = 1) As Long() +' FUNCTION + ' Create 1D matrix (array) of size N, type Long and value +' ARGUMENTS + ' Long value - for each element of array + ' Long N - number of elements in array +' PROCESSING ACCELERATION +' CONSTANTS +' VARIABLE DECLARATION + Dim Outs() As Long + Dim i As Long +' ARGUMENT VALIDATION + N = max_Long(1, N) +' VARIABLE INSTANTIATION + ReDim Outs(N) +' METHODS + For i = 1 To N + Outs(i) = value + Next +' RETURNS + create_1D_mat_Long = Outs +End Function + + +Function create_1D_mat_String(Optional value As String = False, Optional N As Long = 1) As String() +' FUNCTION + ' Create 1D matrix (array) of size N, type String and value +' ARGUMENTS + ' String value - for each element of array + ' Long N - number of elements in array +' PROCESSING ACCELERATION +' CONSTANTS +' VARIABLE DECLARATION + Dim Outs() As String + Dim i As Long +' ARGUMENT VALIDATION + N = max_Long(1, N) +' VARIABLE INSTANTIATION + ReDim Outs(N) +' METHODS + For i = 1 To N + Outs(i) = value + Next +' RETURNS + create_1D_mat_String = Outs +End Function + + +Sub copy_N_mat_String(ByRef data_in() As String, ByRef data_out() As String, ByVal N_in As Long, ByVal N_out As Long) +' FUNCTION + ' Copy from one N-dimensional matrix into another all overlapping elements +' ARGUMENTS + ' String Matrix data_in - matrix to copy from + ' String Matrix data_out - matrix receiving data + ' Long N_in - number of dimensions in data_in + ' Long N_out - number of dimensions in N_out +' VARIABLE DECLARATION + Dim dims_in() As Long + Dim dims_out() As Long + Dim i As Long + Dim dim_min As Long + Dim x() As Long + Dim N() As Long +' ARGUMENT VALIDATION + If (N_in < 1 Or N_out <> N_in) Then Exit Sub +' VARIABLE INSTANTIATION + dim_min = min_Long(N_in, N_out) + ReDim dims_in(dim_min) + ReDim dims_out(dim_min) + ReDim x(dim_min) + ReDim N(dim_min) + For i = 1 To dim_min + dims_in(i) = SizeArrayDim_String(data_in, i) + dims_out(i) = SizeArrayDim_String(data_out, i) + x(i) = 1 + N(i) = min_Long(dims_in(i), dims_out(i)) + Next +' METHODS + Do While compare_all_iterators(x, N, dim_min) + set_index_N_mat_String data_out, x, dim_min, get_index_N_mat_String(data_in, x, N_out) + iterate_iterator x, N, dim_min + Loop +End Sub + + +Sub copy_N_mat_Long(ByRef data_in() As Long, ByRef data_out() As Long, ByVal N_in As Long, ByVal N_out As Long) +' FUNCTION + ' Copy from one N-dimensional matrix into another all overlapping elements +' ARGUMENTS + ' Long Matrix data_in - matrix to copy from + ' Long Matrix data_out - matrix receiving data + ' Long N_in - number of dimensions in data_in + ' Long N_out - number of dimensions in N_out +' VARIABLE DECLARATION + Dim dims_in() As Long + Dim dims_out() As Long + Dim i As Long + Dim dim_min As Long + Dim x() As Long + Dim N() As Long +' ARGUMENT VALIDATION + If (N_in < 1 Or N_out <> N_in) Then Exit Sub +' VARIABLE INSTANTIATION + dim_min = min_Long(N_in, N_out) + ReDim dims_in(dim_min) + ReDim dims_out(dim_min) + ReDim x(dim_min) + ReDim N(dim_min) + For i = 1 To dim_min + dims_in(i) = SizeArrayDim_Long(data_in, i) + dims_out(i) = SizeArrayDim_Long(data_out, i) + x(i) = 1 + N(i) = min_Long(dims_in(i), dims_out(i)) + Next +' METHODS + Do While compare_all_iterators(x, N, dim_min) + set_index_N_mat_Long data_out, x, dim_min, get_index_N_mat_Long(data_in, x, N_out) + iterate_iterator x, N, dim_min + Loop +End Sub + + +Sub copy_N_mat_Variant(ByRef data_in() As Variant, ByRef data_out() As Variant, ByVal N_in As Long, ByVal N_out As Long) +' FUNCTION + ' Copy from one N-dimensional matrix into another all overlapping elements +' ARGUMENTS + ' Variant Matrix data_in - matrix to copy from + ' Variant Matrix data_out - matrix receiving data + ' Long N_in - number of dimensions in data_in + ' Long N_out - number of dimensions in N_out +' VARIABLE DECLARATION + Dim dims_in() As Long + Dim dims_out() As Long + Dim i As Long + Dim dim_min As Long + Dim x() As Long + Dim N() As Long +' ARGUMENT VALIDATION + If (N_in < 1 Or N_out <> N_in) Then Exit Sub +' VARIABLE INSTANTIATION + dim_min = min_Long(N_in, N_out) + ReDim dims_in(dim_min) + ReDim dims_out(dim_min) + ReDim x(dim_min) + ReDim N(dim_min) + For i = 1 To dim_min + dims_in(i) = SizeArrayDim_Variant(data_in, i) + dims_out(i) = SizeArrayDim_Variant(data_out, i) + x(i) = 1 + N(i) = min_Long(dims_in(i), dims_out(i)) + Next +' METHODS + Do While compare_all_iterators(x, N, dim_min) + set_index_N_mat_Variant data_out, x, dim_min, get_index_N_mat_Variant(data_in, x, N_out) + iterate_iterator x, N, dim_min + Loop +End Sub + + +Sub iterate_iterator(ByRef x() As Long, ByRef N() As Long, ByVal NDim As Long) +' FUNCTION + ' Increment iterator x under limits N +' ARGUMENTS + ' Long Array x - iterator + ' Long Array SzDim1 - iterator limits + ' Long NDim +' VARIABLE DECLARATION + Dim i As Long + Dim j As Long +' METHODS + For i = NDim To 1 Step -1 + If (x(i) < N(i)) Then + x(i) = x(i) + 1 + If (i < NDim) Then + For j = i + 1 To NDim + x(j) = 1 + Next + End If + Exit Sub + End If + Next +' RETURNS + x(1) = x(1) + 1 ' what is this +End Sub + + +Function compare_all_iterators(ByRef x() As Long, ByRef N() As Long, ByVal NDim As Long) As Boolean +' FUNCTION + ' Are all x(i) <= N(i) +' ARGUMENTS + ' Long Array x + ' Long Array N + ' Long ndim +' VARIABLE DECLARATION + Dim i As Long +' ARGUMENT VALIDATION + compare_all_iterators = False + If (NDim < 1) Then Exit Function +' VARIABLE INSTANTIATION + compare_all_iterators = True +' METHODS + For i = 1 To NDim + If Not (x(i) <= N(i)) Then + compare_all_iterators = False + Exit Function + End If + Next +End Function + + +Function create_N_mat_String(ByVal N As Long, ByRef dims() As Long) As String() +' FUNCTION + ' Create N-dimensional String-type matrix +' ARGUMENTS + ' Long N - number of dimensions + ' Long Array dims - size of each dimension +' ARGUMENT VALIDATION + If Not N <= SizeArrayDim_Long(dims) Then Exit Function +' VARIABLE INSTANTIATION + Select Case N + Case 1 + ReDim create_N_mat_String(max_Long(1, dims(1))) + Case 2 + ReDim create_N_mat_String(max_Long(1, dims(1)), max_Long(1, dims(2))) + Case 3 + ReDim create_N_mat_String(max_Long(1, dims(1)), max_Long(1, dims(2)), max_Long(1, dims(3))) + Case 4 + ReDim create_N_mat_String(max_Long(1, dims(1)), max_Long(1, dims(2)), max_Long(1, dims(3)), max_Long(1, dims(4))) + Case 5 + ReDim create_N_mat_String(max_Long(1, dims(1)), max_Long(1, dims(2)), max_Long(1, dims(3)), max_Long(1, dims(4)), max_Long(1, dims(5))) + Case Else: + Exit Function + End Select +End Function + + +Function create_N_mat_Long(ByVal N As Long, ByRef dims() As Long) As Long() +' FUNCTION + ' Create N-dimensional Long-type matrix +' ARGUMENTS + ' Long N - number of dimensions + ' Long Array dims - size of each dimension +' ARGUMENT VALIDATION + If Not N <= SizeArrayDim_Long(dims) Then Exit Function +' VARIABLE INSTANTIATION + Select Case N + Case 1 + ReDim create_N_mat_Long(max_Long(1, dims(1))) + Case 2 + ReDim create_N_mat_Long(max_Long(1, dims(1)), max_Long(1, dims(2))) + Case 3 + ReDim create_N_mat_Long(max_Long(1, dims(1)), max_Long(1, dims(2)), max_Long(1, dims(3))) + Case 4 + ReDim create_N_mat_Long(max_Long(1, dims(1)), max_Long(1, dims(2)), max_Long(1, dims(3)), max_Long(1, dims(4))) + Case 5 + ReDim create_N_mat_Long(max_Long(1, dims(1)), max_Long(1, dims(2)), max_Long(1, dims(3)), max_Long(1, dims(4)), max_Long(1, dims(5))) + Case Else: + Exit Function + End Select +End Function + + +Function create_N_mat_Variant(ByVal N As Long, ByRef dims() As Long) As Variant() +' FUNCTION + ' Create N-dimensional Variant-type matrix +' ARGUMENTS + ' Long N - number of dimensions + ' Long Array dims - size of each dimension +' ARGUMENT VALIDATION + If Not N <= SizeArrayDim_Long(dims) Then Exit Function +' VARIABLE INSTANTIATION + Select Case N + Case 1 + ReDim create_N_mat_Variant(max_Long(1, dims(1))) + Case 2 + ReDim create_N_mat_Variant(max_Long(1, dims(1)), max_Long(1, dims(2))) + Case 3 + ReDim create_N_mat_Variant(max_Long(1, dims(1)), max_Long(1, dims(2)), max_Long(1, dims(3))) + Case 4 + ReDim create_N_mat_Variant(max_Long(1, dims(1)), max_Long(1, dims(2)), max_Long(1, dims(3)), max_Long(1, dims(4))) + Case 5 + ReDim create_N_mat_Variant(max_Long(1, dims(1)), max_Long(1, dims(2)), max_Long(1, dims(3)), max_Long(1, dims(4)), max_Long(1, dims(5))) + Case Else: + Exit Function + End Select +End Function + + +Function get_index_N_mat_String(ByRef nd_matrix() As String, ByRef position() As Long, ByVal NDim As Long) As String +' FUNCTION + ' Get value from indexed cell of N-dimensional String-type matrix +' ARGUMENTS + ' String Matrix nd_matrix + ' Long Array position + ' Long ndim - number of dimensions in matrix +' VARIABLE DECLARATION + Dim x As Long +' ARGUMENT VALIDATION + get_index_N_mat_String = "Error" + If NDim < 1 Then Exit Function + If Not SizeArrayDim_Long(position) = NDim Then Exit Function + If Not SizeArrayDim_String(nd_matrix, NDim) >= 1 Then Exit Function + For x = 1 To NDim + If Not SizeArrayDim_String(nd_matrix, x) >= position(x) Then Exit Function + If Not position(x) >= 1 Then Exit Function + Next +' METHODS + Select Case NDim + Case 1: + get_index_N_mat_String = nd_matrix(position(1)) + Case 2: + get_index_N_mat_String = nd_matrix(position(1), position(2)) + Case 3: + get_index_N_mat_String = nd_matrix(position(1), position(2), position(3)) + Case 4: + get_index_N_mat_String = nd_matrix(position(1), position(2), position(3), position(4)) + Case 5: + get_index_N_mat_String = nd_matrix(position(1), position(2), position(3), position(4), position(5)) + Case Else: + Exit Function + End Select +End Function + + +Function get_index_N_mat_Long(ByRef nd_matrix() As Long, ByRef position() As Long, ByVal NDim As Long) As Long +' FUNCTION + ' Get value from indexed cell of N-dimensional Long-type matrix +' ARGUMENTS + ' Long Matrix nd_matrix + ' Long Array position + ' Long ndim - number of dimensions in matrix +' VARIABLE DECLARATION + Dim x As Long +' ARGUMENT VALIDATION + get_index_N_mat_Long = "Error" + If NDim < 1 Then Exit Function + If Not SizeArrayDim_Long(position) = NDim Then Exit Function + If Not SizeArrayDim_Long(nd_matrix, NDim) >= 1 Then Exit Function + For x = 1 To NDim + If Not SizeArrayDim_Long(nd_matrix, x) >= position(x) Then Exit Function + If Not position(x) >= 1 Then Exit Function + Next +' METHODS + Select Case NDim + Case 1: + get_index_N_mat_Long = nd_matrix(position(1)) + Case 2: + get_index_N_mat_Long = nd_matrix(position(1), position(2)) + Case 3: + get_index_N_mat_Long = nd_matrix(position(1), position(2), position(3)) + Case 4: + get_index_N_mat_Long = nd_matrix(position(1), position(2), position(3), position(4)) + Case 5: + get_index_N_mat_Long = nd_matrix(position(1), position(2), position(3), position(4), position(5)) + Case Else: + Exit Function + End Select +End Function + + +Function get_index_N_mat_Variant(ByRef nd_matrix() As Variant, ByRef position() As Long, ByVal NDim As Long) As Variant +' FUNCTION + ' Get value from indexed cell of N-dimensional Variant-type matrix +' ARGUMENTS + ' Variant Matrix nd_matrix + ' Long Array position + ' Long ndim - number of dimensions in matrix +' VARIABLE DECLARATION + Dim x As Long +' ARGUMENT VALIDATION + get_index_N_mat_Variant = "Error" + If NDim < 1 Then Exit Function + If Not SizeArrayDim_Long(position) = NDim Then Exit Function + If Not SizeArrayDim_Variant(nd_matrix, NDim) >= 1 Then Exit Function + For x = 1 To NDim + If Not SizeArrayDim_Variant(nd_matrix, x) >= position(x) Then Exit Function + If Not position(x) >= 1 Then Exit Function + Next +' METHODS + Select Case NDim + Case 1: + get_index_N_mat_Variant = nd_matrix(position(1)) + Case 2: + get_index_N_mat_Variant = nd_matrix(position(1), position(2)) + Case 3: + get_index_N_mat_Variant = nd_matrix(position(1), position(2), position(3)) + Case 4: + get_index_N_mat_Variant = nd_matrix(position(1), position(2), position(3), position(4)) + Case 5: + get_index_N_mat_Variant = nd_matrix(position(1), position(2), position(3), position(4), position(5)) + Case Else: + Exit Function + End Select +End Function + + +Sub set_index_N_mat_String(ByRef nd_matrix() As String, ByRef position() As Long, ByVal NDim As Long, ByVal vNew As String) +' FUNCTION + ' Get value from indexed cell of N-dimensional String-type matrix +' ARGUMENTS + ' String Matrix nd_matrix + ' Long Array position + ' Long ndim - number of dimensions in matrix +' VARIABLE DECLARATION + Dim x As Long +' ARGUMENT VALIDATION + ' get_index_N_mat_String = "Error" + If NDim < 1 Then Exit Sub + If Not SizeArrayDim_Long(position) = NDim Then GoTo exitsub + If Not SizeArrayDim_String(nd_matrix, NDim) >= 1 Then GoTo exitsub + For x = 1 To NDim + If Not SizeArrayDim_String(nd_matrix, x) >= position(x) Then GoTo exitsub + If Not position(x) >= 1 Then GoTo exitsub + Next +' METHODS + Select Case NDim + Case 1: + nd_matrix(position(1)) = vNew + Case 2: + nd_matrix(position(1), position(2)) = vNew + Case 3: + nd_matrix(position(1), position(2), position(3)) = vNew + Case 4: + nd_matrix(position(1), position(2), position(3), position(4)) = vNew + Case 5: + nd_matrix(position(1), position(2), position(3), position(4), position(5)) = vNew + Case Else: + Exit Sub + End Select + Exit Sub +exitsub: + MsgBox "Error" +End Sub + + +Sub set_index_N_mat_Long(ByRef nd_matrix() As Long, ByRef position() As Long, ByVal NDim As Long, ByVal vNew As Long) +' FUNCTION + ' Get value from indexed cell of N-dimensional String-type matrix +' ARGUMENTS + ' Long Matrix nd_matrix + ' Long Array position + ' Long ndim - number of dimensions in matrix +' VARIABLE DECLARATION + Dim x As Long +' ARGUMENT VALIDATION + ' get_index_N_mat_String = "Error" + If NDim < 1 Then Exit Sub + If Not SizeArrayDim_Long(position) = NDim Then GoTo exitsub + If Not SizeArrayDim_Long(nd_matrix, NDim) >= 1 Then GoTo exitsub + For x = 1 To NDim + If Not SizeArrayDim_Long(nd_matrix, x) >= position(x) Then GoTo exitsub + If Not position(x) >= 1 Then GoTo exitsub + Next +' METHODS + Select Case NDim + Case 1: + nd_matrix(position(1)) = vNew + Case 2: + nd_matrix(position(1), position(2)) = vNew + Case 3: + nd_matrix(position(1), position(2), position(3)) = vNew + Case 4: + nd_matrix(position(1), position(2), position(3), position(4)) = vNew + Case 5: + nd_matrix(position(1), position(2), position(3), position(4), position(5)) = vNew + Case Else: + Exit Sub + End Select + Exit Sub +exitsub: + MsgBox "Error" +End Sub + + +Sub set_index_N_mat_Variant(ByRef nd_matrix() As Variant, ByRef position() As Long, ByVal NDim As Long, ByVal vNew As Variant) +' FUNCTION + ' Get value from indexed cell of N-dimensional String-type matrix +' ARGUMENTS + ' Variant Matrix nd_matrix + ' Long Array position + ' Long ndim - number of dimensions in matrix +' VARIABLE DECLARATION + Dim x As Long +' ARGUMENT VALIDATION + ' get_index_N_mat_String = "Error" + If NDim < 1 Then GoTo exitsub + If Not SizeArrayDim_Long(position) = NDim Then GoTo exitsub + If Not SizeArrayDim_Variant(nd_matrix, NDim) >= 1 Then GoTo exitsub + For x = 1 To NDim + If Not SizeArrayDim_Variant(nd_matrix, x) >= position(x) Then GoTo exitsub + If Not position(x) >= 1 Then GoTo exitsub + Next +' METHODS + Select Case NDim + Case 1: + nd_matrix(position(1)) = vNew + Case 2: + nd_matrix(position(1), position(2)) = vNew + Case 3: + nd_matrix(position(1), position(2), position(3)) = vNew + Case 4: + nd_matrix(position(1), position(2), position(3), position(4)) = vNew + Case 5: + nd_matrix(position(1), position(2), position(3), position(4), position(5)) = vNew + Case Else: + Exit Sub + End Select + Exit Sub +exitsub: + MsgBox "Error" +End Sub + + +Sub convert_1D_Variant_2_String(ByRef input_array() As Variant, ByRef return_array() As String) +' FUNCTION + ' Convert 1D Variant array to 1D String array +' ARGUMENTS + ' Variant Array input_array + ' String Array return_array +' VARIABLE DECLARATION + Dim N As Long + Dim i As Long +' ARGUMENT VALIDATION + If ((Not input_array) = -1) Then + ReDim return_array(1) + return_array(1) = "Error" + Exit Sub + End If +' VARIABLE INSTANTIATION + N = SizeArrayDim_Variant(input_array) + ReDim return_array(N) +' METHODS + For i = 1 To N + return_array(i) = CStr(input_array(i)) + Next +End Sub + + +Sub convert_1D_Variant_2_Long(ByRef input_array() As Variant, ByRef return_array() As Long) +' FUNCTION + ' Convert 1D Variant array to 1D Long array +' ARGUMENTS + ' Variant Array input_array + ' Long Array return_array +' VARIABLE DECLARATION + Dim N As Long + Dim i As Long +' ARGUMENT VALIDATION + If ((Not input_array) = -1) Then + ReDim return_array(1) + return_array(1) = "Error" + Exit Sub + End If +' VARIABLE INSTANTIATION + N = SizeArrayDim_Variant(input_array) + ReDim return_array(N) +' METHODS + For i = 1 To N + return_array(i) = CStr(input_array(i)) + Next +End Sub + + +Sub convert_2D_Variant_2_String(ByRef input_array() As Variant, ByRef return_array() As String) +' FUNCTION + ' Convert 2D matrix from Variant to String +' ARGUMENTS + ' Variant Array input_array + ' String Array return_array +' VARIABLE DECLARATION + Dim N(2) As Long + Dim i As Long + Dim j As Long +' ARGUMENT VALIDATION + If ((Not input_array) = -1) Then + ReDim return_array(1) + return_array(1) = "Error" + Exit Sub + End If +' VARIABLE INSTANTIATION + ' ReDim N(2) + N(1) = SizeArrayDim_Variant(input_array, 1) + N(2) = SizeArrayDim_Variant(input_array, 2) + ReDim return_array(N(1), N(2)) +' METHODS + For i = 1 To N(1) + For j = 1 To N(2) + return_array(i, j) = CStr(input_array(i, j)) + Next + Next +End Sub + + +Sub convert_2D_Variant_2_Long(ByRef input_array() As Variant, ByRef return_array() As Long) +' FUNCTION + ' Convert 2D matrix from Variant to Long +' ARGUMENTS + ' Variant Array input_array + ' Long Array return_array +' VARIABLE DECLARATION + Dim N() As Long + Dim i As Long + Dim j As Long +' ARGUMENT VALIDATION + If ((Not input_array) = -1) Then + ReDim return_array(1) + return_array(1) = "Error" + Exit Sub + End If +' VARIABLE INSTANTIATION + ReDim N(2) + N(1) = SizeArrayDim_Variant(input_array, 1) + N(2) = SizeArrayDim_Variant(input_array, 2) + ReDim return_array(N(1), N(2)) +' METHODS + For i = 1 To N(1) + For j = 1 To N(2) + return_array(i, j) = CLng(input_array(i, j)) + Next + Next +End Sub + + +Function last_filled_cell(ByVal array1D As Variant, Optional start As Long = 1, Optional max_i As Long = -1, Optional gap_max As Long = 1, Optional dir_move As dir_traverse = dir_traverse.FORWARDS) As Long +' FUNCTION + ' Find last populated cell in 1D array from start to max_i with maximum number of consecutive empty cells gap_max +' ARGUMENTS + ' Variant Array array1D + ' Long start + ' Long max_i + ' Long gap_max + ' dir_traverse dir_move +' VARIABLE DECLARATION + Dim found_last As Boolean + Dim temp As Variant + Dim gap_count As Long + Dim i As Long +' ARGUMENT VALIDATION + If max_i < 1 Then + max_i = SizeArrayDim_Variant_0(array1D) + End If + If (start < 0 Or start > max_i) Then Exit Function +' VARIABLE INSTANTIATION + If dir_move = FORWARDS Then + i = start - 1 + Else + i = max_i + max_i = start + start = i + i = max_i + 1 + End If +' METHODS + Do While Not found_last + i = i + 1 + If i = max_i Then + found_last = True + ElseIf IsEmpty(array1D(i)) Or array1D(i) = "" Then + gap_count = gap_count + 1 + Else + gap_count = 0 + End If + If gap_count > gap_max Then + found_last = True + End If + Loop +' RETURNS + last_filled_cell = i - gap_count +End Function + + +Function max_n_Long(ByRef array1D() As Long, Optional N As Long = 0, Optional start As Long = 1, Optional dir_move As dir_traverse = dir_traverse.FORWARDS) As Long +' FUNCTION + ' Maximum Long value in array1D from start up to start + N - 1 +' ARGUMENTS + ' Long Array array1D + ' Long N - number of elements to check + ' Long start - first element to check +' VARIABLE DECLARATION + Dim i As Long + Dim max_i As Long + Dim grand_max As Long +' ARGUMENT VALIDATION + start = max_Long(1, start) + max_i = SizeArrayDim_Long(array1D) + If N > 0 Then + If start + N - 1 > max_i Then + MsgBox "Invalid search indices for array of size " & CStr(max_i) + End If + End If +' METHODS + If dir_move = FORWARDS Then + For i = start To max_i + grand_max = max_Long(grand_max, array1D(i)) + Next + Else + For i = start To 1 Step -1 + grand_max = max_Long(grand_max, array1D(i)) + Next + End If +' RETURNS + max_n_Long = grand_max +End Function + + +Function min_n_Long(ByRef array1D() As Long, Optional N As Long = 0, Optional start As Long = 1, Optional dir_move As dir_traverse = dir_traverse.FORWARDS) As Long +' FUNCTION + ' Minimum Long value in array1D from start up to start + N - 1 +' ARGUMENTS + ' Long Array array1D + ' Long N - number of elements to check + ' Long start - first element to check +' VARIABLE DECLARATION + Dim i As Long + Dim max_i As Long + Dim grand_min As Long +' ARGUMENT VALIDATION + start = max_Long(1, start) + max_i = SizeArrayDim_Long(array1D) + If N > 0 Then + If start + N - 1 > max_i Then + MsgBox "Invalid search indices for array of size " & CStr(max_i) + End If + End If +' METHODS + If dir_move = FORWARDS Then + For i = start To max_i + grand_min = min_Long(grand_min, array1D(i)) + Next + Else + For i = start To 1 Step -1 + grand_min = min_Long(grand_min, array1D(i)) + Next + End If +' RETURNS + min_n_Long = grand_min +End Function + + +Function match_Long(ByVal key As Long, ByRef array1D() As Long, Optional start As Long = 1, Optional max_i As Long = 0, Optional dir_move As dir_traverse = dir_traverse.FORWARDS) As Long +' FUNCTION + ' Find first or last instance of key in array1D +' ARGUMENTS + ' Long key + ' Long Array array1D + ' Long start + ' Long max_i + ' dir_traverse dir_move +' VARIABLE DECLARATION + Dim i As Long +' ARGUMENT VALIDATION + If max_i < 1 Then + max_i = SizeArrayDim_Long(array1D) + End If + If (start < 0 Or start > max_i) Then Exit Function +' METHODS + If dir_move = FORWARDS Then + For i = start To max_i + If array1D(i) = key Then + match_Long = i + Exit Function + End If + Next + Else + For i = start To 1 Step -1 + If array1D(i) = key Then + match_Long = i + Exit Function + End If + Next + End If +End Function + + +Function match_String(ByVal key As String, ByRef array1D() As String, Optional start As Long = 1, Optional max_i As Long = 0, Optional dir_move As dir_traverse = dir_traverse.FORWARDS) As Long +' FUNCTION + ' Find first or last instance of key in array1D +' ARGUMENTS + ' String key + ' String Array array1D + ' Long start + ' Long max_i + ' dir_traverse dir_move +' VARIABLE DECLARATION + Dim i As Long +' ARGUMENT VALIDATION + If max_i < 1 Then + max_i = SizeArrayDim_String(array1D) + End If + If (start < 0 Or start > max_i) Then Exit Function +' METHODS + If dir_move = FORWARDS Then + For i = start To max_i + If array1D(i) = key Then + match_String = i + Exit Function + End If + Next + Else + For i = start To 1 Step -1 + If array1D(i) = key Then + match_String = i + Exit Function + End If + Next + End If +End Function + + +Function match_Variant(ByVal key As Variant, ByRef array1D() As Variant, Optional start As Long = 1, Optional max_i As Long = 0, Optional dir_move As dir_traverse = dir_traverse.FORWARDS) As Long +' FUNCTION + ' Find first or last instance of key in array1D +' ARGUMENTS + ' Variant key + ' Variant Array array1D + ' Long start + ' Long max_i + ' dir_traverse dir_move +' VARIABLE DECLARATION + Dim i As Long +' ARGUMENT VALIDATION + If max_i < 1 Then + max_i = SizeArrayDim_Variant(array1D, 2) + End If + If (start < 0 Or start > max_i) Then Exit Function +' METHODS + If dir_move = FORWARDS Then + For i = start To max_i + If array1D(i) = key Then + match_Variant = i + Exit Function + End If + Next + Else + For i = start To 1 Step -1 + If array1D(i) = key Then + match_Variant = i + Exit Function + End If + Next + End If +End Function + + +Function change_array_base_String(ByRef array1D() As String, Optional base_new As Long = 1) As String() +' FUNCTION + ' Change base of array1D to new_base, if necessary +' ARGUMENTS + ' String Array array1D + ' Long base_new +' VARIABLE DECLARATION + Dim base_old As Long + Dim i As Long + Dim N As Long + Dim array_out() As String +' ARGUMENT VALIDATION + N = SizeArrayDim_String(array1D) + If N < 1 Then Exit Function +' VARIABLE INSTANTIATION + base_old = LBound(array1D) + ReDim array_out(N) +' METHODS + If base_old = base_new Then + change_array_base_String = array1D + Exit Function + End If + For i = 1 To N + array_out(base_new + i - 1) = array1D(base_old + i - 1) + Next +' RETURNS + change_array_base_String = array_out +End Function + + +Function get_1D_strip_N_mat_String(ByRef N_mat() As String, ByVal dimension As Long, ByRef position() As Long) As String() +' FUNCTION + ' Get 1D array of String-type N-dimensional matrix with all but one dimension fixed +' ARGUMENTS + ' String Array N_mat + ' Long dimension - dimension of N-mat to vary + ' Long Array position - fixed coordinates +' VARIABLE DECLARATION + Dim Outs() As String + Dim x() As Long + Dim i As Long + Dim N As Long + Dim x_max As Long + Dim p_max As Long +' ARGUMENT VALIDATION + If dimension < 1 Then + MsgBox "Error: Dimension out of range." + Exit Function + End If + p_max = SizeArrayDim_Long(position) + If p_max = 0 Then + MsgBox "Error: Position is nothing." + Exit Function + End If + If (p_max < dimension - 1) Then + MsgBox "Error: Insufficient quantity of dimensions in position for dimension " & CStr(dimension) & "." + Exit Function + End If + x_max = SizeArrayDim_String(N_mat, N) + If x_max = 0 Then + MsgBox "Error: N-dimensional Matrix of insufficient quantity of dimensions." + Exit Function + End If + x_max = SizeArrayDim_String(N_mat, N + 1) + If x_max > 0 Then + MsgBox "Error: N-dimensional Matrix of too many dimensions." + Exit Function + End If +' VARIABLE INSTANTIATION + x_max = SizeArrayDim_String(N_mat, dimension) + ReDim Outs(x_max) + ReDim x(N) + For i = 1 To p_max + x(i) = position(i) + Next +' METHODS + For i = 1 To x_max + x(dimension) = i + Outs(i) = get_index_N_mat_String(N_mat, x, N) + Next +' RETURNS + get_1D_strip_N_mat_String = Outs +End Function + + +Function get_1D_strip_N_mat_Long(ByRef N_mat() As Long, ByVal dimension As Long, ByRef position() As Long) As Long() +' FUNCTION + ' Get 1D array of Long-type N-dimensional matrix with all but one dimension fixed +' ARGUMENTS + ' String Array N_mat + ' Long dimension - dimension of N-mat to vary + ' Long Array position - fixed coordinates +' VARIABLE DECLARATION + Dim Outs() As Long + Dim x() As Long + Dim i As Long + Dim N As Long + Dim x_max As Long + Dim p_max As Long +' ARGUMENT VALIDATION + If dimension < 1 Then + MsgBox "Error: Dimension out of range." + Exit Function + End If + p_max = SizeArrayDim_Long(position) + If p_max = 0 Then + MsgBox "Error: Position is nothing." + Exit Function + End If + If (p_max < dimension - 1) Then + MsgBox "Error: Insufficient quantity of dimensions in position for dimension " & CStr(dimension) & "." + Exit Function + End If + N = max_Long(dimension, p_max) + x_max = SizeArrayDim_Long(N_mat, N) + If x_max = 0 Then + MsgBox "Error: N-dimensional Matrix of insufficient quantity of dimensions." + Exit Function + End If + x_max = SizeArrayDim_Long(N_mat, N + 1) + If x_max > 0 Then + MsgBox "Error: N-dimensional Matrix of too many dimensions." + Exit Function + End If +' VARIABLE INSTANTIATION + x_max = SizeArrayDim_Long(N_mat, dimension) + ReDim Outs(x_max) + ReDim x(N) + For i = 1 To p_max + x(i) = position(i) + Next +' METHODS + For i = 1 To x_max + x(dimension) = i + Outs(i) = get_index_N_mat_Long(N_mat, x, N) + Next +' RETURNS + get_1D_strip_N_mat_Long = Outs +End Function + + +Function get_1D_strip_N_mat_Variant(ByRef N_mat() As Variant, ByVal dimension As Long, ByRef position() As Long) As Variant() +' FUNCTION + ' Get 1D array of Variant-type N-dimensional matrix with all but one dimension fixed +' ARGUMENTS + ' String Array N_mat + ' Long dimension - dimension of N-mat to vary + ' Long Array position - fixed coordinates +' VARIABLE DECLARATION + Dim Outs() As Variant + Dim x() As Long + Dim i As Long + Dim N As Long + Dim x_max As Long + Dim p_max As Long +' ARGUMENT VALIDATION + If dimension < 1 Then + MsgBox "Error: Dimension out of range." + Exit Function + End If + p_max = SizeArrayDim_Long(position) + If p_max = 0 Then + MsgBox "Error: Position is nothing." + Exit Function + End If + If (p_max < dimension - 1) Then + MsgBox "Error: Insufficient quantity of dimensions in position for dimension " & CStr(dimension) & "." + Exit Function + End If + x_max = SizeArrayDim_Variant(N_mat, N) + If x_max = 0 Then + MsgBox "Error: N-dimensional Matrix of insufficient quantity of dimensions." + Exit Function + End If + x_max = SizeArrayDim_Variant(N_mat, N + 1) + If x_max > 0 Then + MsgBox "Error: N-dimensional Matrix of too many dimensions." + Exit Function + End If +' VARIABLE INSTANTIATION + x_max = SizeArrayDim_Variant(N_mat, dimension) + ReDim Outs(x_max) + ReDim x(N) + For i = 1 To p_max + x(i) = position(i) + Next +' METHODS + For i = 1 To x_max + x(dimension) = i + Outs(i) = get_index_N_mat_Variant(N_mat, x, N) + Next +' RETURNS + get_1D_strip_N_mat_Variant = Outs +End Function + + +Function Mod_Double(ByVal numerator As Double, ByVal denominator As Double) As Double +' FUNCTION + ' Modulo method for doubles +' ARGUMENTS + ' Double numerator + ' Double denominator +' METHODS + Do While numerator > denominator + numerator = numerator - denominator + Loop + Do While numerator < 0 + numerator = numerator + denominator + Loop +' RETURNS + Mod_Double = numerator +End Function + + +Function Div_Double(ByVal numerator As Double, ByVal denominator As Double) As Long +' FUNCTION + ' Modular division method for doubles +' ARGUMENTS + ' Double numerator + ' Double denominator +' VARIABLE DECLARATION + Dim count As Long +' VARIABLE DECLARATION + count = 0 +' METHODS + Do While numerator > denominator + count = count + 1 + numerator = numerator - denominator + Loop + Do While numerator < 0 + count = count - 1 + numerator = numerator + denominator + Loop +' RETURNS + Div_Double = count +End Function + diff --git a/src/Range_Strings.bas b/src/Range_Strings.bas new file mode 100644 index 0000000..7e8c2e4 --- /dev/null +++ b/src/Range_Strings.bas @@ -0,0 +1,70 @@ +' Author: Edward Middleton-Smith +' Precision And Research Technology Systems Limited + + +' MODULE INITIALISATION +' Set array start index to 1 to match spreadsheet indices +Option Base 1 +' Forced Variable Declaration +Option Explicit + + +Function Range_1D_String(ByRef ws As Worksheet, ByVal range_str As String) As String() +' FUNCTION + ' Get range of worksheet as 1D String array +' ARGUMENTS + ' Worksheet ws + ' String range_str +' VARIABLE DECLARATION + Dim my_range() As Variant + Dim sz_x As Long + Dim sz_y As Long + Dim i As Long + Dim N As Long + Dim strs() As String + Dim out_err() As String +' ARGUMENT VALIDATION + ReDim out_err(1) + out_err(1) = "Error" + If Not valid_range_String(range_str) Or ws Is Nothing Then + Range_1D_String = out_err + Exit Function + End If +' VARIABLE INSTANTIATION + my_range = ws.Range(range_str).value + sz_x = SizeArrayDim_Variant(my_range, 2) + sz_y = SizeArrayDim_Variant(my_range, 1) + If (sz_x = 0 Or sz_y = 0 Or (sz_x > 1 And sz_y > 1)) Then + Range_1D_String = out_err + Exit Function + End If + N = max_Long(sz_x, sz_y) + ReDim strs(N) +' METHODS + For i = 1 To N + If sz_x > sz_y Then + strs(i) = my_range(1, i) + Else + strs(i) = my_range(i, 1) + End If + Next +' RETURNS + Range_1D_String = strs +End Function + +Function Range_String(ByVal col_min As Long, ByVal col_max As Long, ByVal row_min As Long, ByVal row_max As Long) As String +' FUNCTION + ' Create range string from minimum and maximum positions +' ARGUMENTS + ' Long col_min + ' Long col_max + ' Long row_min + ' Long row_max +' ARGUMENT VALIDATION + Range_String = "Error: Invalid coordinates" + If row_max < 1 Then row_max = 1048576 + If col_max < 1 Then col_max = 16384 + If Not (valid_coordinate(row_min, col_min) And valid_coordinate(row_max, col_max)) Then Exit Function +' RETURNS + Range_String = get_col_str(col_min) & CStr(row_min) & ":" & get_col_str(col_max) & CStr(row_max) +End Function diff --git a/src/String_Operations.bas b/src/String_Operations.bas new file mode 100644 index 0000000..68e38fc --- /dev/null +++ b/src/String_Operations.bas @@ -0,0 +1,175 @@ +' Author: Edward Middleton-Smith +' Precision And Research Technology Systems Limited + + +' MODULE INITIALISATION +' Set array start index to 1 to match spreadsheet indices +Option Base 1 +' Forced Variable Declaration +Option Explicit + + +Function is_numeric(ByVal numeric_chars As String) As Boolean +' FUNCTION + ' Evaluate if all characters in numeric_chars are numeric +' ARGUMENTS + ' String numeric_chars +' VARIABLE DECLARATION + Dim i As Long + Dim asci_i As Long + Dim valid As Boolean +' ARGUMENT VALIDATION + If numeric_chars = "" Then Exit Function +' VARIABLE INSTANTIATION + valid = True +' METHODS + For i = 1 To Len(numeric_chars) + asci_i = Asc(Mid(numeric_chars, i, 1)) + valid = valid And (asci_i >= 48 And asci_i <= 57) + Next +' RETURNS + is_numeric = valid +End Function + +Function is_alphabetic(ByVal alphabetic_chars As String) As Boolean +' FUNCTION + ' Evaluate if all characters in alphabetic_chars are alpabetic +' ARGUMENTS + ' String numeric_chars +' VARIABLE DECLARATION + Dim i As Long + Dim asci_i As Long + Dim valid As Boolean +' ARGUMENT VALIDATION + If alphabetic_chars = "" Then Exit Function +' VARIABLE INSTANTIATION + valid = True +' METHODS + For i = 1 To Len(alphabetic_chars) + asci_i = Asc(Mid(alphabetic_chars, i, 1)) + valid = valid And ((asci_i >= 65 And asci_i <= 90) Or (asci_i >= 97 And asci_i <= 122)) + Next +' RETURNS + is_alphabetic = valid +End Function + +Function get_col_str(ByVal col_ID As Long) As String +' FUNCTION + ' Return column ID as String from Long +' ARGUMENTS + ' Long col_ID +' VARIABLE DECLARATION + Dim strID As String + Dim i As Double + Dim N As Double + Dim temp As Long + Dim remainder As Double +' ARGUMENT VALIDATION + If col_ID < 1 Then Exit Function +' VARIABLE INSTANTIATION + N = max_Double(0, Div_Double(Log(col_ID), Log(26))) + If Not Mod_Double(Log(col_ID), Log(26)) = 0# Or col_ID = 1 Then N = N + 1 +' METHODS + For i = 1 To N + temp = ((col_ID - 1) Mod (26 ^ i)) \ (26 ^ (i - 1)) + 1 + strID = Chr(64 + temp) & strID + col_ID = col_ID - temp * (26 ^ (i - 1)) + Next +' RETURNS + get_col_str = strID +End Function + +Function get_col_ID(ByVal col_str As String) As Long +' FUNCTION + ' Return column ID as Long from String +' ARGUMENTS + ' String col_ID +' VARIABLE DECLARATION + Dim col_ID As Long + Dim i As Long + Dim N As Long + Dim temp As Long + Dim remainder As Double +' ARGUMENT VALIDATION + If Not is_alphabetic(col_str) Then Exit Function +' VARIABLE INSTANTIATION + N = Len(col_str) +' METHODS + For i = 1 To N + col_ID = col_ID + (Asc(Mid(col_str, i, 1)) - 64) * 26 ^ (N - i) + Next +' RETURNS + get_col_ID = col_ID +End Function + +Function Range_String_Coords(ByVal range_str As String) As Long() +' FUNCTION + ' Array of coordinates in range_str (row_1, column_1, [row_2, column_2]) +' ARGUMENTS + ' String range_str +' VARIABLE DECLARATION + Dim coords() As Long + Dim Phrases() As String + Dim Tmps() As String + Dim i As Long + Dim N As Long +' ARGUMENT VALIDATION + If Not valid_range_String(range_str) Then Exit Function +' VARIABLE INSTANTIATION + Tmps = Split(range_str, ":") + Phrases = change_array_base_String(Tmps) + N = SizeArrayDim_String(Phrases) + ReDim coords(N) +' METHODS + For i = 1 To N + If i Mod 2 = 0 Then + coords(i) = get_col_ID(Phrases(i)) + Else + coords(i) = CLng(Phrases(i)) + End If + Next +End Function + +Function CMoney_String(ByVal money_D As Double) As String +' FUNCTION + ' Get string equivalent of double to 2 decimal places +' ARGUMENTS + ' Double money_D +' VARIABLE DECLARATION + ' Dim money_L As Long + Dim money_S As String + Dim iDot As Long +' VARIABLE INSTANTIATION + ' money_D = 100 * money_D + ' money_L = money_D + ' money_D = money_L / 100 + money_S = CStr(Round(money_D, 2)) + iDot = InStr(1, money_S, ".") +' RETURNS + If iDot < 1 Then + CMoney_String = "'" & money_S & ".00" + ElseIf iDot = Len(money_S) - 1 Then + CMoney_String = "'" & money_S & "0" + Else + CMoney_String = "'" & money_S + End If +End Function + +Function Path2Name(ByVal FilePath As String) As String +' FUNCTION + ' Get file name from path +' ARGUMENTS + ' String FilePath +' VARIABLE DECLARATION + Dim iSlash As Long +' VARIABLE INSTANTIATION + Path2Name = FilePath + iSlash = InStr(1, Path2Name, "/") + If iSlash < 1 Then iSlash = InStr(1, Path2Name, "/") +' METHODS + Do While iSlash > 0 + Path2Name = Mid(Path2Name, iSlash + 1) + iSlash = InStr(1, Path2Name, "/") + If iSlash < 1 Then iSlash = InStr(1, Path2Name, "/") + Loop +End Function diff --git a/src/Validation_Comparison.bas b/src/Validation_Comparison.bas new file mode 100644 index 0000000..fcf0f0a --- /dev/null +++ b/src/Validation_Comparison.bas @@ -0,0 +1,204 @@ +' Author: Edward Middleton-Smith +' Precision And Research Technology Systems Limited + + +' MODULE INITIALISATION +' Set array start index to 1 to match spreadsheet indices +Option Base 1 +' Forced Variable Declaration +Option Explicit + + +Function input_Bool(ByVal bool_str As String) As Boolean +' FUNCTION + ' Evaluate if String is equivalent to Boolean True +' ARGUMENTS + ' String bool_str +' VARIABLE DECLARATION + Dim L As Long +' VARIABLE INSTANTIATION + bool_str = UCase(bool_str) + L = Len(bool_str) + input_Bool = False +' METHODS + Select Case bool_str + Case "YES", "Y", "YEAH", "YESH", "YEESH", "YEES", "TRUE", "T": + input_Bool = True + Case Else: + If is_numeric(bool_str) Then + input_Bool = True + ElseIf L > 1 Then + If Left(bool_str, 1) = "_" And is_numeric(Mid(bool_str, 2)) Then + input_Bool = True + End If + End If + End Select +End Function + + +Function input_Long(ByVal long_str As String, Optional Default As Long = 0) As Long +' FUNCTION + ' Evaluate if String is equivalent to Long +' ARGUMENTS + ' String long_str + ' Long default +' METHODS + If is_numeric(long_str) Then + input_Long = CLng(long_str) + Else + input_Long = Default + End If +End Function + + +Function max_Long(ByRef a As Long, ByVal b As Long) As Long +' FUNCTION + ' Maximum of two Long values +' ARGUMENTS + ' Long a + ' Long b +' METHODS + If a < b Then + max_Long = b + Else + max_Long = a + End If +End Function + + +Function min_Long(ByRef a As Long, ByVal b As Long) As Long +' FUNCTION + ' Maximum of two Long values +' ARGUMENTS + ' Long a + ' Long b +' METHODS + min_Long = -max_Long(-a, -b) +End Function + + +Function max_Double(ByRef a As Double, ByVal b As Double) As Double +' FUNCTION + ' Maximum of two Double values +' ARGUMENTS + ' Double a + ' Double b +' METHODS + If a < b Then + max_Double = b + Else + max_Double = a + End If +End Function + + +Function min_Double(ByRef a As Double, ByVal b As Double) As Double +' FUNCTION + ' Maximum of two Double values +' ARGUMENTS + ' Double a + ' Double b +' METHODS + min_Double = -max_Double(-a, -b) +End Function + + +Function valid_coordinate(ByRef row As Long, ByVal col As Long) As Boolean +' FUNCTION + ' Is coordinate on Worksheet? +' ARGUMENTS + ' Long a + ' Long b +' RETURNS + valid_coordinate = Not ((row < 1) Or (row > 1048576) Or (col < 1) Or (col > 16384)) +End Function + + +Function valid_range_String(ByVal range_str As String) As Boolean +' FUNCTION + ' Validate format of range string, e.g. "ABC123:BUD420" +' ARGUMENTS + ' String range_str +' VARIABLE DECLARATION + Dim Temps() As String + Dim Phrases() As String + Dim i As Long + Dim N As Long +' VARIABLE INSTANTIATION + valid_range_String = False + Temps = Split(range_str, ":") + Phrases = change_array_base_String(Temps) + N = SizeArrayDim_String(Phrases) +' METHODS + If N <> 2 Then + If (N = 1) Then + valid_range_String = valid_range_String_segment(range_str) + End If + Exit Function + End If + valid_range_String = True + For i = 1 To 2 + valid_range_String = valid_range_String And valid_range_String_segment(Phrases(i)) + If Not valid_range_String Then Exit Function + Next +End Function + + +Function valid_range_String_segment(ByVal range_str_segment As String) As Boolean +' FUNCTION + ' Validate format of segment of range string, e.g. "ABC123" +' ARGUMENTS + ' String range_str_segment +' VARIABLE DECLARATION + Dim i As Long + Dim N As Long + Dim end_of_lets As Boolean + Dim temp As String +' VARIABLE INSTANTIATION + N = Len(range_str_segment) + end_of_lets = False + valid_range_String_segment = False +' METHODS + If N < 2 Then Exit Function + For i = 1 To N + temp = Mid(range_str_segment, i, 1) + If end_of_lets Then + If Not is_numeric(temp) Then Exit Function + ElseIf Not is_alphabetic(temp) Then + If is_numeric(temp) Then + end_of_lets = True + Else + Exit Function + End If + End If + Next +' RETURNS + valid_range_String_segment = end_of_lets +End Function + + +Function error_msg(ByVal v As Variant, ByVal name As String, ByVal v_type As String, Optional v_expected As Variant = Nothing) As String +' FUNCTION + ' Error message string for invalid argument +' ARGUMENTS + ' Variant v - erroneous argument + ' String name - name of argument + ' String v_type - argument data type + ' Variant v_expected - expected value +' VARIABLE DECLARATION + Dim str_v As String + Dim str_exp As String +' VARIABLE INSTANTIATION + If v Is Nothing Then + str_v = "Nothing" + Else + str_v = CStr(v) + End If + If v_expected Is Nothing Then + str_exp = "Nothing" + Else + str_exp = CStr(v_expected) + End If +' RETURNS + error_msg = "Invalid " & v_type & " " & name & "." & vbCrLf & "Value = " & str_v & vbCrLf & "Expected value = " & str_exp +End Function diff --git a/src/WS_Access.cls b/src/WS_Access.cls new file mode 100644 index 0000000..26d8867 --- /dev/null +++ b/src/WS_Access.cls @@ -0,0 +1,853 @@ +' Author: Edward Middleton-Smith +' Precision And Research Technology Systems Limited + + +' MODULE INITIALISATION +' Set array start index to 1 to match spreadsheet indices +Option Base 1 +' Forced Variable Declaration +Option Explicit + + +' PROPERTY DECLARATION +Private v_ws As Worksheet +Private v_name As String +Private v_dir As orientation +Private v_col_min As Long +Private v_col_max As Long +Private v_col_search As Long +Private v_row_min As Long +Private v_row_max As Long +Private v_row_search As Long +Private v_data() As String +Private v_headings() As String +Private v_col_IDs() As Long +Private v_mutable_headings As Boolean +Private v_gap_max As Long + + +' PROPERTY METHODS +Public Property Get Worksheet() As Worksheet + Set Worksheet = v_ws +End Property + +Public Property Get name() As String + name = v_name +End Property +Public Property Let name(ByVal new_name As String) + v_name = new_name +End Property + +Public Property Get Cell(ByVal row As Long, ByVal col As Long) As Range + Set Cell = v_ws.Cells(row, col) +End Property + +Public Property Get Range(ByVal range_str As String) As Range + Set Range = v_ws.Range(range_str) +End Property +Public Sub SetRange_Variant(ByVal range_str As String, ByRef new_data() As Variant) +' FUNCTION + ' Set Range of v_ws +' ARGUMENTS + ' String range_str + ' Variant Matrix new_data +' VARIABLE DECLARATION + Dim sz_x As Long + Dim sz_y As Long + Dim sz_z As Long + Dim out_data() As String + Dim range_coords() As Long +' VARIABLE INSTANTIATION + sz_x = SizeArrayDim_Variant(new_data, 2) + sz_y = SizeArrayDim_Variant(new_data, 1) + sz_z = SizeArrayDim_Variant(new_data, 3) +' ARGUMENT VALIDATION + ' string-literal decomposition of range string + If Not valid_range_String(range_str) Then + MsgBox "Invalid range string" + Exit Sub + End If + range_coords = Range_String_Coords(range_str) + ' Validate new coordinates + If Not (valid_coordinate(range_coords(1), range_coords(2)) And valid_coordinate(range_coords(3), range_coords(4))) Then + MsgBox "Invalid range string coordinates" + Exit Sub + End If + ' Validate new_data dimensions against range_str dimensions + If Not ((sz_x = range_coords(4) - range_coords(2) + 1) And (sz_x = range_coords(4) - range_coords(2) + 1) And (sz_z = 0)) Then + MsgBox "Inconsistent range and matrix dimensions" + Exit Sub + End If +' METHODS + ' Compare new dimensions against current dimensions + If Not (range_coords(1) = v_row_min And range_coords(2) = v_col_min And range_coords(3) = v_row_max And range_coords(4) = v_col_max) Then + ResizeLocal range_coords(2), range_coords(4), range_coords(1), range_coords(3), True + End If +' RETURNS + v_ws.Range(range_str).value = new_data + convert_2D_Variant_2_String new_data, out_data + Me.SetData out_data +End Sub +Public Sub SetRange_String(ByVal range_str As String, ByRef new_data() As String) +' FUNCTION + ' Set Range of v_ws +' ARGUMENTS + ' String range_str + ' String Matrix new_data +' VARIABLE DECLARATION + Dim sz_x As Long + Dim sz_y As Long + Dim sz_z As Long + Dim range_coords() As Long + Dim i As Long + Dim j As Long +' VARIABLE INSTANTIATION + sz_x = SizeArrayDim_String(new_data, 2) + sz_y = SizeArrayDim_String(new_data, 1) + sz_z = SizeArrayDim_String(new_data, 3) +' ARGUMENT VALIDATION + ' string-literal decomposition of range string + If Not valid_range_String(range_str) Then + MsgBox "Invalid range string" + Exit Sub + End If + range_coords = Range_String_Coords(range_str) + ' Validate new coordinates + If Not (valid_coordinate(range_coords(1), range_coords(2)) And valid_coordinate(range_coords(3), range_coords(4))) Then + MsgBox "Invalid range string coordinates" + Exit Sub + End If + ' Validate new_data dimensions against range_str dimensions + If Not ((sz_x = range_coords(4) - range_coords(2) + 1) And (sz_x = range_coords(4) - range_coords(2) + 1) And (sz_z = 0)) Then + MsgBox "Inconsistent range and matrix dimensions" + Exit Sub + End If +' METHODS + ' Compare new dimensions against current dimensions + If Not (range_coords(1) = v_row_min And range_coords(2) = v_col_min And range_coords(3) = v_row_max And range_coords(4) = v_col_max) Then + ResizeLocal range_coords(2), range_coords(4), range_coords(1), range_coords(3), True + End If +' RETURNS + For i = v_col_min To v_col_max + For j = v_row_min To v_row_max + v_ws.Cells(j, i).value = new_data(j, i) + Next + Next + Me.SetData new_data +End Sub + +Public Sub GetData(ByRef data_out() As String) + data_out = v_data +End Sub +Public Sub SetData(ByRef new_data() As String, Optional update_ws As Boolean = False) +' FUNCTION + ' Set local data to new matrix, and optionally, update Worksheet +' ARGUMENTS + ' String Matrix new_data + ' Boolean update_ws +' VARIABLE DECLARATION + Dim sz_x As Long + Dim sz_y As Long + Dim sz_z As Long +' VARIABLE INSTANTIATION + sz_x = SizeArrayDim_String(new_data, 2) + sz_y = SizeArrayDim_String(new_data, 1) + sz_z = SizeArrayDim_String(new_data, 3) +' ARGUMENT VALIDATION + If Not ((sz_x = v_col_max - v_col_min + 1) And (sz_y = v_row_max - v_row_min + 1) And (sz_z = 0)) Then + MsgBox "Invalid dimensions to replace worksheet data" + Exit Sub + End If +' METHODS + Erase v_data +' RETURNS + v_data = new_data + If update_ws Then ExportLocalData2WS +End Sub +Public Sub SetEmptyData(ByRef new_data() As String, Optional update_ws As Boolean = False) +' FUNCTION + ' Set local data to new matrix, and optionally, update Worksheet. Only populate empty cells +' ARGUMENTS + ' String Matrix new_data + ' Boolean update_ws +' VARIABLE DECLARATION + Dim sz_x As Long + Dim sz_y As Long + Dim sz_z As Long + Dim i As Long + Dim j As Long +' VARIABLE INSTANTIATION + sz_x = SizeArrayDim_String(new_data, 2) + sz_y = SizeArrayDim_String(new_data, 1) + sz_z = SizeArrayDim_String(new_data, 3) +' ARGUMENT VALIDATION + If Not ((sz_x = v_col_max - v_col_min + 1) And (sz_y = v_row_max - v_row_min + 1) And (sz_z = 0)) Then + MsgBox "Invalid dimensions to replace worksheet data" + Exit Sub + End If +' METHODS + For j = 1 To sz_y + For i = 1 To sz_x + If v_data(j, i) = "" Then v_data(j, i) = new_data(j, i) + Next + Next +' RETURNS + If update_ws Then ExportLocalData2WS +End Sub + +Public Function GetCellDataLocal(ByVal row As Long, ByVal col As Long) As String +' FUNCTION + ' Get value from cell of local copy of Worksheet data +' ARGUMENTS + ' Long row - relative row index in data table + ' Long col - relative column index in data table +' VARIABLE INSTANTIATION + If ((row > v_row_max - v_row_min + 1) Or (row < 1) Or (col > v_col_max - v_col_min + 1) Or (col < 1)) Then + Debug.Print "Invalid cell index. Row = " & CStr(row) & ", column = " & CStr(col) + Exit Function + End If +' RETURNS + GetCellDataLocal = v_data(row, col) +End Function +Public Sub SetCellDataLocal(ByVal row As Long, ByVal col As Long, ByVal new_value As String) +' FUNCTION + ' Set value of cell of local copy of Worksheet data +' ARGUMENTS + ' Long row - relative row index in data table + ' Long col - relative column index in data table +' VARIABLE INSTANTIATION + If ((row > v_row_max - v_row_min + 1) Or (row < 1) Or (col > v_col_max - v_col_min + 1) Or (col < 1)) Then + Debug.Print "Invalid cell index. Row = " & CStr(row) & ", column = " & CStr(col) + Exit Sub + End If +' METHODS + v_data(row, col) = new_value +End Sub + +Public Property Get nHeadings() As Long + nHeadings = SizeArrayDim_String(v_headings) +End Property + +Public Property Get HeadingName(ByVal h_index As Long) As String +' FUNCTION + ' Get heading text from index in v_headings +' ARGUMENTS + ' Long h_index - index of desired heading in v_headings +' VARIABLE DECLARATION + Dim n_h As Long +' VARIABLE INSTANTIATION + n_h = nHeadings + HeadingName = "Error: Invalid index" +' ARGUMENT VALIDATION + If (h_index < 1 Or h_index > n_h) Then Exit Property +' RETURNS + HeadingName = v_headings(h_index) +End Property + +Public Property Get HeadingIndex(ByVal h_search As String, Optional ID_in_searchstr As Boolean = False) As Long +' FUNCTION + ' Get index of h_search within v_headings, if it exists +' ARGUMENTS + ' String h_search - heading to search for + ' Boolean ID_in_searchstr - is index in h_search instead of heading name? +' VARIABLE DECLARATION + Dim n_h As Long + Dim h_i As Long +' ARGUMENT VALIDATION + If h_search = "" Then Exit Property + If Not ExistsHeading(h_search, ID_in_searchstr) Then Exit Property +' VARIABLE INSTANTIATION + n_h = nHeadings +' METHODS + If ID_in_searchstr Then + h_i = CLng(h_search) + If (h_i < 1 Or h_i > n_h) Then Exit Property + HeadingIndex = h_i + Else + For h_i = 1 To n_h + If (v_headings(h_i) = h_search) Then + HeadingIndex = h_i + Exit Property + End If + Next + End If +End Property + +Public Property Get ColumnID(ByVal h_search As String, Optional ID_in_searchstr As Boolean = False) As Long +' FUNCTION + ' Get index of column containing h_search, if it exists within v_headings +' ARGUMENTS + ' String h_search - heading to search for + ' Boolean ID_in_searchstr - is index in h_search instead of heading name? +' VARIABLE DECLARATION + Dim n_h As Long + Dim h_i As Long +' ARGUMENT VALIDATION + If h_search = "" Then Exit Property + If Not ExistsHeading(h_search, ID_in_searchstr) Then Exit Property +' VARIABLE INSTANTIATION + n_h = nHeadings +' METHODS + If ID_in_searchstr Then + h_i = CLng(h_search) + If (h_i < 1 Or h_i > n_h) Then Exit Property + ColumnID = v_col_IDs(CLng(h_search)) + Else + For h_i = 1 To n_h + If (v_headings(h_i) = h_search) Then + ColumnID = v_col_IDs(h_i) + Exit Property + End If + Next + End If +End Property + +Public Property Get SearchID() As Long +' FUNCTION + ' Get index of search row / column +' METHODS + If v_dir = ColumnHeaders Then + SearchID = v_col_search + Else + SearchID = v_row_search + End If +End Property + +Public Property Get ColumnMin() As Long + ColumnMin = v_col_min +End Property +Public Property Get ColumnMax() As Long + ColumnMax = v_col_max +End Property +Public Property Get ColumnSearch() As Long + ColumnSearch = v_col_search +End Property +Public Property Let ColumnSearch(ByVal vNew As Long) + If Not valid_coordinate(1, vNew) Then + MsgBox "Error: Invalid new search column index" + Exit Property + End If + If vNew < v_col_min And v_dir = ColumnHeaders Then v_col_min = vNew + If vNew > v_col_max And v_dir = ColumnHeaders Then v_col_max = vNew + If vNew > v_col_min And v_dir = RowHeaders Then v_col_min = vNew + 1 + v_col_search = vNew +End Property + +Public Property Get RowMin() As Long + RowMin = v_row_min +End Property +Public Property Get RowMax() As Long + RowMax = v_row_max +End Property +Public Property Get RowSearch() As Long + RowSearch = v_row_search +End Property +Public Property Let RowSearch(ByVal vNew As Long) + If Not valid_coordinate(vNew, 1) Then + MsgBox "Error: Invalid new search column index" + Exit Property + End If + If vNew < v_row_min And v_dir = RowHeaders Then v_row_min = vNew + If vNew > v_row_max And v_dir = RowHeaders Then v_row_max = vNew + If vNew > v_row_min And v_dir = ColumnHeaders Then v_row_min = vNew + 1 + v_row_search = vNew +End Property + +Public Property Get Orient() As orientation + Orient = v_dir +End Property + +Public Property Get GapMax() As Long + GapMax = v_gap_max +End Property + + +' METHODS +Public Sub Init(ByRef ws As Worksheet, ByVal name As String, ByRef headings() As String, Optional Orient As orientation = orientation.ColumnHeaders, Optional search_col As Long = 1, Optional search_col_is_heading_index As Boolean = False, Optional search_row As Long = 1, Optional search_row_is_heading_index As Boolean = False, Optional col_min As Long = 1, Optional col_max As Long = 0, Optional row_min As Long = 2, Optional row_max As Long = 0, Optional gap_max As Long = 1, Optional mutable_headings As Boolean = False) +' FUNCTION + ' Instantiate worksheet container +' ARGUMENTS + ' Worksheet ws + ' String name + ' String Array headings + ' orientation Orient + ' Long search_col + ' Boolean search_col_is_heading_index + ' Long search_row + ' Boolean search_row_is_heading_index + ' Long col_min + ' Long col_max + ' Long row_min + ' Long row_max + ' Long gap_max + ' Boolean mutable_headings - can headings be over-written? +' PROCESSING ACCELERATION +' CONSTANTS + Const uni_col_max As Long = 16384 + Const uni_row_max As Long = 1048576 +' VARIABLE DECLARATION + If ws Is Nothing Then Exit Sub + Erase v_data + Dim my_data() As Variant + Dim col_min_str As String + Dim col_max_str As String + Dim col_search_str As String + Dim n_h As Long + Dim ws_data_in() As Variant + Dim temp_col_min As String + Dim temp_col_max As String +' ARGUMENT VALIDATION +' VARIABLE INSTANTIATION + If (Orient = ColumnHeaders) Then + v_col_search = min_Long(max_Long(1, search_col), uni_col_max) + v_row_search = min_Long(max_Long(1, search_row), uni_row_max - 1) + v_col_min = min_Long(max_Long(1, col_min), uni_col_max - 1) + v_row_min = min_Long(max_Long(1 + v_row_search, row_min), uni_row_max) + Else + v_col_search = min_Long(max_Long(1, search_col), uni_col_max - 1) + v_row_search = min_Long(max_Long(1, search_row), uni_row_max) + v_col_min = min_Long(max_Long(1 + v_col_search, col_min), uni_col_max) + v_row_min = min_Long(max_Long(1, row_min), uni_row_max - 1) + End If + col_min_str = get_col_str(v_col_min) + n_h = SizeArrayDim_String(headings) +' METHODS + Set v_ws = ws + v_name = name + ' Dimensions + If (Orient = ColumnHeaders) Then + If (col_max < v_col_min) Then + v_col_max = last_filled_cell(Range_1D_String(ws, Range_String(1, 0, v_row_search, v_row_search)), v_col_min, -1, gap_max) ' ws.Range("A" & CStr(v_row_search) & ":XFD" & CStr(v_row_search)).Value, + If v_col_max = v_col_min And IsEmpty(ws.Cells(v_row_search, v_col_max)) Then v_col_max = v_col_search + Else + v_col_max = min_Long(col_max, uni_col_max) + End If + ' Headings + Column IDs + If n_h > 0 Then + v_headings = headings + GetColIDs + If (search_col_is_heading_index And v_col_search <= n_h) Then + If (v_col_IDs(v_col_search) > 0) Then v_col_search = v_col_IDs(v_col_search) + End If + End If + If (row_max < v_row_min) Then + v_row_max = last_filled_cell(Range_1D_String(ws, Range_String(v_col_search + v_col_min - 1, v_col_search + v_col_min - 1, 1, 0)), v_row_min, -1, gap_max) + If v_row_max = v_row_min And IsEmpty(ws.Cells(v_row_max, v_col_search + v_col_min - 1)) Then v_row_max = v_row_search + Else + v_row_max = min_Long(v_row_max, uni_row_max) + End If + ' Get data + my_data = ws.Range(Range_String(v_col_min, v_col_max, v_row_min, max_Long(v_row_max, v_row_min))).value + Else + If (row_max < v_row_min) Then + v_row_max = last_filled_cell(Range_1D_String(ws, Range_String(1, 0, v_row_search + v_row_min - 1, v_row_search + v_row_min - 1)), v_row_min, -1, gap_max) + If v_row_max = v_row_min And IsEmpty(ws.Cells(v_row_max, v_col_search)) Then v_row_max = v_row_search + Else + v_row_max = min_Long(v_row_max, uni_row_max) + End If + ' Headings + Column IDs + If n_h > 0 Then + v_headings = headings + GetColIDs + If (search_row_is_heading_index And v_row_search <= n_h) Then + If (v_col_IDs(v_row_search) > 0) Then v_row_search = v_col_IDs(v_row_search) + End If + End If + If (col_max < v_col_min) Then + v_col_max = last_filled_cell(Range_1D_String(ws, Range_String(1, 0, v_row_search, v_row_search)), v_col_min, -1, gap_max) ' ws.Range("A" & CStr(v_row_search) & ":XFD" & CStr(v_row_search)).Value, + If v_col_max = v_col_min And IsEmpty(ws.Cells(v_row_search, v_col_max)) Then v_col_max = v_col_search + Else + v_col_max = min_Long(col_max, uni_col_max) + End If + ' Get data + my_data = ws.Range(Range_String(v_col_min, max_Long(v_col_max, v_col_min), v_row_min, v_row_max)).value + End If +' RETURNS + convert_2D_Variant_2_String my_data, v_data + v_mutable_headings = mutable_headings + v_gap_max = gap_max +End Sub + +Private Sub GetColIDs() +' FUNCTION + ' Find first instance of each of colnames within row RowSearch of ws +' VARIABLE DECLARATION + Dim NHeading As Long + Dim Search_S As String + Dim iCol As Long + Dim ColName As String + Dim Outs() As Long + Dim Temps() As String + Dim iFail As Long + Dim fail_S As String +' VARIABLE INSTANTIATION + NHeading = nHeadings + ReDim v_col_IDs(NHeading) + If (v_dir = ColumnHeaders) Then + ' Temps = v_ws.Range(Range_String(v_col_min, v_col_max, v_row_search, v_row_search)).value + Temps = Range_1D_String(v_ws, Range_String(v_col_min, v_col_max, v_row_search, v_row_search)) + Else + ' Temps = v_ws.Range(Range_String(v_col_search, v_col_search, v_row_min, v_row_max)).value + Temps = Range_1D_String(v_ws, Range_String(v_col_min, v_col_max, v_row_search, v_row_search)) + End If + iFail = 0 +' METHODS + For iCol = 1 To NHeading + ColName = v_headings(iCol) + If Not ColName = "" Then + v_col_IDs(iCol) = match_String(ColName, Temps) + If v_col_IDs(iCol) < 1 Then + iFail = iFail + 1 + If iFail > 1 Then + fail_S = fail_S & ", " & ColName + Else + fail_S = ColName + End If + End If + Else + v_col_IDs(iCol) = 0 + End If + Next +' RETURNS + If iFail > 0 Then + MsgBox "Error: The below headings were not found on Worksheet " & v_name & vbCrLf & fail_S + End If +End Sub + +Public Sub ExportLocalData2WS() +' FUNCTION + ' Export v_data to v_ws +' METHODS + If v_dir = ColumnHeaders Then + v_ws.Range(Range_String(v_col_min, v_col_max, v_row_min, max_Long(v_row_max, v_row_min))).value = v_data + Else + v_ws.Range(Range_String(v_col_min, max_Long(v_col_max, v_col_min), v_row_min, v_row_max)).value = v_data + End If +End Sub + +Public Sub AddCellComment(ByVal row As Long, ByVal col As Long, ByVal mycomment As String, Optional row_abs_not_rel As Boolean = False, Optional col_abs_not_rel As Boolean = False) +' FUNCTION + ' Add comment to cell +' ARGUMENTS + ' Long row + ' Long col - cell index + ' String mycomment + ' Optional Boolean row_abs_not_rel + ' Optional Boolean col_abs_not_rel - positioning on worksheet relative to v_data table +' METHODS + v_ws.Range(Range_String(col, col, row, row)).AddComment mycomment +End Sub + +Public Sub ResizeLocalAuto(Optional replace_local_data As Boolean = True) +' FUNCTION + ' Find table size from Worksheet +' PROCESSING ACCELERATION + ' Disable automatic spreadsheet calculation - prevents refreshing of whole ws on each cell entry + Application.Calculation = xlCalculationManual + ' Disable screen updating + Application.ScreenUpdating = False +' CONSTANTS + Const uni_col_max As Long = 16384 + Const uni_row_max As Long = 1048576 +' VARIABLE DECLARATION + Dim my_data() As Variant +' METHODS + If (Orient = ColumnHeaders) Then + v_row_max = last_filled_cell(Range_1D_String(v_ws, Range_String(v_col_search, v_col_search, 1, 0)), v_row_min, -1, v_gap_max) + If v_row_max = v_row_min And IsEmpty(v_ws.Cells(v_row_max, v_col_search)) Then v_row_max = v_row_search + ' Get data + my_data = v_ws.Range(Range_String(v_col_min, v_col_max, v_row_min, max_Long(v_row_max, v_row_min))).value + Else + v_col_max = last_filled_cell(Range_1D_String(v_ws, Range_String(1, 0, v_row_search, v_row_search)), v_col_min, -1, v_gap_max) ' ws.Range("A" & CStr(v_row_search) & ":XFD" & CStr(v_row_search)).Value, + If v_col_max = v_col_min And IsEmpty(v_ws.Cells(v_row_search, v_col_max)) Then v_col_max = v_col_search + ' Get data + my_data = v_ws.Range(Range_String(v_col_min, max_Long(v_col_max, v_col_min), v_row_min, v_row_max)).value + End If +' RETURNS + If replace_local_data Then + Erase v_data + convert_2D_Variant_2_String my_data, v_data + End If +' PROCESSING DECELARATION + ' Enable automatic spreadsheet calculation - prevents refreshing of whole ws on each cell entry + Application.Calculation = xlCalculationAutomatic + ' Enable screen updating + Application.ScreenUpdating = True +End Sub + + +Public Sub ResizeLocal(ByVal col_min As Long, ByVal col_max As Long, ByVal row_min As Long, ByVal row_max As Long, Optional clear_data As Boolean = False) +' FUNCTION + ' Resize local copy of ws table data +' ARGUMENTS + ' Long col_min + ' Long col_max + ' Long row_min + ' Long row_max + ' Optional Boolean clear_data +' ARGUMENT VALIDATION + If col_max < col_min Or row_max < row_min Or (Not valid_coordinate(row_min, col_min)) Or (Not valid_coordinate(row_max, col_max)) Then + MsgBox "Error: Invalid new local data dimensions." & vbCrLf & error_msg(col_min, "col_min", "Long", "?") & vbCrLf & error_msg(col_max, "col_max", "Long", "?") & vbCrLf & error_msg(row_min, "row_min", "Long", "?") & vbCrLf & error_msg(row_max, "row_max", "Long", "?") + Exit Sub + End If + If col_min = v_col_min And col_max = v_col_max And row_min = v_row_min And row_max = v_row_max Then + Debug.Print "No change required to local data dimensions." + Exit Sub + End If +' METHODS + If clear_data Then + v_col_min = col_min + v_col_max = col_max + v_row_min = row_min + v_row_max = row_max + ClearData + Else + v_col_min = col_min + v_col_max = col_max + ReDimPreserve_String v_data, 2, v_col_max - v_col_min + 1, 2 + v_row_min = row_min + v_row_max = row_max + ReDimPreserve_String v_data, 1, v_row_max - v_row_min + 1, 2 + End If +End Sub + + +Public Function Match(ByVal v_search As String, Optional array_ID As Long = -1, Optional minimum As Long = 1, Optional maximum As Long = -1, Optional dir_move As dir_traverse = dir_traverse.FORWARDS) As Long +' FUNCTION + ' Find match of v_search in local data and return index +' ARGUMENTS + ' String v_search + ' Long array_ID + ' Long minimum + ' Long maximum + ' dir_traverse dir_move +' CONSTANTS + ' Const RowMaxUniversal As Long = 1048576 + ' Const ColMaxUniversal As Long = 16384 +' VARIABLE DECLARATION + Dim i As Long + Dim di As Long + Dim RowMaxUniversal As Long + Dim ColMaxUniversal As Long +' ARGUMENT VALIDATION + Match = -1 +' VARIABLE INSTANTIATION + RowMaxUniversal = SizeArrayDim_String(v_data, 1) + v_row_min - 1 + ColMaxUniversal = SizeArrayDim_String(v_data, 2) + v_col_min - 1 + If v_dir = ColumnHeaders Then + maximum = min_Long(RowMaxUniversal - v_row_min + 1, maximum) + If maximum < 1 Then maximum = RowMaxUniversal - v_row_min + 1 + minimum = max_Long(1, min_Long(minimum, maximum)) + If Not valid_coordinate(minimum, 1) Then minimum = 1 + If Not valid_coordinate(maximum, 1) Then maximum = v_row_max - v_row_min + 1 + If Not valid_coordinate(1, array_ID) Then array_ID = v_col_search + Else + maximum = min_Long(ColMaxUniversal - v_col_min + 1, maximum) + If maximum < 1 Then maximum = ColMaxUniversal - v_col_min + 1 + minimum = max_Long(1, min_Long(minimum, maximum)) + If Not valid_coordinate(1, minimum) Then minimum = 1 + If Not valid_coordinate(1, maximum) Then maximum = v_col_max - v_col_min + 1 + If Not valid_coordinate(array_ID, 1) Then array_ID = v_row_search + End If + If maximum < minimum Then ' not possible + MsgBox "Error: Invalid minimum (" & CStr(minimum) & ") and maximum (" & CStr(maximum) & ") positions." + Exit Function + End If + If dir_move = BACKWARDS Then + i = minimum + minimum = maximum + maximum = i + di = -1 + Else + di = 1 + End If +' METHODS + For i = minimum To maximum Step di + If v_dir = ColumnHeaders Then + If v_data(i, array_ID) = v_search Then + Match = i + Exit For + End If + Else + If v_data(array_ID, i) = v_search Then + Match = i + Exit For + End If + End If + Next +End Function + + +Public Function Match_F(ByVal v_search As String, ByVal function_name As String, Optional array_ID As Long = -1, Optional minimum As Long = 1, Optional maximum As Long = -1, Optional dir_move As dir_traverse = dir_traverse.FORWARDS) As Long +' FUNCTION + ' Find match of v_search in local data and return index +' ARGUMENTS + ' String v_search + ' String function_name - name of function which takes single argument of cell data + ' Long array_ID + ' Long minimum + ' Long maximum + ' dir_traverse dir_move +' VARIABLE DECLARATION + Dim i As Long + Dim di As Long +' ARGUMENT VALIDATION + Match_F = -1 +' VARIABLE INSTANTIATION + i = max_Long(minimum, maximum) + minimum = max_Long(1, min_Long(minimum, maximum)) + If v_dir = ColumnHeaders Then + maximum = min_Long(1048576, i) + If Not valid_coordinate(1, minimum) Then minimum = v_row_min + If Not valid_coordinate(1, maximum) Then maximum = v_row_max + If Not valid_coordinate(1, array_ID) Then array_ID = v_row_search + Else + maximum = min_Long(16384, i) + If Not valid_coordinate(minimum, 1) Then minimum = v_col_min + If Not valid_coordinate(maximum, 1) Then maximum = v_col_max + If Not valid_coordinate(array_ID, 1) Then array_ID = v_col_search + End If + If maximum < minimum Then + MsgBox "Error: Invalid minimum (" & CStr(minimum) & ") and maximum (" & CStr(maximum) & ") positions." + Exit Function + End If + If dir_move = BACKWARDS Then + i = minimum + minimum = maximum + maximum = i + di = -1 + Else + di = 1 + End If +' METHODS + For i = minimum To maximum Step di + If v_dir = ColumnHeaders Then + If CStr(Application.Run(function_name, v_data(i, array_ID))) = v_search Then + Match_F = i + Exit For + End If + Else + If CStr(Application.Run(function_name, v_data(array_ID, i))) = v_search Then + Match_F = i + Exit For + End If + End If + Next +End Function + + +Public Function ExistsHeading(ByVal search_heading As String, Optional ID_in_str As Boolean = False) As Boolean +' FUNCTION + ' Does search_heading exist in v_headings? +' ARGUMENTS + ' String search_heading + ' Boolean ID_in_str - is search_heading a heading index instead of name? +' VARIABLE DECLARATION + Dim h_n As Long + Dim h_i As Long + Dim ID As String +' ARGUMENT VALIDATION + ExistsHeading = False + If search_heading = "" Then Exit Function +' VARIABLE INSTANTIATION + h_n = nHeadings +' METHODS + If ID_in_str Then + If Not is_numeric(search_heading) Then Exit Function + ID = CLng(search_heading) + If ID < 1 Or ID > h_n Then Exit Function + ExistsHeading = True + Exit Function + End If + For h_i = 1 To h_n + If v_headings(h_i) = search_heading Then + ExistsHeading = True + Exit Function + End If + Next +End Function + + +Public Sub ClearData() +' FUNCTION + ' Clear contents of local copy of ws data but keep dimensions +' METHODS + ReDim v_data(v_row_max - v_row_min + 1, v_col_max - v_col_min + 1) +End Sub + + +Public Function LastFilledCell(Optional search_ID As Long = -1, Optional start As Long = -1, Optional gap_max As Long = -1, Optional Orient As orientation, Optional i_max As Long = -1, Optional dir_move As dir_traverse) As Long +' FUNCTION + ' Identify index of last filled cell in column or row from start in v_ws +' ARGUMENTS + ' Optional Long search_ID + ' Optional Long start + ' Optional Long gap_max + ' Optional orientation orient + ' Optional Long i_max + ' Optional dir_traverse dir_move +' CONSTANTS + Const uni_row_max As Long = 1048576 + Const uni_col_max As Long = 16384 +' VARIABLE DECLARATION + Dim found_last As Boolean + Dim temp As Variant + Dim gap_n As Long + Dim i As Long +' ARGUMENT VALIDATION + If Orient = ColumnHeaders Then + If i_max < 1 Then i_max = uni_row_max + i_max = min_Long(max_Long(1, i_max), uni_row_max) + If search_ID < 1 Then + search_ID = v_col_search + Else + search_ID = min_Long(max_Long(1, search_ID), uni_col_max) + End If + gap_max = min_Long(max_Long(1, gap_max), i_max - 1) + If start = -1 Then + start = v_row_min + Else + start = min_Long(max_Long(1, v_row_min), max_Long(i_max - gap_max, 1)) + End If + Else + If i_max < 1 Then i_max = uni_col_max + i_max = min_Long(max_Long(1, i_max), uni_col_max) + If search_ID < 1 Then + search_ID = v_row_search + Else + search_ID = min_Long(max_Long(1, search_ID), uni_row_max) + End If + gap_max = min_Long(max_Long(1, gap_max), i_max - 1) + If start = -1 Then + start = v_row_min + Else + start = min_Long(max_Long(1, v_row_min), max_Long(i_max - gap_max, 1)) + End If + End If +' VARIABLE INSTANTIATION + found_last = False + If dir_move = FORWARDS Then + i = start - 1 + Else + i = i_max + 1 + End If +' METHODS + Do While Not found_last + i = i + dir_move + If Orient = ColumnHeaders Then + temp = Me.Cell(i, search_ID).value + Else + temp = Me.Cell(search_ID, i).value + End If + If (dir_move = FORWARDS And i = start) Or (dir_move = FORWARDS And i = start) Then + found_last = True + ElseIf IsEmpty(temp) Then + gap_n = gap_n + 1 + Else + gap_n = 0 + End If + If gap_n > gap_max Then found_last = True + Loop +' RETURNS + LastFilledCell = i - gap_n * dir_move +End Function diff --git a/src/WS_Relation.cls b/src/WS_Relation.cls new file mode 100644 index 0000000..60e346e --- /dev/null +++ b/src/WS_Relation.cls @@ -0,0 +1,276 @@ +' Author: Edward Middleton-Smith +' Precision And Research Technology Systems Limited + + +' MODULE INITIALISATION +' Set array start index to 1 to match spreadsheet indices +Option Base 1 +' Forced Variable Declaration +Option Explicit + + + + +' PROPERTY DECLARATION +Private v_wss As Collection +Private v_N_h As Long +Private v_name As String + + +' PROPERTY METHODS +Public Property Get nSheets() As Long + nSheets = CountWorksheets +End Property + +Public Property Get nHeadings() As Long + nHeadings = v_N_h +End Property + +Public Property Get wsc(ByVal sheet_name As String, Optional ID_in_name As Boolean = False) As ws_access +' FUNCTION + ' Get Worksheet Container object by name or ID +' ARGUMENTS + ' String sheet_name + ' Boolean ID_in_name +' VARIABLE DECLARATION + Dim sheet_ID As Long + Dim n_ws As Long + Dim w_i As Long + Dim wsc_temp As ws_access +' VARIABLE INSTANTIATION + n_ws = CountWorksheets +' METHODS + If sheet_name = "" Then Exit Property + If ID_in_name Then + If Not is_numeric(sheet_name) Then Exit Property + sheet_ID = CLng(sheet_name) + If (sheet_ID < 1 Or sheet_ID > n_ws) Then + Set wsc = v_wss.Item(sheet_ID) + Exit Property + End If + End If + For w_i = 1 To n_ws + Set wsc_temp = v_wss.Item(w_i) + If wsc_temp.name = sheet_name Then + Set wsc = wsc_temp + Exit Property + End If + Next +End Property + +Public Property Get name() As String + name = v_name +End Property +Public Property Let name(ByVal new_name As String) + v_name = new_name +End Property + + +' METHODS +Public Function AddWSC(ByRef wsc As ws_access, Optional suppress_console_outputs As Boolean = False) As Boolean +' FUNCTION + ' Get Workheet Container object by name or ID +' ARGUMENTS + ' ws_access wsc +' VARIABLE DECLARATION + Dim n_h As Long + Dim n_ws As Long +' ARGUMENT VALIDATION + AddWSC = False + If wsc Is Nothing Then Exit Function +' VARIABLE INSTANTIATION + n_h = wsc.nHeadings + n_ws = CountWorksheets +' METHODS + If n_ws = 0 Then + v_N_h = n_h + Set v_wss = New Collection + v_wss.Add wsc + If Not suppress_console_outputs Then Debug.Print "Worksheet Container " & wsc.name & " added to Worksheet Relation " & v_name & "." + Else + If v_N_h = n_h Then + v_wss.Add wsc + If Not suppress_console_outputs Then Debug.Print "Worksheet Container " & wsc.name & " added to Worksheet Relation " & v_name & "." + Else + MsgBox "Error: Unable to add Worksheet Container " & wsc.name & " to Worksheet Relation " & v_name & "." & vbCrLf & _ + CStr(v_N_h) & " headings in relation." & vbCrLf & _ + CStr(n_h) & " headings in container." + Exit Function + End If + End If +' RETURNS + AddWSC = True +End Function + +Private Function CountWorksheets() As Long + If v_wss Is Nothing Then + CountWorksheets = 0 + Else + CountWorksheets = v_wss.count + End If +End Function + +Public Sub Populate(Optional recipient_wsc As String = "1", Optional recipient_ID_in_str As Boolean = True, Optional provider_wsc As String = "2", Optional provider_ID_in_str As Boolean = True, Optional write_empties_only As Boolean = False, Optional export_2_ws As Boolean = True) +' FUNCTION + ' Populate recipient wsc with data for each record by look up in provider wsc +' ARGUMENTS + ' Optional String recipient_wsc + ' Optional Boolean recipient_ID_in_str + ' Optional String provider_wsc + ' Optional Boolean provider_ID_in_str - ID instead of wsc name? +' VARIABLE DECLARATION + Dim n_ws As Long + Dim wsc_recipient As ws_access + Dim wsc_provider As ws_access + Dim h_i As Long + Dim col_recipient As Long + Dim col_provider As Long + Dim row_recipient As Long + Dim row_provider As Long +' ARGUMENT VALIDATION + n_ws = CountWorksheets + If (n_ws < 2 Or (recipient_wsc = provider_wsc And recipient_ID_in_str = provider_ID_in_str) Or Not ExistsWSC(recipient_wsc, recipient_ID_in_str) Or Not ExistsWSC(recipient_wsc, recipient_ID_in_str)) Then + MsgBox "Error: Unable to populate Worksheet Container " & recipient_wsc & " with " & provider_wsc + Exit Sub + End If +' VARIABLE INSTANTIATION + Set wsc_recipient = v_wss.Item(IndexWSC(recipient_wsc, recipient_ID_in_str)) + Set wsc_provider = v_wss.Item(IndexWSC(provider_wsc, provider_ID_in_str)) +' METHODS + If wsc_recipient.Orient = ColumnHeaders Then + For row_recipient = 1 To wsc_recipient.RowMax - wsc_recipient.RowMin + 1 + row_provider = wsc_provider.Match(wsc_recipient.GetCellDataLocal(row_recipient, wsc_recipient.ColumnSearch)) + If row_provider > 0 Then + For h_i = 1 To v_N_h + col_recipient = wsc_recipient.ColumnID(CStr(h_i), True) + col_provider = wsc_provider.ColumnID(CStr(h_i), True) + If col_provider > 0 And col_recipient > 0 Then + If col_recipient <> wsc_recipient.ColumnSearch Then + If wsc_provider.Orient = ColumnHeaders Then + wsc_recipient.SetCellDataLocal row_recipient, col_recipient, wsc_provider.GetCellDataLocal(row_provider, col_provider) + Else + wsc_recipient.SetCellDataLocal row_recipient, col_recipient, wsc_provider.GetCellDataLocal(col_provider, row_provider) + End If + End If + End If + Next + Else + Debug.Print "Customer not found:" & vbCrLf & "Customer reference = " & wsc_recipient.GetCellDataLocal(row_recipient, wsc_recipient.ColumnSearch) & vbCrLf & "Row = " & CStr(row_recipient + wsc_recipient.RowMin - 1) + End If + Next + Else + For row_recipient = 1 To wsc_recipient.ColumnMax - wsc_recipient.ColumnMin + 1 + row_provider = wsc_provider.Match(wsc_recipient.GetCellDataLocal(wsc_recipient.RowSearch, row_recipient)) + If row_provider > 0 Then + For h_i = 1 To v_N_h + col_recipient = wsc_recipient.ColumnID(CStr(h_i), True) + col_provider = wsc_provider.ColumnID(CStr(h_i), True) + If col_provider > 0 And col_recipient > 0 Then + If (wsc_recipient.Orient = ColumnHeaders And col_recipient <> wsc_recipient.ColumnSearch) Then + If wsc_provider.Orient = ColumnHeaders Then + wsc_recipient.SetCellDataLocal col_recipient, row_recipient, wsc_provider.GetCellDataLocal(row_provider, col_provider) + Else + wsc_recipient.SetCellDataLocal col_recipient, row_recipient, wsc_provider.GetCellDataLocal(col_provider, row_provider) + End If + End If + End If + Next + Else + Debug.Print "Customer not found:" & vbCrLf & "Customer reference = " & wsc_recipient.GetCellDataLocal(wsc_recipient.RowSearch, row_recipient) & vbCrLf & "Column = " & CStr(row_recipient + wsc_recipient.ColumnMin - 1) + End If + Next + End If +' RETURNS + If export_2_ws Then wsc_recipient.ExportLocalData2WS +End Sub + +Public Function ExistsWSC(ByVal wsc_name As String, Optional ID_in_str As Boolean = True) As Boolean +' FUNCTION + ' Identify is Worksheet Container exists in relationship +' ARGUMENTS + ' String wsc_name + ' Optional Boolean ID_in_str - ID as String instead of name? +' VARIABLE DECLARATION + Dim n_ws As Long + Dim w_i As Long + Dim ID As Long +' VARIABLE INSTANTIATION + n_ws = CountWorksheets + ExistsWSC = False +' ARGUMENT VALIDATION + If wsc_name = "" Then Exit Function +' METHODS + If ID_in_str Then + If Not is_numeric(wsc_name) Then Exit Function + ID = CLng(wsc_name) + If Not (ID > 0 And ID <= n_ws) Then Exit Function + ExistsWSC = True + Exit Function + End If + For w_i = 1 To n_ws + If v_wss.Item(w_i).name = wsc_name Then + ExistsWSC = True + Exit Function + End If + Next +' RETURNS + MsgBox "Error: Worksheet Container " & wsc_name & " not found in relation." +End Function + +Public Function IndexWSC(ByVal wsc_name As String, Optional ID_in_str As Boolean = True) As Long +' FUNCTION + ' Get index for Worksheet Container within relationship +' ARGUMENTS + ' String wsc_name + ' Optional Boolean ID_in_str - ID as String instead of name? +' VARIABLE DECLARATION + Dim n_ws As Long + Dim w_i As Long +' VARIABLE INSTANTIATION + n_ws = CountWorksheets + IndexWSC = False +' ARGUMENT VALIDATION + If Not ExistsWSC(wsc_name, ID_in_str) Then Exit Function +' METHODS + If ID_in_str Then + IndexWSC = CLng(wsc_name) + Else + For w_i = 1 To n_ws + If v_wss.Item(w_i).name = wsc_name Then + IndexWSC = w_i + Exit For + End If + Next + End If +End Function + +Public Function SafeOpenWB(ByVal pathWB As String) As Workbook +' FUNCTION + ' Open Workbook if not already open +' ARGUMENTS + ' String pathWB +' VARIABLE DECLARATION + Dim wb As Workbook + Dim nameWB As String + Dim nWB As Long + Dim iWB As Long +' VARIABLE INSTANTIATION + nameWB = Path2Name(pathWB) + nWB = Workbooks.count +' ARGUMENT VALIDATION + If nameWB = "" Then + MsgBox "Error: Invalid workbook path" + Exit Function + End If +' METHODS + For iWB = 1 To nWB + Set wb = Workbooks.Item(iWB) + If wb.name = nameWB Then + Set SafeOpenWB = wb + Exit Function + End If + Next +' RETURNS + Set SafeOpenWB = Workbooks.Open(pathWB) +End Function +