Word VBA 过程调用第二次突然失败

Word VBA procedure calls suddenly failing second time through

我已经构建了一个访问数据库来填充 table,然后打开几个 Word 邮件合并模板,生成合并文档并保存它们。代码的相关部分获取或创建一个 Word 应用程序对象,将合并模板作为文档对象打开,运行邮件合并,然后关闭该模板。然后它会查找合并输出,使其成为活动文档,另存为(遵循文件命名模式),然后将其关闭。如果没有打开其他文档,它将退出 Word,并释放文档和应用程序对象。

在上周安装 MS 更新之后,这一切都运行良好一次,但在第二次运行时,生成的合并文档在成为活动文档后停止响应。我很难找到 Google 以查看是否可以找到解释或解决方法,但没有运气。有人有什么想法吗?

相关代码:

On Error Resume Next
Set objWord = GetObject(, "Word.Application")
If objWord Is Nothing Then
  Set objWord = CreateObject("Word.Application")
End If
On Error GoTo 0
Set objDoc = objWord.Documents.Open(templateName)
objWord.Visible = True
objWord.ActiveWindow.View.Type = wdNormalView
objDoc.MailMerge.OpenDataSource Name:= _
  tempRoot & "Merge_Output.txt", ConfirmConversions:=False, ReadOnly _
  :=True, LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:= _
  "", PasswordTemplate:="", WritePasswordDocument:="", _
  WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
  Connection:="", SQLStatement:="", SQLStatement1:="", SubType:= _
  wdMergeSubTypeOther
  objDoc.MailMerge.ViewMailMergeFieldCodes = False
objDoc.MailMerge.Execute
objDoc.Close False
For Each openDoc In objWord.Documents
  strOpenDoc = openDoc.Name
  If strOpenDoc Like "Form Letters*" Then
    openDoc.Activate
    Exit For
  End If
Next openDoc
objWord.ActiveDocument.Content.NoProofing = False
objWord.ActiveDocument.SaveAs TargetDir & "\" & DocBase & "_Designation" '<=====This is where the document stops responding
objWord.ActiveDocument.Close False
If objWord.Documents.Count = 0 Then objWord.Application.Quit
Set objDoc = Nothing
Set objWord = Nothing

我没有遇到过这个问题,但很想尝试以下方法:

For Each openDoc In objWord.Documents
    If openDoc.Name Like "Form Letters*" Then
        With openDoc
            .Content.NoProofing = False
            .SaveAs2 FileName:=TargetDir & "\" & DocBase & "_Designation", FileFormat:=wdFormatXMLDocument
            .Close False
        End With
        Exit For
    End If
Next openDoc
If objWord.Documents.Count = 0 Then objWord.Application.Quit

嗯,事实证明这根本不是代码问题。 MS 安全更新有一些 unintended/unexpected 影响,包括导致 Word 在尝试另存为 some/most Word 文档时停止响应,无论是以编程方式还是手动方式。卸载了更新,一切正常。