删除Word字段VBA在Word 2013中不起作用,适用于Word 2010

时间:2014-04-17 12:58:32

标签: excel vba excel-vba ms-word word-vba

我有一个VBA宏,它从Excel运行以从Word文档导入一些信息。在开始解析之前,我想摆脱目录和其他领域。下面的代码(剥离到最小)适用于Office 2010但不适用于Office 2013.我得到“对象字段中的方法删除失败”错误消息,但我不明白为什么。

感谢您的任何提示!

Sub ImportBOD()

    Dim wdFileName As Variant
    Dim WordApp As Object

    Dim wdDoc As Word.Document

    Dim fld As Word.Field


     wdFileName = Application.GetOpenFilename("Word files (*.docx),*.docx", ,"Choose the Word document")

    If wdFileName = False Then Exit Sub '(user cancelled import file browser)

    Set WordApp = CreateObject("Word.Application")

    Set wdDoc = WordApp.Documents.Open(wdFileName, ReadOnly:=True)

    'Get rid of table of contents and other fields 
    For Each fld In wdDoc.ActiveWindow.Document.Fields
        fld.Delete
    Next


    wdDoc.Close SaveChanges:=wdDoNotSaveChanges

End Sub

1 个答案:

答案 0 :(得分:1)

必须尝试通过索引删除它们吗?

For i = 1 to wdDoc.ActiveWindow.Document.Fields.Count
    wdDoc.ActiveWindow.Document.Fields.Item(i).Delete
Next i

我发现有时在循环中删除活动对象在这种情况下fld并不总是成功,并且VBA错误消息不是特定的。此外,似乎SEQ(序列字段)和XE(IndexEntry字段)不能Unlink,这表明Delete可能也会失败,尽管微软没有指明这种情况。

修改

根据注释循环到最后一个

For i = wdDoc.ActiveWindow.Document.Fields.Count To 1 Step -1
    wdDoc.ActiveWindow.Document.Fields.Item(i).Delete
Next i