【发布时间】:2020-02-19 15:12:45
【问题描述】:
在 Word docx 中:我正在尝试为每个句子添加书签。例如,第一句是书签“bmarkpg01”,第二句是书签“bmarkpg01ln01col01”。我的代码只在第一句话中添加了一个书签,并且不会循环到文档末尾。
我尝试了一个 for each 循环来尝试每个发送的句子和书签中的每个 bmark。
Sub tryAddBmarkatSentence()
Dim myRange As Range
Set myRange = ActiveDocument.Content
Dim bmark As Bookmark
Application.ScreenUpdating = False
For Each MySent In ActiveDocument.Sentences
For Each bmark In ActiveDocument.Bookmarks
ActiveDocument.Bookmarks.Add Name:="pmark" & bmark.Range.Information(wdActiveEndAdjustedPageNumber), Range:=myRange 'bmark name would have added info of page, line, and col number. here as example is pagenumber.
Next
Next
End Sub
预期结果:在整个文档中,每个句子都有对应的书签和书签名称(“bmarkpg01ln01col01”、“bmarkpg01ln02col10”等)
实际结果:文档的第一句只添加了一个书签。
【问题讨论】:
-
嗨。你有一个双每个,所以,如果一个句子和一个书签存在,它只会添加一个书签。你必须只获取句子,然后添加书签
-
谢谢,路易斯。那么如何更新上面的代码呢?
-
您应该知道,Word 并不能真正理解句子,因此您得到的结果可能不是您所期望的。段落是,句子没有。
-
好点。没有考虑句子的名称。可能会尝试为每个段落创建一个书签,然后尝试另一种策略。受托人的目标是在不超载系统资源的情况下尽可能细化地找到重叠文本
-
Blasted android 自动更正。 *句子问题。 **终极目标
标签: vba for-loop ms-word bookmarks