|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
前几天,给别人扫描了一本书(两三本杂志厚),文字共有 88400 多字,但用我的《普通》宏排版时,卡壳了!页面设置宏 PaperSetup 停工,提示“列宽不能少于 1.27 厘米“,当时不明白什么意思,后来查网络,明白是有些”节“的左右宽度超过 10厘米,版心宽度就小于 1.27 厘米了,用 VBA 调整页面边距无望。
反复冥思苦想,终于想出来一招:按节拆分,再合并,变成一节,就能设置页边距,进而用宏来排版,但发现现在的宏排版也不行了,因为文本太巨大,有文字、表格、域、文本框等,反正是混乱至极。
下面的 VBA 宏,暂时只能将巨大文本删除所有 分节符、分页符、分栏符,如果最后仍然有 分节符 存在,则按节拆分,拆分后马上合并到新建文档中(默认A4纸张),排版代码——暂时没有,须手工自行排版。
* 用法:打开一个巨大文本,应用《aaac扫描文本排版》宏,但此宏现在仅能拆分/合并,无法排版。
* 注意:如果是小文档,还请各位沿用我的 2007/2003 各自的《集成版》来排版。
- Sub aaac扫描文本排版()
- Dim x&
- 删除分节符
- 删除分页符分栏符
- '文档分节数
- x = ActiveDocument.Sections.Count
- MsgBox "当前文档共有 " & x & " 节!", 0 + 16
- If x = 1 Then End
- '拆分/合并
- SplitMergeDocument
- End Sub
- Sub 删除分节符()
- 'TEST-OK/分节符未完全删除!
- ActiveDocument.Content.Find.Execute "^b", , , 0, , , , , , "", 2
- End Sub
- Sub 删除分页符分栏符()
- 'TEST-OK
- ActiveDocument.Content.Find.Execute "[^m^n]", , , 1, , , , , , "", 2
- End Sub
- Sub 文档分节数()
- MsgBox ActiveDocument.Sections.Count
- End Sub
- Sub 分页符转分节符()
- With ActiveDocument.Content.Find
- .ClearFormatting
- .Text = "^m"
- .Forward = True
- .MatchWildcards = False
- Do While .Execute
- With .Parent
- .Delete
- .InsertBreak 2
- End With
- Loop
- End With
- End Sub
- Sub 分栏符转分节符()
- With ActiveDocument.Content.Find
- .ClearFormatting
- .Text = "^n"
- .Forward = True
- .MatchWildcards = False
- Do While .Execute
- With .Parent
- .Delete
- .InsertBreak 2
- End With
- Loop
- End With
- End Sub
- Sub SplitMergeDocument()
- '拆分文档/按节拆分
- Dim s As Section, n&, doc As Document
- With ActiveDocument
- For Each s In .Sections
- s.Range.Copy
- Set doc = Documents.Add(Visible:=False)
- n = n + 1
- With doc
- .Content.Paste
- .Range(Start:=.Content.End - 2, End:=.Content.End).Delete
- .SaveAs FileName:="S" & n
- .Close
- End With
- Next
- .Close 0
- End With
- '合并文档
- Dim i&
- Documents.Add
- For i = 1 To n
- Selection.InsertFile FileName:="S" & i & ".doc"
- Next i
- MsgBox "处理完毕!尚未存盘!", 0 + 16
- If ActiveDocument.Sections.Count > 1 Then MsgBox "当前文档仍有多节!", 0 + 16
- End Sub
复制代码 |
|