当 运行 vba 脚本时,出现宏不可用或所有宏可能被禁用的错误

when running vba script, getting error that macro is not available or all macros may be disabled

我有几个脚本直到最近都运行良好。他们 运行 通过任务调度程序,当任务调度程序打开脚本时,它会得到以下信息:

第 20 行是这样的:

'Execute Macro Code
  ExcelApp.Run MacroPath

这是完整的脚本:

'Input Excel File's Full Path
  ExcelFilePath = "C:\vba-files\task_sched\task_modules.xlsm"

'Input Module/Macro name within the Excel File
  MacroPath = "Module1.get_data"

'Create an instance of Excel
  Set ExcelApp = CreateObject("Excel.Application")

'Do you want this Excel instance to be visible?
  ExcelApp.Visible = false

'Prevent any App Launch Alerts (ie Update External Links)
  ExcelApp.DisplayAlerts = False

'Open Excel File
  Set wb = ExcelApp.Workbooks.Open(ExcelFilePath)

'Execute Macro Code
  ExcelApp.Run MacroPath

'Save Excel File (if applicable)
  wb.Save

'Reset Display Alerts Before Closing
  ExcelApp.DisplayAlerts = True

'Close Excel File
  wb.Close

'End instance of Excel
  ExcelApp.Quit

'Leaves an onscreen message!
  MsgBox "Your Automated Task successfully ran at " & TimeValue(Now), vbInformation

宏设置已启用,如下所示:

当打开工作簿并且手动 运行 宏时,它工作正常。 它只是在 运行 通过脚本

时出错

我不明白它以前怎么能正常工作...基本上,您的 VBScript 代码应该完全限定要调用的过程。我的意思是,它还需要要调用的宏所在的工作簿名称(或全名)。请尝试:

 ExcelApp.run "'" & ExcelFilePath & "'" & "!" & MacroPath

"'" 个字符使代码 运行 很好,即使文件路径包含空格...

理论上,使用工作簿全名会自动打开保留宏的工作簿,如果不打开...我没有在VBScript自动化上测试过。当从 Excel(已测试)

拨打电话时,它以这种方式工作