遇到一个小需求,需要提取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
分享到:
相关推荐
在 Microsoft Word 97 中,Visual Basic for Applications(VBA)的应用极大地增添了 Word 97 的功能,使得用户可以更方便地处理文档。下面将介绍如何使用 VBA 编程自动处理 Word 表格的几则例子。 创建表格,插入...
这些只是Word VBA中的一部分语句,实际编程时,开发者可以根据需要使用更多的属性、方法和事件来控制Word文档的各个方面,如创建、编辑、格式化文本,处理表格、图片,以及执行复杂的自动化任务。掌握这些基本语句将...
完成代码编辑后,点击Visual Basic编辑器的“保存”按钮,选择保存到“Normal”模板,这样宏就会被永久保存,方便在任何Word文档中使用。然后关闭VBA编辑器窗口,返回到Word主界面。 接下来,打开你需要处理的Word...
通过这些VBA语句,开发者可以深入控制Word文档的各个方面,实现自动化处理、数据提取、格式调整等多种功能,极大地提高了工作效率。学习并熟练掌握这些语句,将使你在处理大量Word文档时游刃有余。
以上步骤可以帮助你在Word中高效地管理和格式化图表题注,实现自动编号和格式调整,提升文档的专业性和一致性。记得在使用VBA宏时,确保与你的Word版本兼容,因为不同的Word版本可能需要微调代码。
VBA是嵌入在Word中的编程环境,可以创建自定义脚本来实现复杂的数据提取和处理任务。 在互联网时代,Word文档还可以通过电子邮件、云存储服务(如OneDrive)等方式进行分享和协作。这使得远程团队能够同时编辑和...
在处理Word文档时,我们经常会遇到需要将文档中的自动编号转换成纯数字文本的情况。例如,当我们需要对这些编号进行进一步编辑或用于其他用途时,原有的自动编号格式可能会带来不便。本文将详细介绍如何通过简单的宏...
Word邮件合并后不能导出单个的文档(分页的),这个VBA插件可以帮助你拆分单个Word文档,使用时需要修改部分源码,建议有编程基础的同行们使用,使用前先把信函合并至最后一步(可打印状态),序号调至第一个,然后...
在Word文档中撰写学术论文或研究报告时,正确地引用参考文献是至关重要的。手动添加和更新文献编号无疑是一项繁琐的任务,容易出错且耗时。然而,通过使用宏(Macro)编程,我们可以让Word自动处理这项工作,提高...
AddIn对象是AddIns集合的一个元素,这个集合包含了所有在Word中可用的加载项,无论它们当前是否已经加载。在VBA(Visual Basic for Applications)环境下,我们可以直接操作AddIn对象来控制加载项的行为。例如,可以...
标题“PictureToWord”指的是一个使用Excel VBA(Visual Basic for Applications)开发的小型应用程序,其主要功能是处理图片文件并生成Word文档。这个程序具备批量重命名文件和将图片及对应名称插入Word文档的能力...
- 添加题注“图”,位于图下方,居中,编号为“章序号-图在章中的序号”。 - 对“如下图所示”使用交叉引用,改为“如图X-Y所示”。 5. **表的题注和交叉引用**: - 表题注位于表上方,居中,编号方式同图。 -...
通过以上对`Application`对象关键属性的详细介绍,我们可以看出`Application`对象在Word VBA编程中的重要作用。这些属性不仅可以帮助开发者获取有关Word应用程序及其运行环境的详细信息,还可以用于实现各种高级功能...
- **解析**: Word 软件中,当前正在编辑的文档名会显示在窗口的标题栏上,以便用户快速识别。 #### 21. 函数参数传递 - **知识点**: 本题考查 C 语言中函数参数传递的特点。 - **解析**: 在 C 语言中,数组名作为...
4. 项目符号和编号:在Word中,使用格式菜单项中的“项目符号”和“编号”命令,可以快速为文档列表添加视觉提示,如圆点、数字等。 5. CSS布局:CSS(层叠样式表)主要用于构建网页布局,其中`<div>`标签是最常用...
19. 在Word中,删除选定表格的一列后,接下来显示的记录序号是10到14。正确答案是D。 20. 所有类都能识别的最小事件集包括Init、Destroy和Error事件。正确答案是A。 21. 软件调试技术中,回溯法是一种常用的方法。...
10. **Word新建文档快捷键**:在Word中,新建文档的快捷键是Ctrl+N,而不是Ctrl+O,Ctrl+O通常用于打开已有的文档。正确答案:错误。 11. **图片框的Move方法**:在VB中,图片框的Move方法确实可以同时改变图片框的...
3. 序号逻辑:在数据库操作中,`APPEND BLANK`命令用于在当前记录之后增加一条空记录。如果当前记录号是5,那么新增的空记录号将是6,但题目中给出的答案是9,可能是因为在增加空记录后,记录号会跳过当前记录号直接...