我需要处理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"/>
我需要更改的位是<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
仅BookMark
没有Text
属性
如何在方括号中访问那个小数据项?
答案 0 :(得分:2)
单词书签没有文字属性,但其范围属性有。
使用bkm.Range.Text =“Some Someter”
请注意,更改文本后,书签将从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
希望这有帮助。
答案 1 :(得分:0)
对此,我有一个解决方法,它并不完美,但不太复杂:使用书签代替ActiveX文本框,使用ActiveX标签代替交叉引用。然后为文本框进行更改事件(或LostFocus事件):LabelName.Caption = TextboxName.Text。格式化可以根据需要。可能需要使用“字体”>“位置”>“凸起”在控件外部对齐文本。这可能并非在所有情况下都可以接受,但通常可以接受。不需要更新字段。