`

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

VBA 
阅读更多

遇到一个小需求,需要提取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

 

 

分享到:
评论
1 楼 withthewind 2018-09-20  
终于找到一个可以用的了。。。

相关推荐

    巧用VBA自动处理Word表格

    在 Microsoft Word 97 中,Visual Basic for Applications(VBA)的应用极大地增添了 Word 97 的功能,使得用户可以更方便地处理文档。下面将介绍如何使用 VBA 编程自动处理 Word 表格的几则例子。 创建表格,插入...

    Word VBA 常用语句100句

    这些只是Word VBA中的一部分语句,实际编程时,开发者可以根据需要使用更多的属性、方法和事件来控制Word文档的各个方面,如创建、编辑、格式化文本,处理表格、图片,以及执行复杂的自动化任务。掌握这些基本语句将...

    清除格式保留序号

    完成代码编辑后,点击Visual Basic编辑器的“保存”按钮,选择保存到“Normal”模板,这样宏就会被永久保存,方便在任何Word文档中使用。然后关闭VBA编辑器窗口,返回到Word主界面。 接下来,打开你需要处理的Word...

    word vba常用语句100句.doc

    通过这些VBA语句,开发者可以深入控制Word文档的各个方面,实现自动化处理、数据提取、格式调整等多种功能,极大地提高了工作效率。学习并熟练掌握这些语句,将使你在处理大量Word文档时游刃有余。

    与题注相关的排版问题-实现word中图表自动编号

    以上步骤可以帮助你在Word中高效地管理和格式化图表题注,实现自动编号和格式调整,提升文档的专业性和一致性。记得在使用VBA宏时,确保与你的Word版本兼容,因为不同的Word版本可能需要微调代码。

    从Word中提取文本.doc

    VBA是嵌入在Word中的编程环境,可以创建自定义脚本来实现复杂的数据提取和处理任务。 在互联网时代,Word文档还可以通过电子邮件、云存储服务(如OneDrive)等方式进行分享和协作。这使得远程团队能够同时编辑和...

    word自动编号转纯数字.txt

    在处理Word文档时,我们经常会遇到需要将文档中的自动编号转换成纯数字文本的情况。例如,当我们需要对这些编号进行进一步编辑或用于其他用途时,原有的自动编号格式可能会带来不便。本文将详细介绍如何通过简单的宏...

    Word邮件合并后拆分单文档工具

    Word邮件合并后不能导出单个的文档(分页的),这个VBA插件可以帮助你拆分单个Word文档,使用时需要修改部分源码,建议有编程基础的同行们使用,使用前先把信函合并至最后一步(可打印状态),序号调至第一个,然后...

    word写文章自动添加参考文献编号,并添加到文章最后

    在Word文档中撰写学术论文或研究报告时,正确地引用参考文献是至关重要的。手动添加和更新文献编号无疑是一项繁琐的任务,容易出错且耗时。然而,通过使用宏(Macro)编程,我们可以让Word自动处理这项工作,提高...

    AddIn加载项在word中的概念及使用.docx

    AddIn对象是AddIns集合的一个元素,这个集合包含了所有在Word中可用的加载项,无论它们当前是否已经加载。在VBA(Visual Basic for Applications)环境下,我们可以直接操作AddIn对象来控制加载项的行为。例如,可以...

    PictureToWord

    标题“PictureToWord”指的是一个使用Excel VBA(Visual Basic for Applications)开发的小型应用程序,其主要功能是处理图片文件并生成Word文档。这个程序具备批量重命名文件和将图片及对应名称插入Word文档的能力...

    计算机二级word练习4.pdf

    - 添加题注“图”,位于图下方,居中,编号为“章序号-图在章中的序号”。 - 对“如下图所示”使用交叉引用,改为“如图X-Y所示”。 5. **表的题注和交叉引用**: - 表题注位于表上方,居中,编号方式同图。 -...

    WORD之Application对象介绍.docx

    通过以上对`Application`对象关键属性的详细介绍,我们可以看出`Application`对象在Word VBA编程中的重要作用。这些属性不仅可以帮助开发者获取有关Word应用程序及其运行环境的详细信息,还可以用于实现各种高级功能...

    2021-2022计算机二级等级考试试题及答案No.18422.docx

    - **解析**: Word 软件中,当前正在编辑的文档名会显示在窗口的标题栏上,以便用户快速识别。 #### 21. 函数参数传递 - **知识点**: 本题考查 C 语言中函数参数传递的特点。 - **解析**: 在 C 语言中,数组名作为...

    2021-2022计算机二级等级考试试题及答案No.381.docx

    4. 项目符号和编号:在Word中,使用格式菜单项中的“项目符号”和“编号”命令,可以快速为文档列表添加视觉提示,如圆点、数字等。 5. CSS布局:CSS(层叠样式表)主要用于构建网页布局,其中`&lt;div&gt;`标签是最常用...

    2021-2022计算机二级等级考试试题及答案No.12172.docx

    19. 在Word中,删除选定表格的一列后,接下来显示的记录序号是10到14。正确答案是D。 20. 所有类都能识别的最小事件集包括Init、Destroy和Error事件。正确答案是A。 21. 软件调试技术中,回溯法是一种常用的方法。...

    2021-2022计算机二级等级考试试题及答案No.14717.docx

    10. **Word新建文档快捷键**:在Word中,新建文档的快捷键是Ctrl+N,而不是Ctrl+O,Ctrl+O通常用于打开已有的文档。正确答案:错误。 11. **图片框的Move方法**:在VB中,图片框的Move方法确实可以同时改变图片框的...

    2021-2022计算机二级等级考试试题及答案No.9407.docx

    3. 序号逻辑:在数据库操作中,`APPEND BLANK`命令用于在当前记录之后增加一条空记录。如果当前记录号是5,那么新增的空记录号将是6,但题目中给出的答案是9,可能是因为在增加空记录后,记录号会跳过当前记录号直接...

Global site tag (gtag.js) - Google Analytics