xwlzx 发表于 2011-6-22 09:12:33

如何判断一个EXCEL文件已打开

本帖最后由 xwlzx 于 2011-6-22 09:13 编辑

怎么判断一个EXCEL文件是否已打开,如果一个EXCEL文件已打开,那么就将对象指定到此打开的EXCEL文件上进行操作,如果还没打开,就创建EXCEL对象。
AU3用户自定义函数中没有判定是否已打开一个EXCEL文件的函数

kevinch 发表于 2011-6-22 10:07:31

本帖最后由 kevinch 于 2011-6-22 10:11 编辑

objget(全路径文件名)
已打开则直接引用,未打开则会打开文件。
优点:隐性打开,不会出现界面,处理速度快。
缺点:只能读取,不能改写文件(自测结果,非权威结论)。
最好在结束时执行个不保存关闭文件的命令。

xwt620 发表于 2011-6-22 23:38:16

最近研究了下UDF里的EXCEL管理,用_ExcelBookOpen打开一个EXCEL文件后,只能对这一个文件进行操作,而且要操作第二个EXCEL文件之前,最好把第一个EXCEL文件_ExcelBookClose,否则很容易出错误。
可以先参考下AU3的UDF下EXCEL 管理
UDF 函 数 名 称    功 能 描 述
_ExcelBookAttach 附加 Excel 文件打开模式.

_ExcelBookClose关闭活动工作簿并删除指定的 Excel 对象.

_ExcelBookNew    创建新工作簿并返回其对象标识符.

_ExcelBookOpen   打开一个现有的工作簿并返回其对象标识符.

_ExcelBookSave   保存指定的 Excel 对象活动工作簿.

_ExcelBookSaveAs 保存指定 Excel 对象活动工作簿为新的文件名 和/或 类型.(类似 另存为 菜单命令).

love5173 发表于 2011-6-23 01:01:42

回复 1# xwlzx
文件被打开以后就不能再次说写入动作,很多命令都可以实现这个功能,
如 open重命名等

xwlzx 发表于 2011-6-23 09:41:01

本帖最后由 xwlzx 于 2011-6-23 09:45 编辑

回复 2# kevinch
谢谢,如果不能写,就不太好啊!

xwlzx 发表于 2011-6-23 09:42:24

回复 3# xwt620

好像没有我要实现的功能啊

kevinch 发表于 2011-6-23 12:38:19

回复kevinch
谢谢,如果不能写,就不太好啊!
xwlzx 发表于 2011-6-23 09:41 http://autoitx.com/images/common/back.gif
如果是已经打开的,用objget得到的是可以写入的,如果是未打开的,用objget得到的是不可写入的。
大量操作excel文档的话,建议用objcreate创建个excel进程来处理,进程的visible属性可以设置成false,只要你知道你是在做什么就行了,当然,调试的时候可以设置为true,这样可以看到处理的部分。

xwlzx 发表于 2011-6-23 15:22:02

本帖最后由 xwlzx 于 2011-6-23 15:35 编辑

回复 7# kevinch

非常感谢!这样确实非常好,学习了!
受您的启发,我现在仔细看了AU3帮助文档的COM对象,受益匪浅啊!谢谢!

502762378 发表于 2011-6-24 17:37:17

首先查看有没有excel.exe的进程
然后枚举顶层窗口的标题有没有您要的excel的标题
如果没有创建

leon460 发表于 2011-6-28 23:02:18

回复 9# 502762378

好思路 ,,呵呵,,
页: [1]
查看完整版本: 如何判断一个EXCEL文件已打开