Страницы: 1
RSS
Макросом создать макрос, Vba
 
Здравствуйте!
Макросом Макро1 создается новая книга xlsm. Теперь макросом Макро1 нужно в новой книге создать макрос. Возможно ли это?
 
Возможно.
 
Поищите в сети - примеров куча. Если это не разовая работа, то лучше с динамической обработкой текстов макросов не связываться. Требуются дополнительные разрешения и это дело может крайне не понравиться антивирусам (справедливо).
Изменено: sokol92 - 13.11.2021 21:19:08
Владимир
 
Цитата
sokol92 написал:
и это дело может крайне не понравиться антивирусам
и очень понравится вирусам :-)

Указанное требование действительно очень критично и, в лучшем случае, можно проверить доступ и сообщить, если доступа нет и выполнение код невозможно.
Изменено: БМВ - 13.11.2021 21:32:58
По вопросам из тем форума, личку не читаю.
 
Здравствуйте, Михаил, спасибо за весомую поддержку.  :)

Стартовая точка в документации - здесь (если автор темы проигнорирует предупреждения).
Изменено: sokol92 - 13.11.2021 21:25:57
Владимир
 
sokol92, Владимир приветствую. Очень очень давно пробегал мимо меня пример макроса, который что-то делал а потом еще и самоликвидировался. Чем не дыра и головняк админу.
По вопросам из тем форума, личку не читаю.
 
изучайте
Спасибо
 
Всем спасибо!
Я быстро испугался и теперь буду вручную копировать текст с макросами и вставлять в модуль новой книги
 
В Tools - Referenсes... добавить ссылку на библиотеку Microsoft Visual Basic For Applications Extensibility 5.3
и в настройках безопасности разрешить доступ к объектной модели VBA
Запускать этот макрос в уже сохранённом на диске файле. Рядом с ним создастся файл "TestFile.xlsm" с макросом
Код
 Sub Test()
    Dim WB As Workbook, vModule As VBComponent, i As Long
    
    Application.ScreenUpdating = False
    Set WB = Workbooks.Add(1)
    Set vModule = WB.VBProject.VBComponents.Add(vbext_ct_StdModule)
    
    With vModule.CodeModule
        i = .CountOfLines + 1
        .InsertLines i, "Sub Test()"
        i = i + 1
        .InsertLines i, "   MsgBox ""Hello!"", vbInformation, ""Test"" "
        i = i + 1
        .InsertLines i, "End Sub"
    End With
    
    WB.SaveAs ThisWorkbook.Path & Application.PathSeparator & "TestFile.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled '52
    WB.Close (True)
    Application.ScreenUpdating = True
    MsgBox "Файл создан!", vbInformation, "Конец"
End Sub
Изменено: New - 14.11.2021 13:04:40
 
Михаил Л, Порой для автоматизации можно использовать шаблонный файл, в нем уже будут коды, а дополнить листами и данными проблем не возникнет.
По вопросам из тем форума, личку не читаю.
 
Спасибо!
Чтобы наверняка я лучше скопирую и вставлю. На все-про-все меньше десяти сек

, вторым вариантом я смотрел в сторону шаблона
Спасибо!
 
Цитата
написал:
смотрел в сторону шаблона
Да, шаблон, содержащий нужные макросы, нормальное решение. Мы так поступаем уже лет 20...
Вот, нашел шаблон для: "Налоговая декларация по плате за пользование водными объектами", дата корректировки 03.10.1999.
Изменено: sokol92 - 13.11.2021 22:01:03
Владимир
 
Цитата
написал:
В Tools - Referenсes... добавить ссылку на библиотеку
и в настройках безопасности разрешить доступ к объектной модели VBA :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, да, спасибо
Страницы: 1
Наверх