VBScript для записи макроса в файл Excel - PullRequest
5 голосов
/ 08 октября 2009

Может ли VBScript написать макрос в файле Excel при его создании, который сможет запускаться при открытии файла?

У меня есть VBScript для автоматической генерации файла Excel и некоторых данных внутри него, он запускается один раз и генерирует файл со всеми данными / сортировками и т. Д.

Мне нужно иметь некоторую интерактивность, которая обычно запускалась бы с макросом, пока программа работает, и кто-то просматривает данные, проблема здесь в том, что это автоматически генерируемый файл, макросы не сохраняются.

Если это так, как бы это реализовать, как можно написать макрос для последующего запуска в vbscript?

Ответы [ 2 ]

5 голосов
/ 09 октября 2009

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

Объект объектной модели excel VBProject.VBComponents работает как шарм и делает именно то, что я искал, для того, чтобы кто-то другой искал подобный ответ, я нашел это, когда просматривал объект VBProject:

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.DisplayAlerts = False
Set objWorkbook = objExcel.Workbooks.Open("C:\scripts\test.xls")
       Set xlmodule = objworkbook.VBProject.VBComponents.Add(1) 
       strCode = _
       "sub test()" & vbCr & _
       "   msgbox ""Inside the macro"" " & vbCr & _
       "end sub"
       xlmodule.CodeModule.AddFromString strCode
objWorkbook.SaveAs "c:\scripts\test.xls"
objExcel.Quit

Источники: Сценарист Добавить макрос в электронную таблицу Excel

Строка для создания макроса Excel

2 голосов
/ 08 октября 2009

Вероятно, самым простым способом было бы вручную создать документ Excel, содержащий нужные макросы. Этот документ затем будет использоваться в качестве шаблона для вашего VBScript.

Вместо создания нового файла вы должны скопировать этот шаблон, открыть его в Excel и заполнить его данными, используя ваш VBScript.

Более сложным и гибким вариантом будет использование объектной модели Excel. Найдите объект ActiveWorkbook.VBProject.VBComponents, который позволит вам добавлять формы, модули и классы в проект VBA текущего документа. Однако этот параметр требует определенных настроек безопасности (в основном вы должны разрешить программный доступ к проекту VBA).

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