ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 巨大扫描文本——(按节)拆分和合并(宏)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-6-17 02:10 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
    前几天,给别人扫描了一本书(两三本杂志厚),文字共有 88400 多字,但用我的《普通》宏排版时,卡壳了!页面设置宏 PaperSetup 停工,提示“列宽不能少于 1.27 厘米“,当时不明白什么意思,后来查网络,明白是有些”节“的左右宽度超过 10厘米,版心宽度就小于 1.27 厘米了,用 VBA 调整页面边距无望。

    反复冥思苦想,终于想出来一招:按节拆分,再合并,变成一节,就能设置页边距,进而用宏来排版,但发现现在的宏排版也不行了,因为文本太巨大,有文字、表格、域、文本框等,反正是混乱至极。

    下面的 VBA 宏,暂时只能将巨大文本删除所有 分节符、分页符、分栏符,如果最后仍然有 分节符 存在,则按节拆分,拆分后马上合并到新建文档中(默认A4纸张),排版代码——暂时没有,须手工自行排版。

    * 用法:打开一个巨大文本,应用《aaac扫描文本排版》宏,但此宏现在仅能拆分/合并,无法排版。
    * 注意:如果是小文档,还请各位沿用我的 2007/2003 各自的《集成版》来排版。

  1. Sub aaac扫描文本排版()
  2.     Dim x&

  3.     删除分节符
  4.     删除分页符分栏符

  5. '文档分节数
  6.     x = ActiveDocument.Sections.Count
  7.     MsgBox "当前文档共有 " & x & " 节!", 0 + 16

  8.     If x = 1 Then End

  9. '拆分/合并
  10.     SplitMergeDocument

  11. End Sub
  12. Sub 删除分节符()
  13. 'TEST-OK/分节符未完全删除!
  14.     ActiveDocument.Content.Find.Execute "^b", , , 0, , , , , , "", 2
  15. End Sub
  16. Sub 删除分页符分栏符()
  17. 'TEST-OK
  18.     ActiveDocument.Content.Find.Execute "[^m^n]", , , 1, , , , , , "", 2
  19. End Sub
  20. Sub 文档分节数()
  21.     MsgBox ActiveDocument.Sections.Count
  22. End Sub
  23. Sub 分页符转分节符()
  24.     With ActiveDocument.Content.Find
  25.         .ClearFormatting
  26.         .Text = "^m"
  27.         .Forward = True
  28.         .MatchWildcards = False
  29.         Do While .Execute
  30.             With .Parent
  31.                 .Delete
  32.                 .InsertBreak 2
  33.             End With
  34.         Loop
  35.     End With
  36. End Sub
  37. Sub 分栏符转分节符()
  38.     With ActiveDocument.Content.Find
  39.         .ClearFormatting
  40.         .Text = "^n"
  41.         .Forward = True
  42.         .MatchWildcards = False
  43.         Do While .Execute
  44.             With .Parent
  45.                 .Delete
  46.                 .InsertBreak 2
  47.             End With
  48.         Loop
  49.     End With
  50. End Sub
  51. Sub SplitMergeDocument()
  52. '拆分文档/按节拆分
  53.     Dim s As Section, n&, doc As Document
  54.     With ActiveDocument
  55.         For Each s In .Sections
  56.             s.Range.Copy
  57.             Set doc = Documents.Add(Visible:=False)
  58.             n = n + 1
  59.             With doc
  60.                 .Content.Paste
  61.                 .Range(Start:=.Content.End - 2, End:=.Content.End).Delete
  62.                 .SaveAs FileName:="S" & n
  63.                 .Close
  64.             End With
  65.         Next
  66.         .Close 0
  67.     End With

  68. '合并文档
  69.     Dim i&
  70.     Documents.Add
  71.     For i = 1 To n
  72.         Selection.InsertFile FileName:="S" & i & ".doc"
  73.     Next i
  74.     MsgBox "处理完毕!尚未存盘!", 0 + 16
  75.     If ActiveDocument.Sections.Count > 1 Then MsgBox "当前文档仍有多节!", 0 + 16
  76. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2019-6-19 08:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
老师,您的集成版宏为啥不能排大文档,可以解释一下原因吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-20 03:12 | 显示全部楼层
我也不清楚,太大了,反应有问题,总像是在分页。

TA的精华主题

TA的得分主题

发表于 2019-6-27 14:27 | 显示全部楼层
本帖最后由 xkqtdzj 于 2019-6-27 14:34 编辑
betelehe 发表于 2019-6-19 08:49
老师,您的集成版宏为啥不能排大文档,可以解释一下原因吗

俺目前用的办法:拆分成一个个的子文档——>批处理排版——>合并成一个文档。
集成版中的合并和独立的合并工具还有点差别,独立工具一般能保持文档格式不变。集成版中的合并功能文档与合并前的文档常会变化。我一般用独立工具完成。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-28 00:52 | 显示全部楼层
前几天,我有一个大文档,删除所有分节符、分页符、分栏符后,发现还有 10 个分节符,但查找到后,却又看不到分节符在哪里,百思不得其解,后来想到按节拆分,然后又合并为一节(就是不分节),再排版可能会好的。但大文档可能由于分页原因,或宏算法不好,有时不能顺利排版。保持格式有些难,暂时不考虑。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 20:27 , Processed in 0.026552 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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