Импорт исходного кода из файла txt или bas

Я хочу сохранить исходный код макроса VBA в файле .bas или .txt и запустить его, когда пользователь запускает макрос. У меня есть макрос, который используется несколькими людьми, и я хотел бы сохранить файл на сервере, чтобы они не использовали более старые версии одного и того же макроса. Я нашел следующую строку в stackoverflow и поместил ее в код модуля, который должен импортировать код

'Library should be turned on Microsoft Visual Basic for Applications Extensibility 5.3
Option Explicit

Sub main()
Dim VBPrj As VBIDE.VBProject
Dim VBCom As VBIDE.VBComponent
    Set VBPrj = Application.VBE.ActiveVBProject
    Set VBCom = VBPrj.VBComponents("Module1")
    VBCom.CodeModule.AddFromFile ("C:\Users\lietu\OneDrive\Documents\tests\Module1.txt")
End Sub

затем я создал текстовый файл со следующим кодом в нужном месте

Attribute VB_Name = "Module1"
Sub main()
    MsgBox "Hello World"
End Sub

Что я делаю неправильно?


person Matiss Zuravlevs    schedule 29.12.2019    source источник
comment
Почему бы вам просто не использовать надстройку Excel? (XLAM-файл)   -  person braX    schedule 29.12.2019
comment
Потому что я хочу редактировать текстовый файл с помощью кода Visual Studio.   -  person Matiss Zuravlevs    schedule 29.12.2019
comment
Возможно, объясните, что не работает с вашим кодом выше?   -  person QHarr    schedule 29.12.2019
comment
Пожалуйста, ознакомьтесь с этим сообщением [Модуль импорта Excel-VBA из текстового файла (без центра доверия)][stackoverflow.com/questions/54221055/, если он соответствует вашим требованиям. работает для меня для аналогичной ситуации.   -  person skkakkar    schedule 29.12.2019
comment
Лично я думаю, что вы ищете больше проблем, чем это того стоит, но со временем вы, вероятно, сами это увидите.   -  person braX    schedule 29.12.2019
comment
Отредактированный код, чтобы сделать его более понятным. Проблема в том, что он работает, добавляя код из txt-файла перед кодом в файле excel, но я хочу, чтобы этот код в txt-файле выполнялся.   -  person Matiss Zuravlevs    schedule 29.12.2019
comment
До сих пор не понятно, что не работает. ITMT, проверьте эти два проекта: github.com/mattpalermo/VBA-Import-Export и github.com/spences10/VBA-IDE-Code-Export   -  person Ricardo Diaz    schedule 29.12.2019
comment
Я не пытаюсь импортировать или экспортировать код, я пытаюсь вызвать код VBA в txt-файле из excel (файл .xlsm) и выполнить то, что находится внутри txt-файла.   -  person Matiss Zuravlevs    schedule 29.12.2019


Ответы (1)


Невозможно выполнить код в текстовом файле как «макрос» VBA. Язык программирования/окружение/интерфейс просто так не работает - никаких если, и или но - никаких обходных путей.

Содержимое текстового или базового файла должно быть импортировано в проект VBA с использованием кода, аналогичного тому, что указано в вопросе.

Чтобы иметь возможность использовать библиотеки VB Extensibility, от которых зависит этот код, необходимо отключить определенный параметр безопасности в приложении хоста Office, что в лучшем случае делает такой подход ненадежным. Параметр не может быть отключен с помощью кода по понятным причинам.

Действительно, подход, предложенный в вопросе, был бы огромным риском для безопасности...

person Cindy Meister    schedule 30.12.2019