【发布时间】:2019-07-19 12:46:50
【问题描述】:
我希望能够将字符串传递给函数并让它调用宏名称 = 传递的字符串的宏。
我使用 Excel 16 进行操作,启用了对象库和可扩展性引用,并启用了必要的信任中心设置。在下面找到我的代码:
Dim b As Object
Set b=Workbooks("PERSONAL.XLSB").VBProject.VBComponents(macroNameString)
Call b
代码在“调用 b”时因错误而停止,并出现“错误 438:对象不支持此属性或方法”。请告知您将如何解决此问题。谢谢!
【问题讨论】:
-
尝试使用
Application.Run而不是Call。更多信息:stackoverflow.com/questions/15969796/… -
@JustynaMK 感谢您的意见。
Application.Run产生同样的错误。 -
对不起,我忘了补充一点
Call只能在从同一个工作簿运行时使用,要从另一个工作簿运行它,您需要使用Application.Run。不知道如何将它与您的b参数结合起来,因为它现在是 - 我会亲自将 b 的数据类型更改为String并将其值设置为b="PERSONAL.XLSB!macroNameString" -
根据 Shai Rado 的回答,我已经取消了前两行代码。现在我正在使用
Application.Run "'PERSONAL.xlsb'!" & macroNameString,它仍然会抛出一个错误,尽管是一个不同的错误(1004)。 -
@JustynaMK 感谢您的所有帮助。我重新启动了 Excel,Shai 的解决方案有效(耸了耸肩)。我猜有时也适用于 Office 的整个“你是否将其关闭再打开”...