找回密码
 加入
搜索
查看: 6790|回复: 8

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

  [复制链接]
发表于 2014-6-13 23:00:24 | 显示全部楼层 |阅读模式
本帖最后由 xms77 于 2014-6-15 08:55 编辑

我的代码需要通过excel对象来打开某个Excel文件来进行改动,但是在打开这个Excel文件之前,想检测一下这个excel文件是否已经被打开了,如果打开了就先关闭它。现在是我要用什么办法来判断这个excel文件是被打开的?其他excel文件打开可以不管。
发表于 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
这样试下,其实得到操作句柄后可以直接操作了,不需要关闭吧

评分

参与人数 2金钱 +90 贡献 +2 收起 理由
xms77 + 50 excel高人啊!
zldfsz + 40 + 2 测试有效

查看全部评分

 楼主| 发表于 2014-6-15 08:55:09 | 显示全部楼层
回复 2# kevinch
果然很好用,学习了,谢谢!
 楼主| 发表于 2014-6-25 23:42:34 | 显示全部楼层
回复 2# kevinch
Kevinch你好,请问:根据你的代码,发现这个excel文件已经打开了,如果我要操作这个excel文件,我该如何得到如下代码中的$oExcel对象句柄呢?
_ExcelSheetActivate($oExcel, "Raw")
$ArrayStationErrorInfo = $oExcel.cells(4, 32).resize(119, 2).value
发表于 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
这个试下
发表于 2014-6-26 15:23:59 | 显示全部楼层
回复 5# kevinch


    好东东,感谢分享
 楼主| 发表于 2014-6-27 21:49:20 | 显示全部楼层
回复 5# kevinch
谢谢,有效!
发表于 2015-2-24 14:27:49 | 显示全部楼层
感谢,感谢,非常感谢
发表于 2015-2-24 16:55:47 | 显示全部楼层
不知道行不行,试试吧,从进程id走,找excel启动的参数,不过我不确定行不行,曾经试过word,好像先开和后开不一样
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 14:16 , Processed in 0.077466 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表