Я думаю, вы можете попробовать сделать это, автоматизируя VBE (редактор Visual Basic).
ТРЕБОВАНИЕ:
вам нужно перейти к Excel / File / Options / Trust Center / Trust Center settings
и проверить параметр Trust access to the VBA project object model
(по соображениям безопасности он отключен по умолчанию, и если вы его не отметите, приведенный ниже код вызовет ошибку времени выполнения 1004 programmatic access to visual basic project is not trusted
). Понятно, что вам нужно сделать это только один раз (конечно, на каждом компьютере, на котором вы хотите выполнить автоматическую компиляцию).
КОДИРОВКА:
Инструкция на панели команд (например, «Скомпилировать проект VBA») находится внутри объекта VBE приложения Excel, в частности, на панели команд:
Dim objVBECommandBar As Object
Set objVBECommandBar = Application.VBE.CommandBars
Теперь объект будет содержать всю панель команд редактора Visual Basic. В частности, вы ищите кнопку идентификатора «578», которая на самом деле является «Скомпилировать проект VBA» (вы можете поставить наблюдателя на переменную и просмотреть все, что находится внутри, в локальном окне, вы можете захотеть найти другие команды ). Таким образом, подведем итоги:
Set compileMe = objVBECommandBar.FindControl(Type:=msoControlButton, ID:=578)
compileMe.Execute
Это позволит составить проект. Как вы и просили, вы просто поместили это в открытое событие This Workbook:
Private Sub ThisWorkbook_Open()
Set compileMe = objVBECommandBar.FindControl(Type:=msoControlButton, ID:=578)
compileMe.Execute 'the project should hence be compiled
End Sub
person
Matteo NNZ
schedule
17.01.2015