设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 7465|回复: 3
打印 上一主题 下一主题

[Access本身] [原创技巧]使用GetObject(, "Excel.Application")获到excel对象出错解决

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2014-10-26 13:48:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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]更多






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2014-10-26 13:53:00 | 只看该作者
好经验,学习了。
谢谢分享。

点击这里给我发消息

3#
发表于 2014-10-26 17:53:46 | 只看该作者
站长又出精品了
4#
发表于 2014-10-27 17:01:25 | 只看该作者
有时问题并不一定出现在当前代码本身.

学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 17:16 , Processed in 0.092226 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表