本帖最后由 papapa314 于 2011-3-19 14:27 编辑
批量处理doc文档的时候碰到这样的问题:当doc文档的编码有问题或者为文件属性为只读的时候,程序马上出错退出。请问各位,如何判断这类无法处理的doc文档,然后自动跳过这些文档,保证程序不会出错?
以下是部分源码,我用设置文件属性的方法,遇到某些doc文档还是程序还是直接退出。出错原因是word UDF的一个函数
$o_doc = $o_object.Documents.Open ($s_FilePath, $f_ConfirmConversions, $f_ReadOnly, $f_AddToRecentFiles, _
$s_PasswordDocument, "", $f_Revert, $s_WritePasswordDocument, "", $i_Format)
If Not IsObj($o_doc) Then
__WordErrorNotify("Error", "_WordDocOpen", "", "Document Object Creation Failed")
Return SetError($_WordStatus_GeneralError, 0, 0)
EndIf
谢谢您的关注!!!
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include<file.au3>
#include<array.au3>
#include <Word.au3>
#Include <GuiListView.au3>
$Form1_1 = GUICreate("word改内容测试", 587, 572);这个要放在使用时间限制的前面。
$listview1=GUICtrlCreateListView("路径",50,50,400,400)
$buton1=GUICtrlCreateButton("添加",450,450,50,50)
$buton2=GUICtrlCreateButton("开始",520,520,50,50)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $buton1
open()
Case $buton2
start()
EndSwitch
WEnd
Func open()
$file=FileOpenDialog("","","(*.doc)",4)
;MsgBox(0,0,$file)
$filearray=StringSplit($file,"|")
;_ArrayDisplay($filearray)
Dim $path[$filearray[0]-1]
For $i=0 To $filearray[0]-2
$path[$i]=$filearray[1]&"\"&$filearray[$i+2]
Next;...........................................多选文件时得到每个文件的完整路径
;_ArrayDisplay($path)
For $i=0 To $filearray[0]-2
;MsgBox(0,0,$path[$i])
GUICtrlCreateListViewItem($path[$i],$listview1)
Next
EndFunc
Func start()
For $i=0 To _GUICtrlListView_GetItemCount($listview1)-1
$oWordApp = _WordCreate(_GUICtrlListView_GetItemText($listview1,$i),1,0)
$oWordDoc = _WordDocGetCollection($oWordApp, 0)
If Not @error Then
$oWordDoc.Range.insertBefore("大家好");在文档开头加入一段话
EndIf
_WordDocClose($oWordDoc,-1)
_WordQuit ($oWordApp, -1)
Next
EndFunc
|