ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: 有情8

[求助] 批量替换层级

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-4-13 19:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
batmanbbs 发表于 2025-4-13 12:34
明白了,先将第三层的1.添加一个特殊符号(比如$1.),回头在处理一次(删除$)
PS: 只是举例,实际自己 ...

修改后的代码.zip (1.36 KB, 下载次数: 5)

老师,我照您说的方法修改后,运行报错
报错图片.jpg
请老师再帮忙看看,谢谢

TA的精华主题

TA的得分主题

发表于 2025-4-13 21:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 墨策 于 2025-4-13 21:27 编辑

测试了一下,你这find.text的表达式就没写对,你按F8,逐步运行,慢慢调试吧
image.png

这么写才对
image.png

TA的精华主题

TA的得分主题

发表于 2025-4-13 22:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
有情8 发表于 2025-4-13 19:22
老师,我照您说的方法修改后,运行报错

请老师再帮忙看看,谢谢

你把word的通配符和正则表达式搞混了,先把word的通配符学习好,用word能够正确查找替换,再代入到代码中

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-4-13 22:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
墨策 发表于 2025-4-13 21:09
测试了一下,你这find.text的表达式就没写对,你按F8,逐步运行,慢慢调试吧

谢谢老师,可以了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-4-13 22:30 | 显示全部楼层
batmanbbs 发表于 2025-4-13 22:27
你把word的通配符和正则表达式搞混了,先把word的通配符学习好,用word能够正确查找替换,再代入到代码中

好的,谢谢老师指教

TA的精华主题

TA的得分主题

发表于 2025-5-4 19:47 | 显示全部楼层
你的原文档中没有设置大纲级别,否则的话,通过大纲来转换方便些。

而且,楼主您确定您的序号,都是个位数吗?如果遇到1.1.2.15、1.3.10.8这样的序号,是不是还要修改?
再者,文档内容中,是否也会有类似1.3、1.5这样的数字在段落中?

所以,您得要落实好切实的需求才行。
看到您这个1级和4级序号是一样的,感觉您这个要实现起来,还是有些难。加油吧

TA的精华主题

TA的得分主题

发表于 2025-8-5 20:57 | 显示全部楼层
本帖最后由 weiyingde 于 2025-8-5 21:28 编辑

你这编号,逻辑混乱。比如:
eg1:

1.目的
明确临床用血管理委员会工作制度,使临床用血管理委员会规范、有序地开展工作。
2.范围
2.1 执行部门(科室)为医院临床用血管理委员会(包括委员会办公室)、医务部、输血科等。
2.2 执行人员主要包括临床用血管理委员会主任委员、副主任委员、委员及其他人员。
2.3 适用于临床用血管理委员会开展工作。
3.术语、缩略语及定义


一、目的
明确临床用血管理委员会工作制度,使临床用血管理委员会规范、有序地开展工作。
二、范围
(一)执行部门(科室)为医院临床用血管理委员会(包括委员会办公室)、医务部、输血科等。
(二) 执行人员主要包括临床用血管理委员会主任委员、副主任委员、委员及其他人员。
(三)适用于临床用血管理委员会开展工作。
三、术语、缩略语及定义



eg2:
6.4.1 医务部、护理部等职能部门负责组织开展各项计划工作。
6.4.2 各科室执行、落实各项工作要求。
6.4.3 临床用血管理委员会办公室负责汇总各项工作资料及相关统计,关注工作效果。
一、 医务部、护理部等职能部门负责组织开展各项计划工作。
二、 各科室执行、落实各项工作要求。
三、 临床用血管理委员会办公室负责汇总各项工作资料及相关统计,关注工作效果。
而且网页上的例子和附件原文本、模拟效果不一样。我按照你的网页上的说明写了代码,由于你表述不明,没有达到目标,你稍加修改即可。
另外,你若想缩减代码,查找和替换的表达式都用数组表示,然后再循环数组,可精简代码。
代码如下:

