首页 > 其他分享 >【VBA】如何在WORD文件的每个自动序号后修改字符

【VBA】如何在WORD文件的每个自动序号后修改字符

时间:2023-06-24 17:01:07浏览次数:35  
标签:regex Dim VBA listFormat WORD para 序号 End

要想将文章中所有的:

1)实例文字

替换为

1)#示例文字

可以使用VBA来进行操作。

  1. 保存一份源文档的副本。VBA的修改是难以撤销的。也可以先复制一部分出来到新文档进行试验。
  2. 打开 Word 文档。

  3. 按下 "Alt" + "F11" 打开 Visual Basic for Applications (VBA) 编辑器。

  4. 在 VBA 编辑器中,点击"插入(Insert)",然后选择"模块(Module)"。

  5. 添加对 Microsoft VBScript Regular Expressions 的引用。在 VBA 编辑器中,选择 "工具" 菜单,然后选择 "引用"。在弹出的对话框中找到并勾选 "Microsoft VBScript Regular Expressions",点击 "确定"。(重要!没有这一步可能运行正则表达式会出错)
  6. 在新建的模块中粘贴以下宏代码:

Sub IdentifyNumberedParagraphs()
    Dim doc As Document
    Set doc = ActiveDocument
    
    Dim para As Paragraph
    Dim listFormat As ListFormat
    Dim isNumbered As Boolean
    
    ' 遍历文档中的每个段落
    For Each para In doc.Paragraphs
        ' 获取段落的ListFormat对象
        Set listFormat = para.Range.ListFormat
        
        ' 判断段落是否为自动编号
        isNumbered = False
        If listFormat.ListType <> WdListType.wdListNoNumbering And Not listFormat.ListTemplate Is Nothing Then
            isNumbered = True
        End If
        
        ' 判断编号格式是否为 "1)"
        If isNumbered Then
            Dim numberPattern As String
            numberPattern = "^\d+\)"
            Dim regex As Object
            Set regex = CreateObject("VBScript.RegExp")
            
            ' 设置正则表达式参数
            regex.Pattern = numberPattern
            regex.IgnoreCase = True
            
            ' 进行匹配
            Dim match As Object
            Set match = regex.Execute(listFormat.ListString)
            
            ' 输出结果
            If match.Count > 0 Then
                para.Range.InsertBefore "#"
            End If

        End If
    Next para
End Sub
  1. 关闭 VBA 编辑器。

  2. 运行宏:按下 "Alt" + "F8" 打开宏对话框,在列表中选择 "AddTextAfterHeadings" 宏,然后点击 "运行(Run)" 按钮。

标签:regex,Dim,VBA,listFormat,WORD,para,序号,End
From: https://www.cnblogs.com/nntzhc/p/17501317.html

相关文章

  • word的常用设置
    1、word去除首字母大写2、word取消自动编排符合、缩进3、word去回车符4、word去掉双下划线5、快速调用出导航6、快速调整阅读模式......
  • VBA对象:Workbooks、Worksheets、Range1
     Workbooks打开工作簿使用VBA可以打开指定位置的目标工作簿,使用Workbooks集合的Open方法。SubWB()'打开工作簿,需要指定完整的路径、名称、后缀名Workbooks.Open"D:\Files\工作簿1.xlsx"EndSub新建工作簿使用Workbooks集合的Add方法创建新的工作簿:S......
  • python-docx处理Word
     用到的库?123456fromdocximportDocument(文档读写)fromdocx.sharedimportPt,Cm,Inches(字体大小,不一定全用到)fromdocx.oxml.nsimportqn(设置字体格式,分栏等用到)fromdocx.sharedimportRGBColor(设置字体颜色)fromdocx.enum.textimportWD_ALIG......
  • VBA中运算符
    VBA中的运算符可以分为以下6类:赋值运算符算数运算符比较运算符逻辑运算符连接运算符其他运算符......
  • VBA中数据自动类型转换
    浮点型数值→赋值给整数型数值浮点类型数值赋值给整数类型变量时,自动转换为整数类型,并按四舍五入规则取整(x.5向下取整)。DimiAsIntegeri=1.23'i->1i=0.9'i->1i=1.5'i->1 字符串表示的纯数字→数值使用文本表示的纯数字,表达式和赋值语句中自动转换为数字......
  • WordPress开启Nginx FastCGI Cache缓存
    本文转载自:WordPress开启NginxFastCGICache缓存更多内容请访问钻芒博客:https://www.zuanmang.netWordPress速度优化始终是一个没有尽头的课题,最近逛几个技术大佬的站点发现都用了Nginx缓存,遂搜集资料展开部署。教程分享如下Ps.由于钻芒博客是通过Nginx反响代理到本地内网访问......
  • WordPress开启Nginx Redis Cache缓存 解决FastCGI Cache内网穿透兼容问题
    本文转载自:WordPress开启NginxRedisCache缓存解决FastCGICache内网穿透兼容问题更多内容请访问钻芒博客:https://www.zuanmang.net上回说到,Wordpress配合NginxFastCGICache缓存可以极大提升速度体验,但钻芒博客由于是通过Nginx反向代理所以使用起来纯在一定兼容问题,比如缓......
  • Java Web项目中使用Freemarker生成Word文档
    Web项目中生成Word文档的操作屡见不鲜,基于Java的解决方案也是很多的,包括使用Jacob、ApachePOI、Java2Word、iText等各种方式,其实在从Office2003开始,就可以将Office文档转换成XML文件,这样只要将需要填入的内容放上${}占位符,就可以使用像Freemarker这样的模板引擎将出现占位符的地......
  • MySQL给查询出的数据增加序号
    前言我们都知道,在Oracle中,可以使用ROW_NUMBER()OVER()函数给查询的结果加序号。不了解请点击:ROW_NUMBER()OVER()MySQL几乎模拟了Oracle,SQLServer等商业数据库的大部分功能,函数。MySQL8.0版本以后才会有这个函数,之前版本是没有的MySQL给查出的数据加序号的方法一种......
  • 探索WordPress:开源内容管理系统的强大功能和灵活性
    WordPress是一款广泛使用的开源内容管理系统(CMS),它提供了许多强大的功能和灵活性,使其成为建立和管理网站的首选工具。在本篇博客中,我们将深入探讨WordPress的一些关键功能和技术,以及如何最大限度地发挥其潜力。1.简单易用的界面和内容管理WordPress提供了一个直观且用户友好的管......