注册 登录
编程论坛 VFP论坛

如何判断是否有EXCEL文件打开(不是判断EXCEL对象是否已经创建)?

zhousr 发布于 2021-03-30 15:40, 1533 次点击
oExcel=createobject('excel.application'),创建了一个EXCEL对象,可以用TRY。。。ENDTRY判断是否已经创建;
oExcel=getobject(,"excel.application")
M_File=oExcel.activeworkbook.name   
如果有打开的EXCEL表,会取得表名;如果没有打开的EXCEL表,则会报错。
请教:如何判断有没有EXCEL表打开呢?
(不是判断指定文件有没打开)


[此贴子已经被作者于2021-3-30 15:45编辑过]

9 回复
#2
wengjl2021-03-30 16:51
9年前有这个内容的帖子的。因为那时候是我问的 https://bbs.bccn.net/thread-365973-1-1.html
#3
zhousr2021-03-30 22:08
以下是引用wengjl在2021-3-30 16:51:35的发言:

9年前有这个内容的帖子的。因为那时候是我问的 https://bbs.bccn.net/thread-365973-1-1.html

谢谢你的回答!但,我的问题真不是你问的问题
我的问题是,只看有没EXCEL文件被打开,而不管是什么文件被打开
大概的意思吧,就是能不能判断oEXCEL.workbook.....是否为真,而不是判断oExcel是否为真
#4
wengjl2021-03-31 07:57
以下是引用zhousr在2021-3-30 15:40:45的发言:

oExcel=createobject('excel.application'),创建了一个EXCEL对象,可以用TRY。。。ENDTRY判断是否已经创建;
oExcel=getobject(,"excel.application")
M_File=oExcel.activeworkbook.name   
如果有打开的EXCEL表,会取得表名;如果没有打开的EXCEL表,则会报错。
请教:如何判断有没有EXCEL表打开呢?
(不是判断指定文件有没打开)


你可以先用EXCEL打开一个表,再用VFP创建oExcel测试一下,VF是不理会先前打开的EXCEL的。只有你在读oExcel时,用鼠标去点了先前打开EXCEL,转移了焦点,读数会出错,理解这个现象吗
#5
吹水佬2021-03-31 09:02
用其他软件打开的EXCEL表文件要不要考虑
#6
吹水佬2021-03-31 09:18
以下是引用zhousr在2021-3-30 15:40:45的发言:

oExcel=getobject(,"excel.application")
M_File=oExcel.activeworkbook.name   
如果有打开的EXCEL表,会取得表名;如果没有打开的EXCEL表,则会报错。
请教:如何判断有没有EXCEL表打开呢?
(不是判断指定文件有没打开)

可以用 TRY ......ENDTRY
oExcel = NULL
TRY
    oExcel = getobject(,"excel.application")
CATCH
ENDTRY
IF VARTYPE(oExcel) != "O"
    ? "没有打开EXCEL"
    RETURN
ENDIF
M_File = "没有打开EXCEL表"
TRY
  M_File = "有打开EXCEL表:"+oExcel.activeworkbook.name
CATCH
ENDTRY
? M_File

[此贴子已经被作者于2021-3-31 10:03编辑过]

#7
gs25367856782021-04-01 10:33
有很多朋友在使用vf联系EXCEL时,都会碰到上面的问题,
就是EXCEL是否已经运行?
出现上面问题的根本是从VF启动EXCEL时,把EXCEL对象隐藏。
我的解决方法是这样的:
从VF启动的EXCEL从来不隐藏到内存,而是只把它最小化。
#8
zhousr2021-04-01 22:43
不好意思,这两天都在外面跑,都没来论坛看。后天,好好消化一下各位大佬的建议,再跟大伙汇报!!!
#9
zhousr2021-04-03 15:04
非常对不起大家,浪费大家时间了!
我把TRY的条件搞错了:
TRY
    oExcel = getobject(,"excel.application")
    M_File=oExcel.activeworkbook.name   &&获取表名 关键是要判断这句,以前一直没加,故老是出错。
CATCH
    =MESSAGEBOX("请打开一个信息采集表",0+48,"提醒!")
    CANCEL
ENDTRY
问题解决了,谢谢大家!
#10
zgr5262021-04-15 02:21
回复 楼主 zhousr
可以搜索系统已打开的窗口,若发现含有EXCEL标题的窗口,则为有EXCEL已运行
1