以下是引用ssq1109在2007-1-9 15:36:21的发言:1.将WORD文档中分了栏(栏数N≥2)的文本在其首、尾分别加标记,尾部的标记均为[Co)] ,首部根据分栏的栏数N及是否有分隔线加[Co(N!W2](有分隔线时,在N后加“!”)或加[Co(NW2](无分隔线时,在N后不加“!”) 例如:分2栏有分隔线时首部为:[Co(2!W2] 分3栏无分隔线时首部为:[Co(3W2]。其他依此类推。 2.对虽然分了栏但栏数N=1的文本不作标记。(理论上有此可能,因为WORD支持分1栏,表面上虽和未分栏一样,但在文本首、尾都有分节符。 3.处理后,原文的分栏设置可以取消,也可以不取消,这取决于代码是否简化,运行是否高效,即在分栏文本的首尾加标记时,只要不改变内容及其他设置,如字体、字号、上下标等,分栏设置可取消。 测试文档见附件中的“分栏测试.doc”,要求处理结果见“分栏测试结果1.doc”(保留了分栏设置)或“分栏测试结果2.doc” (取消了分栏设置) 先做了一个,供参考: '* +++++++++++++++++++++++++++++ '* Created By SHOUROU@ExcelHome 2007-1-9 19:06:43 '仅测试于System: Windows NT Word: 11.0 Language: 2052 '№ 0128^The Code CopyIn [ThisDocument-ThisDocument]^' '* ----------------------------- Option Explicit
Sub Example() Dim i As Section, myRange As Range, byteTc As Byte, TF As Boolean, myString As String Application.ScreenUpdating = False For Each i In Me.Sections myString = "" With i byteTc = .PageSetup.TextColumns.Count If byteTc > 1 Then Set myRange = .Range TF = .PageSetup.TextColumns.LineBetween myString = VBA.IIf(TF = True, "!", "") myString = "[Co(" & byteTc & myString & "W2]" With myRange .InsertBefore myString If VBA.Asc(.Characters.First) = 12 Then .SetRange .Start - 1, .End If VBA.Asc(.Characters.Last) = 12 Then .SetRange .Start, .End - 1 .InsertAfter "[Co)]" End With End If End With Next Application.ScreenUpdating = True End Sub '----------------------
[此贴子已经被作者于2007-1-9 19:07:01编辑过] |