Как временно заблокировать запуск всех макросов и отредактировать файл xlsm с помощью VBScript? - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть файл xlsm, который мне нужно отредактировать. Однако макросы там блокируют мой скрипт от редактирования. Мой код следующий:

xlsm_file_name = "webADI_template_Bankbuchungen_GL.xlsm"
'opening xlsm file and setting readonly to false
set xlobj = createobject("Excel.Application")
set excel_file = xlobj.workbooks.open("C:\Users\oleynikov nikolay\Desktop\VBS Automation Scripts\processed_data\Excel Datei\"&xlsm_file_name, readonly=false)
'making changes invisible for the user
excel_file.application.enableevents = false
xlobj.Visible = false
'defining the sheet where we will be inserting our data into 
set excel_sheet = excel_file.worksheets(1)
excel_sheet.cells(13,4).value = "EUR"
excel_file.application.enableevents = TRUE
xlobj.DisplayAlerts = FALSE
excel_file.save

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

Есть ли возможность сделать это?

Спасибо.

1 Ответ

0 голосов
/ 04 апреля 2020

Попробуйте (кажется, что это должно работать):

Возвращает или задает константу MsoAutomationSecurity, которая представляет режим безопасности, который используется Microsoft Excel при программном открытии файлов. Чтение / запись.

MsoAutomationSecurity может быть одной из следующих констант MsoAutomationSecurity:

  • msoAutomationSecurityByUI. Используется параметр безопасности, указанный в диалоговом окне «Безопасность».
  • msoAutomationSecurityForceDisable. Отключает все макросы во всех файлах, открытых программно, без отображения предупреждений безопасности.

VB

Sub Security() 
Dim secAutomation As MsoAutomationSecurity 
secAutomation = Application.AutomationSecurity 
Application.AutomationSecurity = msoAutomationSecurityForceDisable 
Application.FileDialog(msoFileDialogOpen).Show 
Application.AutomationSecurity = secAutomation 
End Sub

https://docs.microsoft.com/en-us/office/vba/api/excel.application.automationsecurity

...