VB6下,一个定时器,定时器中的代码如下
Dim OBJ As ObjectOn Error Resume NextSet OBJ = GetObject(, "excel.Application")debug.Print err.Description
很奇怪的问题如果程序运行前,就已经打开EXCEL,,那么显示是OK(理论也如此)如果程序运行后,再打开EXCEL,那么还是显示着运行错误(ACTIVEX不能创建之类)但程,如何EXCEL程序失去了焦点,也就随便点击了其它窗体,那么又显示了正常,,,不明白为什么现在就是程序运行后,再打开EXCEL,打开EXCEL之后,如果没有没有让EXCEL失去激活状态,那么一直都是显示错误。。按照理论,此时EXCEL已经打开,那么GetObject应该是可以捕捉得到EXCEL了啊,,为什么还是显示错误呢。。而且奇怪的是,打开EXCEL后重新点一下其它窗体又可以正常了。。不明白啊,,搞了一天,,都没有弄明白
解决方案 »
- 一台机器上,无法用vbs脚本创建winsock对象,但是窗体中放入winsock控件,编译成exe却执行正常,为什么呢?
- 如何让自己的程序也能使用插件功能,这样可以在今后方便扩展,达人帮忙啊……
- 感激万分:如何在text中输入一个字段后自动校验该字段是否已经存在~~!
- 请给点思路和写法
- vb中可不可以调用画图工具显示图片?
- activex 是怎么访问服务器端数据库的?
- 如何用webbrowser 浏览 数据库里的记录?
- 只有一行代码,帮忙找错
- 困扰我2月的一个多条件查询问题,也许对你来说很简单。
- 能不能让RichTextBox不自动换行?我不想改用Text控件,因为我需要RichTextBox的功能
- VB中怎样获取Firebird数据库某一表中的数据
- Activereport2.0,vb6,ARViewer界面在后台无法导出TIF吗?
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,那么同是上面的代码写法,均不会出现这种问题。。
Excel 喜欢在失去焦点时写入,WPS 喜欢在启动时写入,这个时机纯属开发者的个人喜好,没有硬性规定的。