Excel VBA编译错误:从COM加载项调用方法时参数不是可选的
我有以下代码:Excel VBA编译错误:从COM加载项调用方法时参数不是可选的,excel,vba,com,excel-addins,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 我试图找出我为什么会犯这个错误 But
Sub CallVSTOMethod()
Dim addin As COMAddIns
Dim automationObject As Object
Set addin = Application.COMAddIns("CssFillTool")
Set automationObject = addin.Item
automationObject.ButtonClearRemarks
End Sub
我试图找出我为什么会犯这个错误
ButtonClarRemarks是加载项中许多宏之一。当我分别单击该宏时,它工作正常
此宏不需要任何参数。单击此按钮将格式化我的Excel工作表。我尝试传递空参数和其他选项,但没有用。欢迎提出任何建议
经过几次更正后:
Set addin=Application.com addins
设置自动对象=附加项(“CssFillTool”)
现在,我只需要访问此加载项中的宏
按钮耳环标记
,这未经测试,因此如果不正确,我将删除它
从我的评论来看,这似乎是:
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
按钮耳环标记
是加载项中许多宏之一。当我分别单击该宏时,它工作正常
但是我不能测试,因为我没有你的插件。由于buttonclaremarks
不是基的一部分,我假设您需要将返回的对象强制转换到您的加载项中,以便公开该方法
您尚未向我们展示按钮耳环标记的代码,因此我们了解的知识有限
我还发现了它暗示的地方:
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
子测试()
Dim addin As Office.com addin
作为对象的自动对象
Set addin=Application.COMAddIns(“CssFillTool”)
设置automationObject=addin.Object'是否确定抛出错误的不是上面的行Item
听起来像是一个需要参数的方法。@JohnColeman是的!我将代码更改为:Set addin=Application.com addins Set automationObject=addin.Item(“CssFillTool”),现在这不会引发任何错误。但是现在我不知道调用“ButtonClarRemarks”宏的语法。下一行现在抛出错误:对象不支持此属性或方法它应该是Set automationObject=addin.object
?帮助说明“必需的对象。在COMAddIns集合的该位置返回COM外接程序的序数值,或者表示指定COM外接程序的ProgID的字符串值。”它看起来像是返回了一个COMAddIn
。这不是VBA,但应该给出建议:那么,您是否应该将加载项
指定为Application.COMAddIns()
的返回值,然后通过项索引访问您感兴趣的项?我得到以下错误方法或数据成员未找到(错误461),用于code@gowtham确切地因为该宏不是COMAddin
类的一部分。向我们显示该宏的定义…错误也会显示:运行时错误“91”:未设置对象变量或带块变量也意味着问题在于COM加载项CreatedI希望向您发送代码。除了直接上传到这里,还有其他选择发送给你吗?不确定。您还没有向我们展示有关此按钮耳环标记方法的任何信息。是的,该行中的automationObject设置为nothing我不知道该怎么办如果CssFillTool不是COMAddIns集合的成员,我预计会出现下标超出范围的错误,好吗。是否确定加载项是COM可见的?加载项是=Cssfilltool,但:AddIn.object=nothing。哪个设置为AutomationObject?您可以参考其他答案了解如何配置vsto加载项吗?