分享

Word VBA技术:处理书签

 hercules028 2022-11-25 发布于四川
excelperfect

标签:Word VBA
Word中,有两类书签:
1.“占位符”书签(Placeholder Bookmarks),即在文档中单击某处,然后插入的书签。
2.“封闭”书签(Enclosing Bookmarks),即选择某文本后插入的书签。
有几种将文本插入到书签处的方法。使用的方法取决于后面是否要从书签处获取文本。
在书签处插入文本最常见的代码示例如下:
ActiveDocument.Bookmarks('完美Excel').Range.Text = 'excelperfect'
即,在书签“完美Excel”处插入文本“excelperfect”。
在这种情形下,如果是“占位符”书签,则会在书签处插入文本;如果是“封闭”书签,则在书签位置插入文本的同时会删除书签。
代码:
ActiveDocument.Bookmarks('完美Excel').Range.InsertAfter '公众号'ActiveDocument.Bookmarks('完美Excel').Range.InsertBefore '微信'
在这两种情形下,如果是“占位符”书签,则会在书签后插入文本;如果是“封闭”书签,则会在书签位置之后或之前插入文本。
要获取书签处的文本,使用代码:
strBookmark = ActiveDocument.Bookmarks('完美Excel').Range.Text
注意,这种情形下的书签应该是“封闭”书签。
如果想将文本插入“占位符”书签(使其成为“封闭”书签),以便以后可以从中获取文本,该怎么办?如果书签已经是“封闭”书签,想替换其中的文本,该怎么办?VBA中没有可以实现这种要求的命令,需要做的是用插入的文本替换书签(此时书签会被删除),然后再围绕插入的文本重新创建书签。示例代码如下:
Dim BookmarksRange As RangeSet BookmarksRange = ActiveDocument.Bookmarks('完美Excel').RangeBookmarksRange.Text = '666'ActiveDocument.Bookmarks.Add Name:='完美Excel', Range:=BookmarksRange
如果文档中有许多书签需要更新,那么上述代码会反复重复,因此最好的方案是将其作为带有参数的子程序供主程序调用,代码如下所示:
Sub UpdateBookmark(BookmarkToUpdate As String, TextToUse As String) Dim BookmarksRange As Range Set BookmarksRange = ActiveDocument.Bookmarks(BookmarkToUpdate).Range BookmarksRange.Text = TextToUse ActiveDocument.Bookmarks.Add BookmarkToUpdate, BookmarksRangeEnd Sub
调用代码如下:
UpdateBookmark “书签名”, ”要插入的文本”

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多