最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【解决】word VBA中,获取当前所选内容的标题序号/标题数字/heading level/heading number

VBA crifan 6405浏览 0评论

【解决】word VBA中,获取当前所选内容的标题序号/标题数字/heading level/heading number

【问题】

在word VBA中,已经选中某个标题的文字,想要获得当前所选标题的标题号,即heading level,比如某标题为
2.1     PAPRBY / RubyVerifoneDefaults
想要获得此标题的序号,即2.1

 【解决办法】

网上搜了很多,没找到多少有效的内容,最后,还是参考word vba的教程和这个帖子:

主题:如何用VBA取得Word文档中的标题前面的序号

http://www.javaeye.com/topic/605662

才搞懂的。我此处这样做,即可获得该标题的序号:

ActiveDocument.Select
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=5 ‘跳转到我这里需要的对应的标题
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend  ‘选中当前行
Selection.Bookmarks(“headinglevel“).Range.ListFormat.ListString ‘获得当前标题的序号,即2.1

其中,简单解释一下就是,上述中的:

HeadingLevel

是vba中预定义的标签,其具体解释如下:

(注: 可以去这里下载到的word vba的教程:

http://d.download.csdn.net/down/1924671/taozx11

预定义的书签
Microsoft Word 设置了大量的保留书签,并可自动更新。这些预定义书签和普通书签的使用方法完全相同,区别之处在于不必对其进行设定,并且在“查找和替换”对话框中的“定位”选项卡上未列出这些预定义书签(单击“编辑”菜单可显示该对话框)。

可使用具有 Bookmarks 属性的预定义书签。下列示例将名为“currpara”的书签设置到由预定义书签“Para.”标记的位置。
ActiveDocument.Bookmarks(“Para”).Copy “currpara”

下表对 Word 提供的预定义书签进行了描述。

书签说明
Sel当前所选内容或插入点。
PrevSel1最近编辑过的所选内容;定位于该书签相当于运行一次 GoBack 方法。
PrevSel2最近倒数第二次编辑的所选内容;定位于该书签相当于运行两次 GoBack 方法。
StartOfSel当前所选内容的起点。
EndOfSel当前所选内容的终点。
Line当前行或当前所选内容的首行。如果插入点在本段非最后一行的行尾,该书签包含完整的下一行。
Char当前字符,即没有选定内容时插入点后的字符,或所选内容的第一个字符。
Para当前段,即包含插入点的段,或在选定多个段落时所选段落中的第一段。请注意,如果插入点或所选内容位于文档的最后一段,则“Para”书签不包含段落标记。
Section当前节,并可能包含节尾的分隔符。当前节包含插入点或所选内容。如果所选内容包含多个节,则“Section”书签为所选内容中的第一节。
Doc除文档结尾的段落标记外,活动文档中的全部内容。
Page当前页,并可能包含页尾的分隔符。当前页包含插入点。如果当前所选内容包含多页,则“Page”书签为所选内容的第一页。注意,如果插入点或所选内容位于文档中的最后一页,则“Page”书签不包含文档结尾的段落标记。
StartOfDoc文档开头。
EndOfDoc文档结尾。
Cell表格中当前的单元格,即包含插入点的单元格。如果当前所选内容包含表中一个或多个单元格,则“Cell”书签为所选内容的第一个单元格。
Table当前表格,即包含插入点或所选内容的表格。如果所选内容包含多个表格,则“Table”书签为所选内容中完整的第一个表格(即使未选定完整的表格)。
HeadingLevel包含插入点或所选内容的标题,及其子标题和文字。如果当前所选内容为正文文字,则“HeadingLevel”书签包含上一个标题以及该标题包含的任何子标题和文字

所以上述Selection.Bookmarks(“headinglevel“)就是获得了当前所选文字的标题的level了,然后.Range.ListFormat.ListString ‘获得对应的标题的文本内容,即标题的序号了。

【提示】

试了下,Selection.Bookmarks(“headinglevel”).Range.ListFormat.ListValue,是获得即当前的list的value,标题序号的最后一位,比如上面的2.1中的最后一位是1,即第二章的第一节的1。

【参考】

1。主题:如何用VBA取得Word文档中的标题前面的序号

http://www.javaeye.com/topic/605662

2。 word vba的教程:

http://d.download.csdn.net/down/1924671/taozx11

转载请注明:在路上 » 【解决】word VBA中,获取当前所选内容的标题序号/标题数字/heading level/heading number

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
81 queries in 0.165 seconds, using 22.10MB memory