打开Excel工作簿时运行Ribbon控件失败问题求助
解决Excel Ribbon控件VBA代码调用失败问题
问题原因
你的Check_For_Completion过程声明了IRibbonControl类型的参数,直接通过Application.Run传递Nothing会因类型匹配问题导致执行失败,Excel无法正确识别这个参数传递方式。
解决方案
方案一:修改原过程,支持无参数调用(推荐)
把目标工作簿里的VBA代码修改为带可选参数的形式,这样无论是Ribbon控件触发还是代码调用都能正常执行:
Sub Check_For_Completion(Optional control As IRibbonControl = Nothing) ' 这里保留你原有的业务逻辑代码 End Sub
之后调用代码可以简化为:
Set wb = Workbooks.Open(fileName:=MyFolder & "\" & MyFile) Application.Run "'" & wb.Name & "'!Check_For_Completion"
方案二:排查额外可能的问题
如果修改原代码有顾虑,先确认以下几点:
- 目标工作簿的宏已启用,未被Excel安全设置拦截
Check_For_Completion过程位于标准模块中;如果在ThisWorkbook或工作表模块里,调用路径需要调整为:Application.Run "'" & wb.Name & "'!ThisWorkbook.Check_For_Completion", Nothing- 检查
MyFile变量是否包含正确的文件扩展名(比如.xlsm),工作簿名称拼写无错误
内容的提问来源于stack exchange,提问作者TheKid6789
相关产品推荐
相关产品推荐

