|
Access使用GetObject(, "Excel.Application")偶尔提示参数不可选的错误. 最终找到解决办法.与大家分享 搜索所有微软的帮助也看不出程序有什么错误,提供的参数也是正确的.
使用方法如下
Dim ExApp As Object
On Error Resume Next
Set ExApp = GetObject(, "Excel.Application")
一般,为了避免引用控件或链接库,大家都比较喜欢不引用直接createobject且使用后期绑定的方式.
Dim excelApp As Object
Set excelApp = CreateObject("Excel.APPLICATION")
如果已经有打开的Excel,则获取当前已打开的
Set ExApp = GetObject(, "Excel.Application")
但代码编译到此处时,提示 GetObject 编译错误:必选参数。
后无意中发现程序中使使用一个Windows的API函数,这个函数名称也为GetObject,而且都是公共函数
导致两个函数有冲突了,且API的这个GetObject优先级更高,被先解释了.
API函数定义如下:
Public Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
解决办法,将API函数改成其它名称
Public Declare Function apiGetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
即可解决问题.
有时问题并不一定出现在当前代码本身.
[size=11.818181991577148px]更多
|
|