【问题标题】:VBS run Excel macro argument not optionalVBS 运行 Excel 宏参数不是可选的
【发布时间】:2017-06-08 21:40:22
【问题描述】:

我正在尝试编写运行 Excel 宏的 VBScript 代码。

我的 VBA 代码:

Sub MyMacro(Name As String)

   'do something

End Sub

我的 VBScript 代码:

Set objExcel = CreateObject("Excel.Application")

objExcel.Application.Run "'C:\MyFile.xlsm'!MyMacro", "MyName"    

objExcel.Application.Quit

Set objExcel = Nothing

我得到的错误:

编译错误:参数不是可选的

如果我确实传递了一个参数,我怎么会得到这个错误? 我做错了什么?

谢谢!

【问题讨论】:

  • 您确定在运行之前保存了 VBScript 和 Excel 文件吗? Argument not optional 表示您没有传递宏需要的参数。您发布的代码是正确的(我对其进行了测试)并且它运行没有任何问题。请确认代码与您在此处发布的代码完全相同,并且所有文件在运行前都已保存。

标签: vba excel vbscript


【解决方案1】:

您需要指定宏所在的模块,例如

"'C:\MyFile.xlsm'.Module1.MyMacro"

以下链接没有明确说明宏必须驻留在 Excel 中的 VBA 模块中,但我相信它必须。

见示例代码here

【讨论】:

  • 它应该是"'C:\MyFile.xlsm'!Module1.MyMacro",文件名后面有一个!,而不是.,如果你运行它给出一个路径/文件名。但这不是问题。如果MyMacro 不是Private 那么"'C:\MyFile.xlsm'!MyMacro" 工作正常,无需指定模块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多