回 帖 发 新 帖 刷新版面

主题:请推荐一个关闭excel的方法

请问各位,有没有用代码判断excel是否在运行的最简单的方法,若在运行关将所有在运行的execl.

回复列表 (共6个回复)

沙发

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 的一天.

板凳

如果不知道对象的名字,怎样用 Try + GetObject( ) 使用循环catch抓住每一个对象呢?请给写一段代码,因为我太不熟悉catch了.在这里谢谢moz老师了.

3 楼

一楼的
判断表达式
是错误的!

当对象《E_x》不存在时,该语句会报错的!

4 楼

应该是:

if !(TYPE("E_x.name")="U") and (! E_x.application.visible OR E_x.workbooks.count=0)

5 楼

IF TYPE("E_x.name")="C"
   E_x.quit
   E_x=.NULL.
   release E_x
ENDIF 

6 楼

[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( )得到的对象引用并不能把对象销毁,
这个时候就会死循环了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册