ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 按篇目顺序对word文档中的篇目重新排序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-1-24 03:25 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
记事本LIST.TXT中是篇目顺序列表,文档“职责.doc”中的篇目标题都是二级标题,怎样按记事本中列表的顺序把word文档中的篇目重排,所有格式不变。

附件.zip

11.26 KB, 下载次数: 26

TA的精华主题

TA的得分主题

发表于 2021-1-24 09:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
打开【导航窗格】,直接拖动导航窗格 中的标题调整顺序就可以了。

TA的精华主题

TA的得分主题

发表于 2021-1-24 09:48 | 显示全部楼层
本帖最后由 413191246se 于 2021-1-24 09:50 编辑

* 楼主,以 Word 2019 为例,打开你的 Word 文档后,找到:视图——大纲——显示级别:2 级——将光标放在“校长岗位职责”这一行,点击“上移”按钮(↑),直到移至最上面一行;然后,将光标放在“副校长岗位职责”这一行,点击“上移”按钮(↑)或“下移”按钮。。。最后,点击“视图菜单”——页面视图——返回正常编辑状态。
* 原来版主大人已经回答了!我没看到,回答完才看到。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-25 22:00 | 显示全部楼层
不经意的回头 发表于 2021-1-24 09:29
打开【导航窗格】,直接拖动导航窗格 中的标题调整顺序就可以了。

谢谢!这个方法我知道,我是想能不能用VBA一键解决?

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-25 22:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
413191246se 发表于 2021-1-24 09:48
* 楼主,以 Word 2019 为例,打开你的 Word 文档后,找到:视图——大纲——显示级别:2 级——将光标放在 ...

谢谢你的解决方案,我的思路是想用VBA一键解决

TA的精华主题

TA的得分主题

发表于 2021-1-26 18:31 | 显示全部楼层
  1. '这个贴我在Excel VBA中已经回复过了:
  2. Sub test()
  3.     Dim i%, j%, d, s, arrByte() As Byte
  4.     Set d = CreateObject("Scripting.Dictionary")
  5.     Application.ScreenUpdating = False
  6.     FileName = ThisDocument.Path & "" & Dir(ThisDocument.Path & "" & "*.txt") '获取当前目录下的txt文件
  7.     If Len(Dir(ThisDocument.Path & "" & "*.txt")) Then   '判断是否存在txt文件
  8.         Open FileName For Binary Access Read As #1
  9.         ReDim arrByte(LOF(1) - 1)
  10.         Get #1, , arrByte
  11.         Close #1
  12.         s = Split(ByteToStr(arrByte, "UTF-8"), vbNewLine) '调用ByteToStr函数
  13.     Else
  14.         MsgBox "当前目录下没有txt文件!": Exit Sub '当前目录下没有txt文件,退出程序
  15.     End If
  16.     If UBound(s) < 0 Then MsgBox "txt文件中没有数据!": Exit Sub  'txt文件中没有内容,退出程序
  17.     For i = 0 To UBound(s)
  18.         d(Trim(s(i))) = ""
  19.     Next
  20.     t = ""
  21.     j = ThisDocument.Paragraphs.Count '获取文档总段数
  22.     For i = 1 To ThisDocument.Paragraphs.Count
  23.         If d.Exists(Replace(ThisDocument.Paragraphs(i).Range.Text, Chr(13), "")) Then
  24.             t = Replace(ThisDocument.Paragraphs(i).Range.Text, Chr(13), "")
  25.             d(t) = Array(i, i) '第一个参数记录段落开始
  26.         Else
  27.             If t <> "" Then d(t) = Array(d(t)(0), i) '第二个参数记录段落结束
  28.         End If
  29.     Next
  30.     i = 0
  31.     For Each tt In d.Keys '按先后顺序复制到文档最后
  32.         ThisDocument.Range(ThisDocument.Paragraphs(d(tt)(0)).Range.Start, ThisDocument.Paragraphs(d(tt)(1)).Range.End).Select '选中
  33.         Selection.Copy '复制
  34.         If i = 0 Then
  35.             ThisDocument.Range.InsertParagraphAfter '在文档后插入一行
  36.             i = i + 1
  37.         End If
  38.         Selection.EndKey Unit:=wdStory '光标移到文档尾
  39.         Selection.Paste '粘贴
  40.     Next
  41.     ThisDocument.Range(ThisDocument.Paragraphs(1).Range.Start, ThisDocument.Paragraphs(j).Range.End).Select '选中原来的内容
  42.     Selection.Delete '删除
  43.     Application.ScreenUpdating = True
  44.     MsgBox "处理完成!", "64", "温馨提示"
  45. End Sub
  46. Function ByteToStr(arrByte, strCharset As String) As String 'ByteToStr函数读取UTF-8或Unicode编码的内容
  47.     With CreateObject("Adodb.Stream")
  48.         .Type = 1
  49.         .Open
  50.         .Write arrByte
  51.         .Position = 0
  52.         .Type = 2
  53.         .Charset = strCharset
  54.         ByteToStr = .Readtext
  55.         .Close
  56.     End With
  57. End Function
复制代码


TA的精华主题

TA的得分主题

发表于 2021-1-26 21:52 | 显示全部楼层
* 刚才我试了半天,可以做到的是:选定“校长岗位职责”以及它下面若干段落后,可以用一句VBA代码(其实按键就是 Alt+Shift+上箭头 的代码化)上移到文首(此时,文本格式并未变化),但是下面再查找“副校长岗位职责”,就找不到了,找到的是“总务主任岗位职责”,查找失灵了!不知何故。——我开始也想到的是 楼主 可能是想用 VBA 的。

TA的精华主题

TA的得分主题

发表于 2021-1-26 23:31 | 显示全部楼层
* 问题解决!原来是 chr(10)惹的祸!请 楼主 同时打开两篇示例文档后应用下面的宏:
  1. Sub aaaa篇目重新排序_校长岗位职责()
  2.     Dim arr, i As Paragraph, j&
  3.     Documents("职责.doc").Activate
  4.     With ActiveDocument.Content
  5.         .InsertAfter Text:=vbCr & "aaaa"
  6.         .Paragraphs.Last.Style = wdStyleHeading2
  7.     End With
  8.     arr = Split(Documents("list.txt").Content, vbCr)
  9.     For j = 0 To UBound(arr) - 1
  10.         With Selection
  11.             .HomeKey 6
  12. ref:
  13.             .Find.Execute Replace(arr(j), Chr(10), "")
  14.             If .Start = .Paragraphs(1).Range.Start Then
  15.                 Do
  16.                     .MoveEnd 4
  17.                 Loop Until .Next(4, 1).Style = "标题 2"
  18.                 .Cut
  19.                 .EndKey 6
  20.                 .TypeParagraph
  21.                 .Paste
  22.             Else
  23.                 .MoveRight
  24.                 GoTo ref
  25.             End If
  26.             .HomeKey 6
  27.         End With
  28.     Next
  29.     With ActiveDocument
  30.         For Each i In .Paragraphs
  31.             If Len(i.Range) = 1 Then i.Range.Delete
  32.         Next
  33.         .Paragraphs(1).Range.Delete
  34.     End With
  35. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-29 13:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2021-1-26 23:31
* 问题解决!原来是 chr(10)惹的祸!请 楼主 同时打开两篇示例文档后应用下面的宏:

谢谢!请问:运行时,说文件名无效,并产生了一个“aaaa”的二级标题,文档中的几个职责没有重新排序呢

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-29 13:40 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 01:04 , Processed in 0.037049 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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