我正在使用Excel VBA填充Word中的书签。我还想更新文档页脚中的书签。只要书签不在页脚中,我的代码就可以正常工作。但是,当应该填充页脚中的书签时,我会得到Run-time error '5678' Word cannot find the requested bookmark.
。
我尝试在Word中录制代码,它提供了以下内容:
Selection.Goto What:=wdGoToBookmark, Name:=Bookmarkname
由于我在Excel工作,因此我将此代码更改为wordobject = CreateObject("Word.Application")
:
wordobject.Selection.Goto What:=wdGoToBookmark, Name:=Bookmarkname
如上所述,当书签在“普通”文本中时,此代码可以正常工作。只要书签位于页脚中,就会抛出错误。
如何在Word文档的页脚中填充书签?
答案 0 :(得分:1)
如果您手动选择所有页脚并运行它,您的代码可能会有效。
但是,您可能不喜欢这样的解决方案。通常,在VBA中使用Selection
迟早会导致问题。因此,帮助你未来的自我,并考虑避免它。 How to avoid using Select in Excel VBA
这是如何更改Word中任何书签的文本,包括页脚和页眉上的书签(仅适用于Word ):
Option Explicit
Sub TestMe()
Dim bmk As Bookmark
For Each bmk In ThisDocument.Bookmarks
If bmk.Name = "wdGoToBookmark" Then
bmk.Range.Text = "Something new here"
End If
Next bmk
End Sub
通常,要查看即时窗口中书签的信息,标准循环可以提供帮助(仅适用于Word ):
Sub TestMe()
Dim bmk As Bookmark
For Each bmk In ThisDocument.Bookmarks
Debug.Print bmk.Name
Debug.Print bmk.Range.Text
Next bmk
End Sub
如果要使从Excel工作,则无法在Excel中将变量定义为书签。但是这样的事情会起作用:
Public Sub TestMe()
Dim wordObj As Object
Dim wordObjD As Object
Dim bmk As Object
Dim countBmks As Long
Set wordObj = CreateObject("Word.Application")
Set wordObjD = wordObj.documents.Add("K:\yourPath\yourFile.docx")
wordObj.Visible = True
'Check whether a bookmark exists (FYI):
Debug.Print wordObjD.bookmarks.exists("someBookmark")
For Each bmk In wordObjD.Bookmarks
Debug.Print bmk.Name
Debug.Print bmk.Range.Text
If bmk.Name = "TheNameOfTheBookmark" Then
bmk.Range.Text = "SomeText"
End If
Next bmk
End Sub