如何同时后台保存已打开的多个word文档或Excel文档?
本帖最后由 KLU3K 于 2010-6-13 19:06 编辑想做一个关机程序,关机前保存所有已经打开的word和Excel文件。
路径可能很多,也就是说可能会有同时打开的不同路径中的相关文件。
想有什么操作一次性全部保存之后关机。不需要另存。只要保存一下就行。
ps.关机程序的代码已经有了。就是保持已打开的文件这步不知道怎么办了。一个固定的文件还好,但是文件一多就不会弄了。
另外追加一个问题,怎么判断一个word或一个Excel文件有没有保存?
说明白一点就是,如果是新建一个文档,那么就算不写任何内容也会出来一个空白文件。
但是有一种情况是直接启动word后也会有一个空白文档,如果直接保存会弹出对话框让你选择保存为XXX文件。
那么怎么判断这种情况存在呢?如果有这个情况存在的话就直接另存到桌面一个文件。 激活窗口,发送保存的快捷键,譬如Excel的Alt+F、Ctrl+S。未经实践。 学习了-谢谢!! 用热键不是太好。还有别的方法么? #include <Excel.au3>
$var = WinList()
For $i = 1 to $var
IfStringInStr($var[$i], "xls") And IsVisible($var[$i])Then
_ExcelWriteCell(_ExcelBookAttach($var[$i], "Title"), "If you can read this, then Success!", 1, 1) ;写入单元格
_ExcelBookClose(_ExcelBookAttach($var[$i], "Title"), 1, 0)
MsgBox(0, "详细信息", "标题=" & $var[$i] & @LF & "句柄=" & $var[$i])
EndIf
Next
Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
EndFunc不知道是不是我的excel是精简版问题
这个脚本运行几次提示错误C:\autoit3\Include\Excel.au3 (410) : ==> ??????(?????).:
$oExcel.Application.DisplayAlerts = $fDisplayAlerts
$oExcel.Application^ ERROR最后一次就可以无错误执行,奇怪... Win7+Office2007测试无效。没任何反应。
我同时打开了1和2两个文件。没有保存也没关闭。也无任何报错。奇怪的是MsgBox也没有。 #include <Word.au3>
#include <Excel.au3>
If ProcessExists("Excel.EXE") Or ProcessExists("WINWORD.EXE") Then
$oExcel = ObjGet("", "Excel.Application")
$oWord = ObjGet("", "Word.Application")
If IsObj($oExcel) Or IsObj($oWord) Then
MsgBox(0, "", "存在")
_ExcelBookClose($oExcel)
_WordQuit($oWord, -1)
EndIf
Else
MsgBox(0, "", "No")
EndIf测试了一下,当打开多个word文档时可以全部保存。
但Excel打开多文档后只保存第一个打开的。剩下后打开的都不会保存。 另外追加一个问题,怎么判断一个word或一个Excel文件有没有保存?
说明白一点就是,如果是新建一个文档,那么就算不写任何内容也会出来一个空白文件。
但是有一种情况是直接启动word后也会有一个空白文档,如果直接保存会弹出对话框让你选择保存为XXX文件。
那么怎么判断这种情况存在呢?如果有这个情况存在的话就直接另存到桌面一个文件。 _ExcelBookClose($oExcel, 1, 0) 呵呵学习一下。。 本帖最后由 弹指即就 于 2010-6-14 17:32 编辑
是否存在application对象?
$application=objget('','word.application') ;or Excel.application
;查无此据
if not isobj($application) then exit
依次关闭
for $each in $application.documents
;未保存?
if Not $each.saved then $each.save
$each.close()
next
....
;或许有多个 application 实例
while isobj(objget('','word.application'))
....
$application.quit()
wend
;新建文档与保存过的
$doc.funllname 有明显差别 回复 9# lynfr8
测试不行啊。出错。而且没有关闭也没保存。
E:\AutoIt3\Include\Excel.au3 (396) : ==> ??????(?????).:
Local $fDisplayAlerts = $oExcel.Application.DisplayAlerts
Local $fDisplayAlerts = $oExcel.Application^ ERROR
页:
[1]