我有以下代码:
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
答案 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