只是想知道是否有人可以建议我为什么会收到错误?我正在尝试通过调用互操作公开的Application.Run方法来在工作簿中执行宏。
目前正在抛出以下COM异常:
{System.Runtime.InteropServices.COMException (0x800A03EC): Cannot run the macro Macro1'.
The macro may not be available in this workbook or all macros may be disabled.
我将包含的工作簿放在受信任的位置,将所有安全设置设置为最小值,并对我的对象模型进行受信任的编程访问。到目前为止,我完全没有想法,谷歌让我失望了!
有没有人这样做过,或者你能推荐一些我可以尝试的东西吗?
非常感谢!
答案 0 :(得分:1)
事实证明,实际上有两个同名的宏被注入到工作簿中。上面的例外转换为VBA中的“编译错误:检测到模糊名称”错误 - 我应该直接进入VBA来查看它,而不是假设互操作发生了奇怪的事情。
答案 1 :(得分:0)
如果宏存储在个人工作簿中,您可能必须引用工作簿名称:personal.xls!macroname
答案 2 :(得分:0)
虽然已经回答,但我有同样的症状。最后,我用this hotfix of Microsoft
解决了这个问题答案 3 :(得分:0)
使用Interop调用某些第三方宏时会弹出同样的问题,这是因为addins无法在Excel中正确注册。对于这种情况,这可能会有所帮助:
答案 4 :(得分:0)
我遇到了同样的问题,Macro存储在"模块"命名为" MainModule"。
我试过
App.Run("Abc.xlsm!CalcSomething");
App.Run("MainModule!CalcSomething");
App.Run("Abc.xlsm.CalcSomething");
App.Run("MainModule.CalcSomething");
App.Run("CalcSomething);
没有任何效果。