Я хотел бы иметь возможность управлять исходными текстами своих модулей электронной таблицы Excel (в настоящее время с использованием Excel 2003 SP3), чтобы я мог делиться и управлять кодом, используемым кучей разных таблиц, и поэтому я хотел бы повторно - загружать их из файлов при открытии электронной таблицы.
У меня есть модуль под названием Loader.bas, который я использую для выполнения большей части работы с ослами (загрузка и выгрузка любых других модулей, которые необходимы), и я хотел бы иметь возможность загружать его из файл, как только откроется электронная таблица.
Я приложил следующий код к событию Workbook_Open (в классе ThisWorkbook).
Private Sub Workbook_Open()
    Call RemoveLoader
    Call LoadLoader
End Sub
Где RemoveLoader (также в классе ThisWorkbook) содержит следующий код:
Private Sub RemoveLoader()
    Dim y As Integer
    Dim OldModules, NumModules As Integer
    Dim CompName As String
    With ThisWorkbook.VBProject
        NumModules = ThisWorkbook.VBProject.VBComponents.Count
        y = 1
        While y <= NumModules
            If .VBComponents.Item(y).Type = 1 Then
                CompName = .VBComponents.Item(y).Name
                If VBA.Strings.InStr(CompName, "Loader") > 0 Then
                    OldModules = ThisWorkbook.VBProject.VBComponents.Count
                    .VBComponents.Remove .VBComponents(CompName)
                    NumModules = ThisWorkbook.VBProject.VBComponents.Count
                    If OldModules - NumModules = 1 Then
                        y = 1
                    Else
                        MsgBox ("Failed to remove " & CompName & " module from VBA project")
                    End If
                End If
            End If
            y = y + 1
        Wend
    End With
End Sub
Скорее всего, это немного сложнее и немного грубо, но я пытаюсь все, что могу найти, чтобы загрузить его для внешнего модуля!
Часто, когда я открываю электронную таблицу, функция RemoveLoader обнаруживает, что в проект VBA уже включен модуль "Loader1", который он не может удалить, а также не может загрузить новый модуль Loader из файла.
Любые идеи, если то, что я пытаюсь сделать, возможно? Excel, похоже, очень любит добавлять 1 к этим именам модулей - либо при загрузке, либо при удалении (я не уверен, какой).
