Я думаю, вы можете попытаться сделать это, автоматизировав 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
). Ясно, что вам нужно только сделать это один раз (на каждом компьютере, который вы хотите выполнить автоматическую компиляцию, конечно).
КОДИРОВАНИЕ:
Ваша команда инструкция бар (т.е. "Compile VBA Project") находится внутри объекта VBE Заявки Excel, в частности, в панели команд:
Dim objVBECommandBar As Object
Set objVBECommandBar = Application.VBE.CommandBars
Объект будет теперь содержат всю командную строку редактора Visual Basic. В частности, вы ищете кнопку ID 578, которая на самом деле является «компиляцией проекта VBA» (вы можете поместить наблюдателя в переменную и просмотреть все внутри локального окна, вы можете захотеть найти другую команд). Следовательно, подытожить:
Set compileMe = objVBECommandBar.FindControl(Type:=msoControlButton, ID:=578)
compileMe.Execute
Это позволит компилировать проект. Как вы просили, вы просто положили это на событие «Открытая рабочая книга»:
Private Sub ThisWorkbook_Open()
Set compileMe = objVBECommandBar.FindControl(Type:=msoControlButton, ID:=578)
compileMe.Execute 'the project should hence be compiled
End Sub
Если это не так, то кто-нибудь знает, где хранятся скомпилированные файлы? Я думаю, что вместо компиляции новой рабочей книги было бы не просто отправить всех пользователей эти скомпилированные файлы и предоставить инструкции, где эти файлы должны храниться в каталоге temp? – Examorph
Спасибо, Маттео, это не очень срочно, просто у меня было много проблем во многих книгах, включая мой текущий проект. Я с нетерпением жду вашего решения. – Examorph
Там вы идете, это ответ. Я только что тестировал один из моих проектов и, похоже, работает нормально. Не стесняйтесь указывать на возможные недостатки, это первый раз, когда я тоже что-то пробовал. –