|
最近在尝试使用vb6封装vba函数,大体上都比较顺利,写的普通函数都能够在excel里正常运行了。
但是有一个比较基本的用法,目前用着有点问题:
Set xlapp = GetObject(, "Excel.Application")
想通过该方式创建一个Excel.Application对象,然后用里面的内部成员或方法,比如range。
使用该种方法,遇到了一个蛋疼问题:在首次打开excel表格后,在表格中调用含有该语句的方法,执行到此处以后后出现429错误(而且是隐性错误,表格中直接返回#value那个错误值了,后来我在vb代码中加了输出才看到的是429)
429对应文本是:ActiveX 部件不能创建对象或返回对该对象的引用
特别奇怪的是,我只要在表格中打开一下vba编辑器,点一下停止按钮,再重新使用原来的自定义函数,又发现能够正常获取到表格实例了。
有没有vb大神帮我看一下,这个问题感觉很莫名其妙。
我在我的两个电脑都试了,都不行。分别是win10带32位office365还有是win7带32位office2010。
其它自定义函数都能正常跑通,就是这个GetObject经常会失灵,但偶尔又能生效,所以应该不是语法错误。
我写了一个测试函数,专门用来复现这个问题:
Function testapp()
On Error Resume Next
Set xlapp = GetObject(, "Excel.Application")
testapp = Err
End Function
调用testapp函数,如果没有成功获取到实例就会返回对应错误码,现在就是每次新开调用就会显示429,然后进vba编辑器里点停止又能正常显示0,如果显示0,那么再用那个实例进行其它操作也可以正常进行。
在附件里有对应的工程文件和dll文件,如果需要安装文件我也可以一并上传。 |
|