标题:如何判断是否有EXCEL文件打开(不是判断EXCEL对象是否已经创建)?
只看楼主
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:226
专家分:42
注 册:2019-3-8
结帖率:96.55%
已结贴  问题点数:20 回复次数:9 
如何判断是否有EXCEL文件打开(不是判断EXCEL对象是否已经创建)?
oExcel=createobject('excel.application'),创建了一个EXCEL对象,可以用TRY。。。ENDTRY判断是否已经创建;
oExcel=getobject(,"excel.application")
M_File=oExcel.activeworkbook.name   
如果有打开的EXCEL表,会取得表名;如果没有打开的EXCEL表,则会报错。
请教:如何判断有没有EXCEL表打开呢?
(不是判断指定文件有没打开)


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

搜索更多相关主题的帖子: 是否 判断 EXCEL 创建 打开 
2021-03-30 15:40
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:7 
9年前有这个内容的帖子的。因为那时候是我问的 https://bbs.bccn.net/thread-365973-1-1.html

只求每天有一丁点儿的进步就可以了
2021-03-30 16:51
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:226
专家分:42
注 册:2019-3-8
得分:0 
以下是引用wengjl在2021-3-30 16:51:35的发言:

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

谢谢你的回答!但,我的问题真不是你问的问题
我的问题是,只看有没EXCEL文件被打开,而不管是什么文件被打开
大概的意思吧,就是能不能判断oEXCEL.workbook.....是否为真,而不是判断oExcel是否为真
2021-03-30 22:08
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
以下是引用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,转移了焦点,读数会出错,理解这个现象吗

只求每天有一丁点儿的进步就可以了
2021-03-31 07:57
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
用其他软件打开的EXCEL表文件要不要考虑
2021-03-31 09:02
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用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编辑过]

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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505293-1-1.html




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

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