遇到一个小需求,需要提取Word文档标题前面的序号,例如:
/**************举例文档*******************/
1. 一级标题1 /*一级标题的编号+标题内容,编号可能是系统内置编号样式,也可能是用户
*自定义的样式*/
段落2 /*文档内容段落2,标题1占用一个段落,此处为2*/
段落3 /*文档内容段落3*/
1.1 二级标题1.1 /*多级符号+二级标题,编号样式为内置或用户自定义样式*/
段落5
段落6
1.2 二级标题1.2
段落8
2. 一级标题2
段落10
2.1 二级标题2.1
2.1.1 三级标题2.1.1
段落13
/**************举例文档结束**************/
需要提取到:
1
1.1
1.2
2
2.1
2.1.1
这些序号,搜索+研究了一下,找到了一方法,顺手记录一下,免得再次摔跤。
Sub test()
Dim myRange As Range
Dim num as String, title as String
'Set ps = Selection.Bookmarks("\headinglevel").Range.Paragraphs
Set ps = ActiveDocument.Bookmarks("\headinglevel").Range.Paragraphs
For Each p In ps
Set myRange = p.Range
num = myRange.ListFormat.ListString
title = myRange.Text
MsgBox "编号:" & num & vbCrLf & "标题内容:" & title
Next p
'Set myRange = Selection.Bookmarks("\headinglevel").Range.Paragraphs(1).Range
'MsgBox "编号:" & myRange.ListFormat.ListString & vbCrLf & "标题内容:" & myRange.Text
End Sub
另外附上一段把标题(Heading)序号取出并附加在标题内容后面的代码:
Sub ReplaceHeadingContent()
Dim myRange As Word.Range
Dim num As String, content As String
'取得所有书签
Set ps = ActiveDocument.Bookmarks("\headinglevel").Range.Paragraphs
'对书签中每一个段落进行处理
For Each p In ps
Set myRange = p.Range
With myRange
'把Range结束范围往前移一个字符,目的是为了不包括换行符
.MoveEnd Unit:=wdWord, Count:=-1
'取出段落序号
num = Trim(.ListFormat.ListString)
'取出Heading的内容
content = Trim(.Text)
'如果段落序号不为空,则把段落序号取出附加的标题内容后面
If Trim(num) <> "" Then
If num = "1.1.1.1.1." Or num = "1.1.1.1.1" Then
MsgBox "到目标点了。"
End If
If Right(num, 1) = "." Then num = Left(num, Len(num) - 1) '不需段落序号最后面的“.”
.Text = content & "<" & num & ">"
End If
'MsgBox "编号:" & num & vbCrLf & "标题内容:" & content
End With
Next p
End Sub
分享到:
相关推荐
VBA在Word文档中的应用.pdf word文档中的VBA
利用VBA语言将同一文件夹中的多个Word文档合并到一个新的Word中,使用简单快捷。
利用VBA合并多个word文档到一个文档中,操作说明在文档中
在EXCEL中用VBA创建WORD文档表格.docx
VBA word 调整文档格式 宏 模块 截取自别人的代码,请需要者参考
把 合并文件.docm和需要合并的word文档(例如:测试用的文档1.docx、测试用的文档1.docx)放入一个文件夹里面 调用宏方法 打开开发工具-宏 功能介绍 可以看到两个宏名称 1、writeFileNameList 把目录下的文档名称...
使用VBA提取文件夹内所有word文档中的表格数据
无论涉及何种自定义解决方案,用 Visual Basic for Applications (VBA) 处理 Word 文档的基本方法都是一样的。在本栏目中,我将概括地介绍如何使用 Word,并提供一些关于如何运用 Range 对象处理 Word 文档内容的...
然后用此功能直接选择文件,就可以批量为Word文档添加水印了。 无论下面有多少层文件夹,都可以将每层文件夹里的docx和doc文件全部添加上想要的水印。 省掉重复劳动,就是节约时间,珍惜生命。
Word文档VBA入门到精通(200页).zip
用VBA在WORD中绘制图形及函数图象.pdf
excel通过vba 批量读取word内表格的内容并写入excel
VBA 技术文档 压缩版 VBA基础内容 供参考学习
VBA提取文件夹内所有word文档中的表格数据。
Word 2013 VBA 帮助文档
【免费下载】ExcelVBA和WordVBA教程.rar
vba在word文档中插入文字并设置相应的文字属性.docx
一个有趣的改变Word文档每个字的宏,适合小朋友玩。修改后可以同时改变每个字的字体,字号。很好玩。
Word2003中的VBA功能可以使Word文档具有交互功能,在学校教学中,教师就可以利用Word VBA功能在Word文档中制作具有交互功能的选择题
VBA代码把一个多页的word拆分成任意页数的多个文档,可直接粘贴运行。