Sub 替换()
'工具-勾选-Microsoft Excel 14.0 Object Library
Dim Nub As String, asr As String, Orng As Range
With ActiveDocument.Content
     With .Find
          .ClearFormatting
          Do While .Execute("[1-9].", , , 1)
                   With .Parent
                        Set Orng = .Duplicate
                        Nub = Left(.Text, Len(.Text) - 1)
                        Nub = Val(Nub)
                        asr = Excel.Application.WorksheetFunction.Text(Nub, "[dbnum1]d")
                        .Text = asr & "、"
                        With Orng.Paragraphs(1).Range
                             .Font.Size = 16
                             .Font.NameFarEast = "黑体"
                        End With
                        .Collapse 0
                    End With
          Loop
     End With
     With .Find
          .ClearFormatting
          Do While .Execute("[1-9].1", , , 1)
                   With .Parent
                        Set Orng = .Duplicate
                        Nub = Split(.Text, ".")(1)
                        Nub = Val(Nub)
                        asr = Excel.Application.WorksheetFunction.Text(Nub, "[dbnum1]d")
                        .Text = "(" & asr & ")"
                        With Orng.Paragraphs(1).Range
                             .Font.Size = 16
                             .Font.NameFarEast = "方正楷体简体"
                        End With
                        .Collapse 0
                    End With
          Loop
      End With
      With .Find
           .ClearFormatting
           Do While .Execute("1.[1-9].[1-9]", , , 1)
                   With .Parent
                       Set Orng = .Duplicate
                       .Text = Split(.Text, ".")(2) & "."
                        With Orng.Paragraphs(1).Range
                             .Font.Size = 16
                             .Font.NameFarEast = "方正楷体简体"
                        End With
                        .Collapse 0
                    End With
           Loop
     End With
      With .Find
           .ClearFormatting
           Do While .Execute("1.1.[1-9].[1-9]", , , 1)
                   With .Parent
                       Set Orng = .Duplicate
                       .Text = "(" & Split(.Text, ".")(3) & ")"
                        With Orng.Paragraphs(1).Range
                             .Font.Size = 16
                             .Font.NameFarEast = "方正楷体简体"
                        End With
                        .Collapse 0
                    End With
           Loop
     End With
End With
End Sub



替换前.rar

25.86 KB, 下载次数: 0

TA的精华主题

TA的得分主题

发表于 2025-8-6 09:42 | 显示全部楼层
这是移植别人的程序文件?反正都要移植了为啥不一步到位?这种层级的序号就应该用多级列表。
而且你只需要搞一个文件的多级的格式,其他文件的多级格式直接导入,然后通过格式刷,这样制作出来的文件,包括文本的格式也一并限定了,以后需修改字体,缩进,增加、删减条目,都不会乱。
这种纯文本替换治标不治本,如果哪天领导不喜欢这种分级,要改其他类型的多级,又开始头痛了。

TA的精华主题

TA的得分主题

发表于 2025-8-6 13:15 来自手机 | 显示全部楼层
本帖最后由 weiyingde 于 2025-8-6 19:56 编辑

你说得对。本代码只为楼主求助说明中问题,稚嫩浅显,缺乏精练概括,不具备兼容通用特性,而且代码拖沓冗余,未曾细想(囿于功力,即便细想,目前也写不出精练通用的代码),所以粗糙稚嫩呆板,在所难免,这一点在相当长的时间内或许还存在。鉴于此,目前我浏览求助贴,目的是借此练练手,若能帮人解决眼前之急,也算是感谢几年来大家对本人帮助的一种“反哺”吧。所以,目前我对自己的要求是,只求程序能稳定运行并解决眼前之急,并不苛求精练通用,唯此而已。当然,追求高质量的精练通用、富有智慧的代码为所有程序员的梦想,但对于我这个起步晚水平低的纯碎的业余爱好者来说,这或许是遥不可及乃至永不可达的目标……但有所得,有所进,也就足够;若有朝一日,有所精进,则为意外之获。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-22 03:12 , Processed in 0.028182 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表