VBA编译错误:从COM加载项调用方法时参数不是可选的

时间:2018-07-30 10:16:59

标签: excel vba com excel-addins

我有以下代码:

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

2 个答案:

答案 0 :(得分:0)

这未经测试,因此如果不正确,我将其删除。

根据我的评论,它看起来像:

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是插件中的许多宏之一。当我单独单击该宏时,它可以正常工作。

但是我没有您的插件,因此无法测试。由于ButtonClearRemarks不是基础class的一部分,我假设您需要将返回的对象强制转换为您的插件,以便公开该方法。

您尚未向我们显示ButtonClearRemarks的代码,因此我们所掌握的知识有限。

我还遇到this,它表明:

Dim objBaseObject As Object 
Set objBaseObject = _ 
 Application.COMAddIns.Item("CssFillTool").Object

所以也许,您可以那样做。

答案 1 :(得分:0)

假设有问题的外接程序是COM可见的,并且该方法可以访问according to this other accepted answer(跳过答案的前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