ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 644|回复: 2

[求助] 手工提取目录,如何反向遍历段落在标题后插入页码并提取后插入文末

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-2-6 21:40 | 显示全部楼层 |阅读模式
不使用标题,想用手工提取目录。 多篇文章的汇编大标题统一为二号黑体,想通过遍历段落的方法在标题后插入制表符和页码,然后提取内容到文章后手工制作目录。

(以下代码在WPS2016中测试 可以在标题下一行插入制表符和当前光标所在页码。不能插入标题所在码页。WORD2007中假死)

Sub 遍历段落插入页码()

     Dim oP As Paragraph
     Dim P
     P = Selection.Information(wdActiveEndPageNumber)
     For Each oP In ActiveDocument.Paragraphs
         If oP.Range.Font.Name = "黑体" And Len(oP.Range) > 1 Then oP.Range.InsertAfter vbTab & P & vbCr
     Next
End Sub

还有如何倒着遍历段落还望指点。

汇编.zip

23.03 KB, 下载次数: 147

TA的精华主题

TA的得分主题

发表于 2021-2-7 13:44 | 显示全部楼层
请 楼主 将最后面提取目录后的第 2 页缩小字符间距,以使制表符充满一行。
  1. Sub aaaa_LoopPara_GetTitle()
  2.     Dim j As Long, s As String, n&
  3.     With ActiveDocument
  4.         '倒序循环遍历所有段落
  5.         For j = .Paragraphs.Count To 1 Step -1
  6.             With .Paragraphs(j).Range
  7.                 .Font.ColorIndex = wdRed
  8.                 If .Font.NameFarEast = "黑体" Then
  9.                     If Len(.Text) > 1 Then
  10.                         .Characters.Last.InsertBefore Text:=vbTab & .Information(wdActiveEndPageNumber)
  11.                     End If
  12.                 End If
  13.             End With
  14.         Next
  15.         
  16.         '循环遍历所有段落
  17.         Dim i As Paragraph
  18.         For Each i In .Paragraphs
  19.             If i.Range Like "*" & vbTab & "[0-9]" & vbCr Or i.Range Like "*" & vbTab & "[0-9][0-9]" & vbCr Then
  20.                 i.Range.Font.ColorIndex = wdBlue
  21.                 s = s & i.Range
  22.                 n = n + 1
  23.             End If
  24.         Next

  25.         .Content.InsertAfter Text:=vbCr & "*********************" & vbCr & "目录" & vbCr & s
  26.         .Characters.Last.Delete
  27.         
  28.         .Range(Start:=.Paragraphs(.Paragraphs.Count - n + 1).Range.Start, _
  29.             End:=.Content.End).Select
  30.             
  31.         With Selection
  32.             .Font.ColorIndex = wdBlue
  33.             .MoveStart 4, -1
  34.             
  35.             '取消首行缩进
  36.             With .ParagraphFormat
  37.                 .CharacterUnitFirstLineIndent = 0
  38.                 .FirstLineIndent = CentimetersToPoints(0)
  39.             End With
  40.             
  41.             With .Paragraphs(1).Range
  42.                 With .ParagraphFormat
  43.                     .SpaceBefore = 12
  44.                     .SpaceAfter = 12
  45.                     .Alignment = wdAlignParagraphCenter
  46.                 End With
  47.                 .Characters(1).InsertAfter Text:=Space(4)
  48.             End With
  49.             
  50.             '制表位
  51.             .ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(15.04) _
  52.                 , Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderDots
  53.         End With
  54.     End With
  55. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-2-7 18:28 | 显示全部楼层
真是没有大神不能解决的问题. 歪瑞古德!    多谢,多谢。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 00:59 , Processed in 0.032223 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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