尝试选择多个文档时如何解决运行时错误5479?

时间:2019-02-06 16:59:51

标签: vba ms-word

我试图编写一个宏来查找单词并将其添加为书签,并对多个文档,所有文档中的相同单词和相同书签执行此操作。但是,如果我选择多个文档,则会出现错误消息:

  

运行时错误5479
  您无法关闭Microsoft Word,因为已打开一个对话框。

我单击“确定”,切换到Word,然后关闭对话框。我正在Windows 7上运行的Word 2013中运行它。

我希望它可以打开每个Word文档,找到术语“ TBC”,添加书签UMR,然后保存并关闭文档,然后它将打开下一个文档并执行相同的操作,直到用尽文档。

实际上发生的是它更改了第一个,然后出现运行时错误。当我点击调试时突出显示的行是:

documents.Open dlgFile.SelectedItems (nDocx)

这是我的VBA:

Private Sub CommandButton1_Click()
  Dim myRange As Range
  Set dlgFile = Application.FileDialog(msoFileDialogFilePicker)

  With dlgFile
    dlgFile.AllowMultiSelect = True
    If .Show = -1 Then

      For nDocx = 1 To dlgFile.SelectedItems.Count

        Documents.Open dlgFile.SelectedItems(nDocx)
        MsgBox (ActiveDocument)
        Set objDocx = ActiveDocument

            Set myRange = ActiveDocument.Content
            With myRange.Find
                Do While .Execute(FindText:="TBC", MatchCase:=True)
                   ActiveDocument.Bookmarks.Add Name:="UMR", Range:=myRange
                   myRange.Select
                   objDocx.Save
                   objDocx.Close
                Loop
               End With
            Set objDocx = Nothing
       Next nDocx

Else
  MsgBox ("You need to select documents first!")
  Exit Sub

End If

  End With

  MsgBox ("You have added all the bookmarks.")


End Sub

1 个答案:

答案 0 :(得分:0)

您仍在搜索过程中尝试保存并关闭文档。看来,此行为就像查找对话框仍处于打开状态,并阻止文档正确关闭,从而阻止了下一个文档的加载。尝试将保存并关闭到While循环之外:

For nDocx = 1 To dlgFile.SelectedItems.Count

  Documents.Open dlgFile.SelectedItems(nDocx)
  MsgBox (ActiveDocument)
  Set objDocx = ActiveDocument

  Set myRange = ActiveDocument.Content
  With myRange.Find
    Do While .Execute(FindText:="TBC", MatchCase:=True)
      ActiveDocument.Bookmarks.Add Name:="UMR", Range:=myRange
      myRange.Select
    Loop
  End With
  objDocx.Save
  objDocx.Close
  Set objDocx = Nothing
Next nDocx

(这在Word 2016中有效,但是与您的原始代码相比,我的行为会有所不同-所有文档均保持打开状态,但没有运行时错误。这里没有2013年可以检查。)