我需要处理 Word 文档并更改书签(的文本)。
我将 Word 文档导出为平面 xml 格式,以帮助建立文档的结构 - 这是一个片段
<w:bookmarkStart w:id="0" w:name="CustomerName"/>
<w:r w:rsidRPr="001E4487">
<w:rPr>
<w:rFonts w:ascii="MyTypeRegular"
w:hAnsi="MyTypeRegular"
w:cs="MyType V2 Regular"/>
<w:szCs w:val="22"/>
</w:rPr>
<w:t>[CustomerName]</w:t>
</w:r>
<w:bookmarkEnd w:id="0"/>
Run Code Online (Sandbox Code Playgroud)
我需要改变的部分<w:t>[CustomerName]</w:t>应该变成,例如<w:t>Some Punter</w:t>
所以在我的VBA中我希望能够做这样的事情......
Dim bkm As Bookmark
For Each bkm In ActiveDocument.Bookmarks
bkm.Text = "Some Punter"
Next bkm
Run Code Online (Sandbox Code Playgroud)
只是BookMark没有Text财产
如何访问方括号中的小数据项?
单词书签没有文本属性,但其范围属性有。
使用 bkm.Range.Text = "Some Punter"
请注意,一旦更改文本,书签将从 Word 文档中删除。为了保留书签,您需要执行以下操作:
Dim bkm As Bookmark
Dim bkmName As String
Dim bkmRng As Range
Dim NewText As String
NewText = "Some Punter"
For Each bkm In ActiveDocument.Bookmarks
Set bkmRng = bkm.Range
bkmName = bkm.Name
bkm.Range.Text = NewText
bkmRng.End = bkmRng.Start + Len(NewText)
Bookmarks.Add(Name:=bkmName, Range:=bkmRng)
Next bkm
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。