Импортировать строки кода

Можем ли мы читать скрипты или строки кода для модуля в vba ? Как и у нас есть функция include в php .

Например:

Мы сохраняем это в Excel где-то и называем диапазон как xyz

line 1 of code line 2 of code line 3 of code 

Затем во время запуска макроса мы называем это

 Sub my_macro() xyz End Sub 

В принципе, я хочу повторить несколько строк кода, но не хочу создавать другой макрос и передавать параметры.

    Это можно сделать с помощью библиотеки Microsoft Visual Basic для расширения приложений 5.3 (VBIDE). На CPearson.com есть отличные примеры . Обычно я использую это, чтобы вставлять фрагменты кода во время разработки. Мне лично было бы неудобно выполнять код, хранящийся на листе excel, но я тестировал это, и он действительно работает.

    Мой рабочий лист:

      A 1 MsgBox "I'm a test." 2 MsgBox "So am I." 

    Я установил пустую подпрограмму, которую мы затем вставим в лист excel.

     Private Sub ProcToModify() End Sub 

    И подпрограмма, которая фактически вставляет код в ProcToModify :

     Sub ModifyProcedure() Dim VBProj As VBIDE.VBProject Dim VBComp As VBIDE.VBComponent Dim CodeMod As VBIDE.CodeModule Dim StartLine As Long Dim NumLines As Long Dim ProcName As String Set VBProj = ActiveWorkbook.VBProject Set VBComp = VBProj.VBComponents("Module1") ' specify module to modify Set CodeMod = VBComp.CodeModule Dim ws As Worksheet Dim rng As Range Dim cell As Range Set ws = ThisWorkbook.ActiveSheet 'change this accordingly Set rng = ws.Range("A1:A2") 'and this For Each cell In rng ProcName = "ProcToModify" With CodeMod StartLine = .ProcStartLine(ProcName, vbext_pk_Proc) NumLines = .ProcCountLines(ProcName, vbext_pk_Proc) .InsertLines StartLine + NumLines - 2, cell.Value 'insert each line at the end of the procedure to get them in the correct order. End With Next cell End Sub 

    Вызывается во время выполнения следующим образом:

     Public Sub main() ModifyProcedure ProcToModify End Sub 

    One Big Gotchya: перед запуском этого кода вам нужно перейти в Excel >> Файл >> Параметры >> Центр доверия >> Настройки центра доверия >> Параметры макроса и проверить «Доверять доступ к объектной модели проекта VBA».

    Я бы предположил, что это связано с тем, что разрешение доступа к объекту проекта справедливо связано с угрозой безопасности.

    С сайта cpearson.com я связался с ранее:

    ПРЕДУПРЕЖДЕНИЕ. Многие компьютерные вирусы на базе VBA распространяются самостоятельно, создавая и / или изменяя код VBA. Поэтому многие антивирусные сканеры могут автоматически и без предупреждений или подтверждения удалять модули, которые ссылаются на объект VBProject, вызывая постоянную и безвозвратную потерю кода. Подробнее см. В документации по антивирусному программному обеспечению.

    Interesting Posts

    Использование случая с именованной колонкой

    Копирование диапазона ячеек от листа книги к другому листу книги

    Пользователь из кнопки X останавливает код

    Извлечение и редактирование данных из нераскрытых книг в существующие книги

    Сортировка данных по цвету ячейки с помощью VBA в Excel 2003

    Ссылка на ячейку Excel из закрытой книги с использованием имени файла в ячейке

    Динамическая логика в Excel Vba

    Фильтрация в Apache POI

    Копировать диапазон с помощью VBA в буфер обмена

    Кнопка ленты не открывается исходный макрофайл

    mysql: использование одного поля для хранения многих полей для сохранения полей

    Превосходный доступ запрещен с помощью win32 python pywin32

    Excel sum top N значений в строке

    Формула excel vba countifs, ссылающаяся на изменение имени рабочего листа

    перебирать записи в excel и обновлять определенные строки в базе данных mysql со значениями из файла excel в php

    Давайте будем гением компьютера.