填充书签 Word 页脚
Fill bookmarks Word footer
我正在使用 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
如上所述,当书签位于 'normal' 文本中时,此代码可以正常工作。只要书签位于页脚中,它就会抛出错误。
如何在 Word 文档的页脚中填充书签?
如果您手动 select 所有页脚并 运行 它,您的代码可能会起作用。
但是,您可能不喜欢这样的解决方案。一般来说,在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
一般来说,要立即查看书签的信息 window,标准循环会有所帮助(仅适用于 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
我正在使用 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
如上所述,当书签位于 'normal' 文本中时,此代码可以正常工作。只要书签位于页脚中,它就会抛出错误。
如何在 Word 文档的页脚中填充书签?
如果您手动 select 所有页脚并 运行 它,您的代码可能会起作用。
但是,您可能不喜欢这样的解决方案。一般来说,在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
一般来说,要立即查看书签的信息 window,标准循环会有所帮助(仅适用于 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