Код не работает, потому что ему не нравится тот факт, что файл excel, содержащий код, открытый перед выполнением кода:
Используя свой код, попробуйте выполнить следующие простые действия и убедитесь, что он работает:
- Создан файл
Script.xlsm
на рабочем столе. - В
Modul1
добавлено следующее:
Sub FromExcel()
MsgBox "FROM EXCEL"
End Sub
Вызывается это с
Script.vbs
вот так:
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\Users\UserName\Desktop\Script.xlsm'!Modul1.FromExcel"
objExcel.Visible = True 'Or "False", depending on what you want.
objExcel.Application.Quit
Set objExcel = Nothing
Прибыль
Для обхода , если вы хотите запустить «макрос» из открытого файла Excel, тогда что-то вроде GetObject будетбыть полезным:
Set objExcel = GetObject("C:\Users\UserName\Desktop\xl.xlsm")
objExcel.Application.Run "Modul1.FromExcel"
objExcel.Application.Quit
Set objExcel = Nothing
Однако, это, вероятно, проблема XY - должен быть лучший способ сделать всю историю, например, запустить «макрос» из одного независимого Excelфайл, который открывает другие файлы Excel на рабочем столе и обрабатывает их, без необходимости VBScript.Вероятно, проверьте следующее: