我有一个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
答案 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