|
楼主 |
发表于 2024-12-15 18:03
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 bylandi 于 2024-12-15 19:53 编辑
用短文章测试没有问题
但是 用于长篇文章,发现存在以下2个问题
1、部分章节的序号有乱,本来是第3级的,却匹配成了2级的样式
2、部分序号没有删除完整,后面还存在多余数字。
还有个问题,使用Information(12) 来跳过表格,会造成运行十分慢,有否别的方案呢?
以下是调整后的代码(您原代码的大纲级别与样式级别差了一个等级)
- Sub A自动样式()
- Dim 段落 As Paragraph, 正 As Object, i As Byte, 字符 As Long, 范围 As Range
- Set 正 = CreateObject("vbscript.regexp")
- arr = Array("^\d+\.\d+[^\.]", "^\d+\.\d+\.\d+[^\.]", "^\d+\.\d+\.\d+\.\d+[^\.]", "^\d+\.\d+\.\d+\.\d+\.\d+[^\.]")
- brr = Array(wdStyleHeading2, wdStyleHeading3, wdStyleHeading4, wdStyleHeading5)
- For i = LBound(arr) To UBound(arr)
- With 正
- .Pattern = arr(i)
- .Global = True
- .IgnoreCase = False
- .MultiLine = True
- For Each 段落 In ActiveDocument.Paragraphs
- If .Test(段落.Range.Text) Then
- 'If 段落.Range.Information(12) Then GoTo 1
- 段落.Range.ParagraphFormat.Style = brr(i)
- '=======删除原来的编号=======
- Set match = .Execute(段落.Range.Text)(0)
- 字符 = Len(match)
- Set 范围 = 段落.Range
- 范围.SetRange 范围.Start, 范围.Start + 字符 - 1
- 范围.Delete
- End If
- '1:
- Next
- End With
- Next
- End Sub
复制代码
|
|