如何判断一个EXCEL文件已打开
本帖最后由 xwlzx 于 2011-6-22 09:13 编辑怎么判断一个EXCEL文件是否已打开,如果一个EXCEL文件已打开,那么就将对象指定到此打开的EXCEL文件上进行操作,如果还没打开,就创建EXCEL对象。
AU3用户自定义函数中没有判定是否已打开一个EXCEL文件的函数 本帖最后由 kevinch 于 2011-6-22 10:11 编辑
objget(全路径文件名)
已打开则直接引用,未打开则会打开文件。
优点:隐性打开,不会出现界面,处理速度快。
缺点:只能读取,不能改写文件(自测结果,非权威结论)。
最好在结束时执行个不保存关闭文件的命令。 最近研究了下UDF里的EXCEL管理,用_ExcelBookOpen打开一个EXCEL文件后,只能对这一个文件进行操作,而且要操作第二个EXCEL文件之前,最好把第一个EXCEL文件_ExcelBookClose,否则很容易出错误。
可以先参考下AU3的UDF下EXCEL 管理
UDF 函 数 名 称 功 能 描 述
_ExcelBookAttach 附加 Excel 文件打开模式.
_ExcelBookClose关闭活动工作簿并删除指定的 Excel 对象.
_ExcelBookNew 创建新工作簿并返回其对象标识符.
_ExcelBookOpen 打开一个现有的工作簿并返回其对象标识符.
_ExcelBookSave 保存指定的 Excel 对象活动工作簿.
_ExcelBookSaveAs 保存指定 Excel 对象活动工作簿为新的文件名 和/或 类型.(类似 另存为 菜单命令). 回复 1# xwlzx
文件被打开以后就不能再次说写入动作,很多命令都可以实现这个功能,
如 open重命名等 本帖最后由 xwlzx 于 2011-6-23 09:45 编辑
回复 2# kevinch
谢谢,如果不能写,就不太好啊! 回复 3# xwt620
好像没有我要实现的功能啊 回复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:35 编辑
回复 7# kevinch
非常感谢!这样确实非常好,学习了!
受您的启发,我现在仔细看了AU3帮助文档的COM对象,受益匪浅啊!谢谢! 首先查看有没有excel.exe的进程
然后枚举顶层窗口的标题有没有您要的excel的标题
如果没有创建 回复 9# 502762378
好思路 ,,呵呵,,
页:
[1]