Localization and component reference
The VBA procedures are source-verified at 3b4c05386e5a44d05633136ecbcf5dd067f70435. Worksheet values, ribbon XML, and some UserForm properties remain inside the Excel artifact and are not fully represented by the text export.
Multilingual interface
MultiLang.LoadLanguage reads four worksheets from ThisWorkbook into VBA collections:
| Worksheet | Key constructed by source | Consumer |
|---|---|---|
Forms |
<form name>_<control name>; form captions use CAPTION |
Translateform updates form and control captions. |
Errmsg |
Message identifier | GetErrMsg variants return the identifier plus translated text and replace %1 … %4. |
Messages |
Message identifier | GetMsg variants return translated prompts and replace %1 … %3. |
Ribbon |
Ribbon control identifier | GetRibbon and CommonGetLabel return ribbon labels. |
The selected language is a worksheet column number stored in the registry. Column 3 is the default and fallback. The reviewed release resources map the columns as follows:
| Column | Language | BCP 47 tag |
|---|---|---|
| 3 | English | en |
| 4 | French | fr |
| 5 | Portuguese | pt |
| 6 | Indonesian | id |
dlgSelectLanguage stores one of these column numbers. SelectLanguage reloads all collections and invalidates the ribbon. Release 6.02.004 adds the Indonesian selector and reviewed column-6 resources for ribbon controls, forms, messages, and error messages. Missing text still falls back to English.
Adding or updating a language safely
The legacy instructions—add columns to four sheets, populate strings, and update selection logic—describe the mechanism but are not a complete release process. A reviewed language change should:
- assign a stable BCP 47 language tag and map it explicitly to the worksheet column rather than relying only on a number;
- update all four resource sets and preserve identifiers;
- verify placeholders such as
%1, punctuation, and accelerator/shortcut expectations; - test missing-string fallback, long text, Unicode, right-to-left text where applicable, and form/ribbon clipping;
- obtain technical and linguistic review and record the reviewed source version;
- keep English as the normative technical documentation unless the project approves another review language.
Component conventions
The source contains 78 standard modules, 41 class modules, and 66 UserForms. The following groups are intended as a navigation aid, not a stable public API.
Entry, UI, and session modules
| Components | Responsibility |
|---|---|
AutoOpenClose, AppEvents, RibbonUI, Globals |
Startup, Excel events, ribbon callbacks, and shared session state. |
MultiLang, SetFontAndColors |
Translated strings and visual settings. |
cmdAbout, cmdCellInfo, cmdShowHide, cmdProtectUnprotect |
User-facing utility commands and template visibility/protection. |
Data definition and movement modules
| Components | Responsibility |
|---|---|
ScanTableDefTest, ScanTableDefs, ScanDefCommon |
Validate definitions and build scan/SQL state. |
cmdLoadData_ImportData, cmdSaveData_ExportData, cmdLoadAndSave |
Load/import, save/export, and combined flow orchestration. |
DBBookMarkedCursors, DBInterface, DbFunc |
Key lookup, recordset operations, SQL execution, quoting, and operation counters. |
DbCreateTables |
Create tables, indexes, and key-family schema. |
Content and administration modules
| Components | Responsibility |
|---|---|
cmdOpenWorkbooks, cmdManageWorkBooks, cmdRegisterBook, cmdReserve_Free_Workbook |
Workbook lifecycle and metadata. |
cmdClassifications, SaveClassifications, ExportClassificatiion |
Classification view, edit, save, and export. |
cmdCorrespondence, SaveCorrespondences, ExportCorrespondence |
Correspondence view, edit, save, and export. |
cmdKeyFamily, cmdDimensions, cmdGlobals |
Key families, dimension associations, and database globals. |
cmdBatchRun, BatchRun, BatchLog |
Batch selection, execution, repetition, and diagnostics. |
cmdManageDocuments, cmdOpenDocuments, cmdDocumentation |
Linked documents and metadata reports. |
cmdAdministrators, cmdPermissions, cmdUserSettings, cmdSetYears |
Application roles, settings, and period selection. |
cmdBackUp, cmdBackupPath, cmdConvertDB, cmdVersion |
Backup/export, restore, database conversion, and version checks. |
cmdTrace, cmdSQLLog |
Diagnostic workbooks. |
Principal classes
| Class | Responsibility observed in source |
|---|---|
clsDB |
Connection/configuration state, table-existence and load flags, and cached domain collections. |
clsWBData |
Per-open-workbook UI/session state. |
clsWorkBookInfo |
Persistent registered-workbook metadata and database operations. |
clsScanTableDefResults |
Parsed definition, ranges, SQL fragments, operation type, and keyed row/column information. |
clsKeyName, clsFieldNames |
Key-family and dimension schema metadata. |
clsClassification, clsClassItem, clsClassDescription |
Classification aggregate, values, and description. |
clsCorrespondence, clsCorrItem |
Correspondence aggregate and mappings. |
clsBatchList, clsBatchListEntry, clsBatchElement, related description classes |
Ordered batch structures and metadata. |
clsUserSettings, clsAdministrator, clsPermission |
Settings and application authorization state. |
clsDocInfo, clsGlobalVar, clsBasePath, clsBackUpPath |
Document, global, and path metadata. |
Worksheet class exports Ark1 through Ark7 and ThisWorkbook are present, but the text export does not establish each worksheet’s visible name or retained cell resources. Do not infer a mapping from Ark number to language sheet.
Interface modules and trust boundaries
| Module | External capability |
|---|---|
InterfaceBetterNow |
Windows timing APIs for elapsed-time measurement. |
InterfaceBrowseFolder |
Folder-selection dialog. |
InterfaceDropClose |
Windows API manipulation of a UserForm close control. |
InterfaceFileScripting |
Scripting.FileSystemObject file/folder existence, enumeration, copy, creation, and deletion. |
InterfaceNTUserName |
Windows user-name lookup. |
InterfaceOpenFileDialog |
Excel file-selection dialogs. |
InterfaceRegistry |
Per-user VBA settings registry reads and writes. |
InterfaceShellExec |
Windows ShellExecute for documents and files. |
InterfaceWEB |
Open project, error-reporting, and video URLs. |
DropBoxINterface |
WMI process discovery and termination. |
These modules are Windows-specific. Paths, URLs, file types, process names, registry values, and user identity cross trust boundaries. A future .NET seam should wrap them behind explicit interfaces and policies rather than reproduce unrestricted VBA calls.
Third-party tree-view classes
clsTreeView and clsNode identify JKP Application Development Services and Peter Thornton as authors and include a header that allows use and adaptation inside an overall project but restricts publishing the modules themselves without consent. Because this repository is public, maintainers should complete a license/provenance review, retain required notices, and confirm that public distribution is authorized. This is not resolved by the repository’s top-level license alone.
Forms inventory strategy
The 66 forms cover selection dialogs, workbook/document/database management, classification/correspondence/key-family editing, batches, backup/restore, conversion, permissions/settings, and progress displays. A manually maintained control-by-control list will drift. Generate a reference from .frm metadata where possible, and supplement it with:
- invoking ribbon callback and command procedure;
- modal/modeless behaviour and returned state;
- destructive or privileged actions;
- external files, processes, registry, or database tables touched;
- localization keys and accessibility review;
- a repeatable Excel test.
Binary .frx resources cannot be meaningfully reviewed as ordinary text. Preserve their pairing and verify rendered forms in the supported Office environment.
Supporting utilities
Modules such as FileNameFunctions, StandardFunctions, SourceInfo, FindMarkedItems, SetFalseUSername, TestForDropYear, ConvertXLS, and InstallMeAsAddin support paths, values, provenance, development/test identity, period rules, legacy file conversion, and installation. Their generic names do not imply general-purpose safety; callers and side effects should be traced before reuse or migration.