xms77 发表于 2014-6-13 23:00:24

如何判断指定的Excel文件被打开了?[已解决]

本帖最后由 xms77 于 2014-6-15 08:55 编辑

我的代码需要通过excel对象来打开某个Excel文件来进行改动,但是在打开这个Excel文件之前,想检测一下这个excel文件是否已经被打开了,如果打开了就先关闭它。现在是我要用什么办法来判断这个excel文件是被打开的?其他excel文件打开可以不管。

kevinch 发表于 2014-6-14 09:48:09

$xls="d:\document\123.xls"
$excelapp=objget("","excel.application")
if isobj($excelapp) then
for $wb in $excelapp.workbooks
    if stringlower($wb.fullname)=$xls then
      msgbox(0,"","文件已打开")
      $wb.close(true)
      exitloop
    endif
next
endif这样试下,其实得到操作句柄后可以直接操作了,不需要关闭吧

xms77 发表于 2014-6-15 08:55:09

回复 2# kevinch
果然很好用,学习了,谢谢!

xms77 发表于 2014-6-25 23:42:34

回复 2# kevinch
Kevinch你好,请问:根据你的代码,发现这个excel文件已经打开了,如果我要操作这个excel文件,我该如何得到如下代码中的$oExcel对象句柄呢?
_ExcelSheetActivate($oExcel, "Raw")
$ArrayStationErrorInfo = $oExcel.cells(4, 32).resize(119, 2).value

kevinch 发表于 2014-6-26 06:58:35

$xls="d:\document\123.xls"
$excelapp=objget("","excel.application")
if isobj($excelapp) then
for $wb in $excelapp.workbooks
    if stringlower($wb.fullname)=$xls then
      $ArrayStationErrorInfo = $wb.activesheet.cells(4,32).resize(119,2).value
      exitloop
    endif
next
endif这个试下

yongge9999 发表于 2014-6-26 15:23:59

回复 5# kevinch


    好东东,感谢分享

xms77 发表于 2014-6-27 21:49:20

回复 5# kevinch
谢谢,有效!

ak47gglllk 发表于 2015-2-24 14:27:49

感谢,感谢,非常感谢

netegg 发表于 2015-2-24 16:55:47

不知道行不行,试试吧,从进程id走,找excel启动的参数,不过我不确定行不行,曾经试过word,好像先开和后开不一样
页: [1]
查看完整版本: 如何判断指定的Excel文件被打开了?[已解决]