在docx上使用VBScript时被锁定以进行编辑

时间:2019-07-04 19:30:55

标签: windows vbscript ms-word

我有一个简单的计划,可以使用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文件的周期(假设在运行代码之前我容易出错)?除了重命名文件及其参考之外?

1 个答案:

答案 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