主题:请推荐一个关闭excel的方法
zhengxinhai
[专家分:30] 发布于 2008-09-18 00:00:00
请问各位,有没有用代码判断excel是否在运行的最简单的方法,若在运行关将所有在运行的execl.
回复列表 (共6个回复)
沙发
moz [专家分:37620] 发布于 2008-09-18 02:09:00
IF !(TYPE("E_x.name")="U") and (E_x.application.visible=.f. OR E_x.workbooks.count=0)
E_x.quit
release E_x
ENDIF
如果不知道对象的名字,很简单,用 Try + GetObject( )
担心有多个对象? 循环.总会有 Catch 的一天.
板凳
zhengxinhai [专家分:30] 发布于 2008-09-18 06:40:00
如果不知道对象的名字,怎样用 Try + GetObject( ) 使用循环catch抓住每一个对象呢?请给写一段代码,因为我太不熟悉catch了.在这里谢谢moz老师了.
3 楼
cbl518 [专家分:57140] 发布于 2008-09-18 07:04:00
一楼的
判断表达式
是错误的!
当对象《E_x》不存在时,该语句会报错的!
4 楼
cbl518 [专家分:57140] 发布于 2008-09-18 07:11:00
应该是:
if !(TYPE("E_x.name")="U") and (! E_x.application.visible OR E_x.workbooks.count=0)
5 楼
cbl518 [专家分:57140] 发布于 2008-09-18 07:15:00
IF TYPE("E_x.name")="C"
E_x.quit
E_x=.NULL.
release E_x
ENDIF
6 楼
moz [专家分:37620] 发布于 2008-09-18 09:06:00
[quote]local Excel
TRY
CLEAR ALL && 消除所有引用
Do While .T.
Excel=getobject(,"Excel.Application")
do while Excel.Workbooks.count>0
Excel.workbooks(1).close (.T.) && 强制保存,也可以强制不保存.
EndDo
Excel.quit
release Excel
EndDo
Catch
Messagebox("已全部退出完毕",0,"退出EXCEL")
EndTry [/quote]
如果你不知道对象名,
而只是用在程序退出的时候,
那么使用 Clear All 这一句不会有什么问题,
而如果不是退出不能使用Clear All而又不知道其他EXCEL对象引用变量名的话,
对象的其它引用没有被清除,
而GetObject( )得到的对象引用并不能把对象销毁,
这个时候就会死循环了.
我来回复