Я хотел бы иметь возможность управлять исходными текстами своих модулей VBA в Excel (в настоящее время с использованием Excel 2003 SP3), чтобы я мог делиться и управлять кодом, используемым кучей разных электронных таблиц, - и поэтому я хотел бы повторно загрузить их из файлов при открытии электронной таблицы.Управление версиями модулей кода Excel VBA
У меня есть модуль под названием 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 к этим именам модулей - либо при загрузке, либо при удалении (я не уверен, какой).
Я забыл добавить, что я немного подумал и придумал это: http://grumpyop.wordpress.com/2009/04/20/version-control-for-excel-workbooks-part-2/ Примечание. что в комментариях есть что-то вроде VBAMaven, которое выглядит как какая-то внешняя служба, которая может помочь. –