| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4800 人关注过本帖
标题:GetObject 搞了一天都没有搞明白
只看楼主 加入收藏
happylcg
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-9-11
收藏
 问题点数:0 回复次数:2 
GetObject 搞了一天都没有搞明白
VB6下,一个定时器,定时器中的代码如下
Dim OBJ As Object

On Error Resume Next

Set OBJ = GetObject(, "excel.Application")

debug.Print err.Description


很奇怪的问题

如果程序运行前,就已经打开EXCEL,,那么显示是OK(理论也如此)

如果程序运行后,再打开EXCEL,那么还是显示着运行错误(ACTIVEX不能创建之类)

但程,如何EXCEL程序失去了焦点,也就随便点击了其它窗体,那么又显示了正常,,,不明白为什么

现在就是程序运行后,再打开EXCEL,打开EXCEL之后,如果没有没有让EXCEL失去激活状态,那么一直都是显示错误。。按照理论,此时EXCEL已经打开,那么GetObject应该是可以捕捉得到EXCEL了啊,,为什么还是显示错误呢。。而且奇怪的是,打开EXCEL后重新点一下其它窗体又可以正常了。。

不明白啊,,搞了一天,,都没有弄明白

[ 本帖最后由 happylcg 于 2013-9-11 20:26 编辑 ]
搜索更多相关主题的帖子: 定时器 天都 EXCEL 
2013-09-11 17:08
happylcg
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-9-11
收藏
得分:0 
可能我之前说明的不好,我再说一下

该程序只有在timer中有以下代码

Dim OBJ As Object
On Error Resume Next
Set OBJ = GetObject(, "excel.Application")
debug.Print err.Description


1.当执行程序时,如果在执行这个程序之前就已经打开了EXCEL,那么 err.Description是为空的,也就是没有错误值
2.如果执行了这个程序(还没有打开EXCEL),那么 err.Description的描述是ActiveX 部件不能创建对象

第1,2都好理解,,问题在于以下

3.
A.执行程序(还没有打开EXCEL )  错误信息为 ActiveX 部件不能创建对象

B.双击桌面EXCEL,打开EXCEL程序   错误信息还是为 ActiveX 部件不能创建对象 (为什么,此时已经打开了EXCEL,应该GetObject不会再返回一个错误了啊)----问题点

C.打开了EXCEL,此时EXCEL程序是激活状态,随便点击一下其它窗体(让EXCEL程序不是激活状态),程序不再出现错误信息。此点不明白,为什么呢,当EXCEL失去了焦点就不错了呢-----为什么


上面就只有4行代码,请大家试一下(VB 6 + OFFICE 2003+WIN7或WINXP)

值得说的是,,如果不是EXCEL,,而是其它的软件,如金山的WPS  (Set OBJ = GetObject(, "ET.Application") ),那么同是上面的代码写法,均不会出现这种问题。。
2013-09-12 08:28
九连阳
Rank: 2
等 级:论坛游民
帖 子:36
专家分:65
注 册:2013-7-4
收藏
得分:0 
Dim OBJ As Object

On Error Resume Next

Set OBJ = GetObject(, "excel.Application")

if err then
    Set OBJ = CreateObject("excel.Application")
    ... ...
end if
2013-10-05 15:22
快速回复:GetObject 搞了一天都没有搞明白
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017310 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved