|
本帖最后由 413191246se 于 2021-2-11 02:51 编辑
* 各位朋友,可能有与我遇到的一样的问题:就是大文档,也许有很多表格,有很多分节符和分页符和分栏符,删除所有这么分隔符后,又会提示有很多节,特别是想进行页面设置,会遇到如下问题:
昨晚,经过 3-5 小时的反复试验,再加上也参考了网上网友的经验,最终终于解决了这个难题,其实还是与分栏有关(解决办法就是,把已经分为一栏的全文,再分为两栏,但要勾选栏宽相等,再分为一栏,就 OK 了!未解决时,发现 VBA 设置页面无效!用标尺无效!),解决此难题的 VBA 代码请见下面的宏:
* 最新修正:今天又重新测试了一下,诚如“晨晓之黎”朋友所言,不必分两栏,一栏即可;但要有两个辅助条件:一是栏宽相等;二是删除分节符。这种页面分栏错误的改正,我简称之“分栏纠错”!最新代码如下:——此次修正作废!
* 再次修正:在中午测试公文排版时,想把此最新成果应用到初始化中,结果排版发现,有提示“上下边距过大!”,其实文档是没有任何问题的,归根结底,还是这个分栏在起作用。还是得先分成二栏,再分为一栏才不会出错。所以,我个人认为,一般正常文档还是正常排版就好,比如应用我的《公文排版》或《普通排版》都没有问题;很少情况下,遇到多表格大文档时,里面可能分节过多,情况复杂,这种情况下,如果正常排版出现“在某些节中……设置相对于页面宽度过大。”的提示,只需关闭文档不保存,先应用下面的《分栏纠错》宏,再正常排版就可以了(一般情况下建议不要使用本宏,以免出现各种问题)。
- Sub 分栏纠错()
- With ActiveDocument
- '回车符/手动换行符/分节符/分页符/分栏符=>段落标记
- .Content.Find.Execute "[^13^l^12^n]", , , 1, , , , , , "^p", 2
- '继续删除分节符
- With .Content.Find
- .ClearFormatting
- .Text = "^b"
- .Forward = True
- .MatchWildcards = False
- Do While .Execute
- With .Parent
- .Text = vbCr
- .Start = .End
- End With
- Loop
- End With
- '页面设置/分栏纠错(在某些节中……设置相对于页面宽度过大)
- With .PageSetup
- With .TextColumns
- .SetCount NumColumns:=2
- .EvenlySpaced = True
- .SetCount NumColumns:=1
- End With
- End With
- MsgBox "文档共 " & .Sections.Count & " 节!可以正常排版了!", 0 + 48
- End With
- End Sub
复制代码 |
|