VBA Compile error: Argument not optional when calling a method from a COM AddIn
VBA Compile error: Argument not optional when calling a method from a COM AddIn
我有以下代码:
Sub CallVSTOMethod()
Dim addin As COMAddIns
Dim automationObject As Object
Set addin = Application.COMAddIns("CssFillTool")
Set automationObject = addin.Item
automationObject.ButtonClearRemarks
End Sub
我正在尝试找出出现此错误的原因。
ButtonClearRemarks 是插件中的众多宏之一。当我单独单击该宏时,它可以正常工作。
这个宏不需要任何参数。单击此按钮将格式化我的 Excelsheet。我也尝试传递空参数和其他选项,但没有用。欢迎提出任何建议。
经过几次更正:
Set addin = Application.COMAddIns
Set automationObject = addin.Item("CssFillTool")
现在我只需要访问此插件中的宏ButtonClearRemarks
未经测试,如有不妥我会删除
从我发表的评论看来:
Sub CallVSTOMethod()
Dim addins As COMAddIns
Set addins = Application.COMAddIns
Dim addin As COMAddIn
Set addin = addins.item("CssFillTool")
addin.ButtonClearRemarks ' cast addin into the correct variable type
End Sub
ButtonClearRemarks
is one of many macros in the addin. When I click that macro seperately it works properly.
但我无法测试,因为我没有您的插件。由于 ButtonClearRemarks
不是基础 class 的一部分,我假设您需要将返回的对象转换为 您的 插件,以便公开该方法。
您还没有向我们展示 ButtonClearRemarks
的代码,因此我们的知识有限。
我也遇到了 this 它建议的地方:
Dim objBaseObject As Object
Set objBaseObject = _
Application.COMAddIns.Item("CssFillTool").Object
所以也许你可以这样做。
假设有问题的加载项是 COM 可见的并且方法是可访问的,(跳过答案的前 2/3,它在 C# 代码中模拟了一个简单的 COM 加载项),您对加载项的处理不正确。
Sub Test()
Dim addin As Office.COMAddIn
Dim automationObject As Object
Set addin = Application.COMAddIns("CssFillTool")
Set automationObject = addin.Object '<~~ handle the add-in's Object property
automationObject.ButtonClearRemarks
End Sub
我有以下代码:
Sub CallVSTOMethod()
Dim addin As COMAddIns
Dim automationObject As Object
Set addin = Application.COMAddIns("CssFillTool")
Set automationObject = addin.Item
automationObject.ButtonClearRemarks
End Sub
我正在尝试找出出现此错误的原因。
ButtonClearRemarks 是插件中的众多宏之一。当我单独单击该宏时,它可以正常工作。
这个宏不需要任何参数。单击此按钮将格式化我的 Excelsheet。我也尝试传递空参数和其他选项,但没有用。欢迎提出任何建议。
经过几次更正:
Set addin = Application.COMAddIns
Set automationObject = addin.Item("CssFillTool")
现在我只需要访问此插件中的宏ButtonClearRemarks
未经测试,如有不妥我会删除
从我发表的评论看来:
Sub CallVSTOMethod()
Dim addins As COMAddIns
Set addins = Application.COMAddIns
Dim addin As COMAddIn
Set addin = addins.item("CssFillTool")
addin.ButtonClearRemarks ' cast addin into the correct variable type
End Sub
ButtonClearRemarks
is one of many macros in the addin. When I click that macro seperately it works properly.
但我无法测试,因为我没有您的插件。由于 ButtonClearRemarks
不是基础 class 的一部分,我假设您需要将返回的对象转换为 您的 插件,以便公开该方法。
您还没有向我们展示 ButtonClearRemarks
的代码,因此我们的知识有限。
我也遇到了 this 它建议的地方:
Dim objBaseObject As Object
Set objBaseObject = _
Application.COMAddIns.Item("CssFillTool").Object
所以也许你可以这样做。
假设有问题的加载项是 COM 可见的并且方法是可访问的,
Sub Test()
Dim addin As Office.COMAddIn
Dim automationObject As Object
Set addin = Application.COMAddIns("CssFillTool")
Set automationObject = addin.Object '<~~ handle the add-in's Object property
automationObject.ButtonClearRemarks
End Sub