Office中国论坛/Access中国论坛

标题: [原创技巧]使用GetObject(, "Excel.Application")获到excel对象出错解决 [打印本页]

作者: tmtony    时间: 2014-10-26 13:48
标题: [原创技巧]使用GetObject(, "Excel.Application")获到excel对象出错解决
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]更多







作者: zhuyiwen    时间: 2014-10-26 13:53
好经验,学习了。
谢谢分享。
作者: zhidao    时间: 2014-10-26 17:53
站长又出精品了
作者: sql999    时间: 2014-10-27 17:01
有时问题并不一定出现在当前代码本身.

学习了





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3