我有一个简单的计划,可以使用VBScript从.docx Word文件中读取标题和文本。
到目前为止,一切都很好。但是,如果您在代码中输入错误,则会锁定正在使用的文档:
“ test.docx已被锁定以进行编辑”
您将获得以下选项之一的选择
之后,再次运行代码时出现错误
The requested member of the collection does not exist.
Dim Word, WordDoc, myDoc, srcDoc
myDoc = "D:\temp\test.docx"
Set Word = CreateObject("Word.Application")
'Open the Document
Set WordDoc = Word.Documents.open(myDoc)
' do stuff with the doc
' and include this to "lock" the document
With WordDoc.Sections(1)
.Headers(wdHeaderFooterPrimary).Range.Text = "Header text"
End With
' Close Word
WordDoc.Save
Word.Quit
'Release the object variables
Set WordDoc = Nothing
Set Word = Nothing
我的问题是,您可以怎么做才能停止锁定正在处理的Word文件的周期(假设在运行代码之前我容易出错)?除了重命名文件及其参考之外?
答案 0 :(得分:0)
由于文档在正在运行的不可见应用程序中保持打开状态,因此出现错误。
IMO的可靠方法是添加虚拟类来控制word应用程序进程,然后在代码sturtup处创建该类的虚拟实例,这将在实例终止事件时退出word app。
Dim Word, WordDoc, myDoc, Dummy
Set Dummy = New cDummy
myDoc = "D:\temp\test.docx"
Set Word = CreateObject("Word.Application")
Word.Visible = True ' just for debug
' Open the Document
Set WordDoc = Word.Documents.open(myDoc)
' do stuff with the doc
' raise the error to terminate
MsgBox 1/0
Class cDummy
Private Sub Class_Terminate()
On Error Resume Next
WordDoc.Save
WordDoc.Close
Word.Quit
MsgBox "Word App Quit"
End Sub
End Class