Dim bContinue As Boolean c|?0iN
)\fAy
Dim regEX As New RegExp $qOV#,@
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 .u[hK
'@OqWdaR
Dim LastTitle0String As String, LastTitle0No As Long wX dtY
Dim LastTitle1String As String, LastTitle1No As Long Hjl{M>z
Dim LastTitle2String As String, LastTitle2No As Long 44;ZX$HL
Dim LastTitle3String As String, LastTitle3No As Long 1HOYp*{#wP
Dim LastTitle4String As String, LastTitle4No As Long xe ng`!
Dim LastTitle5String As String, LastTitle5No As Long X]up5tk~
Dim LastTabelString As String, LastTableNo As Long zzmZ`Ya
Dim LastFigureString As String, LastFigureNo As Long [4Tiukk(
'wh2787
Dim strSeperator As String sbnNk(XINQ
Z|zyO-
Sub ConvertWidth(fTEXT As String, rText As String) f%r0K6p
Selection.Find.ClearFormatting M->/
vi
Selection.Find.Replacement.ClearFormatting ACQbw)tiv}
Selection.Find.Wrap = wdFindContinue V^Gz7`^
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText ND);7
DoEvents `
@.
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True i"|="O0v5
End Sub 7)iB6RBK
|KSd@
Sub ClearDomain() qbu>YTj
With Selection.Find zdY+?s)p
.ClearFormatting Z#H] yG
.Replacement.ClearFormatting 4?Mb>\n%<^
.Wrap = wdFindContinue MLD-uI10{
Me.txtStatus.Text = "清除所有域代码" 9v[cy` \
DoEvents pbg[\UJyd
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False N$u;Q(^
End With t\YN\`X
D
End Sub 0V{a{>+
9nW/pv
Private Sub cmdCheck_Click() Y4E UW%
bContinue = True !=%E&e]
Dim NoSeries1(1 To 16) As String xDtq@Rb}
Dim NoSeries2(1 To 16) As String UG)J4ZX
Dim NoSeries5(1 To 16) As String QUa_gYp0v
Dim NoSeriesRM(1 To 16) As String |.kYomJ
Dim paraTotal As Long, ParaText As String )nJo\HFXv
Dim ttString As String, ttNo As String `>M;f%s
+%yVW f
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long 0}'
ki/xo^Y2<
Me.txtStatus.Visible = True #XSs.i{
Me.lbParaType.Visible = True -"*UICd
Me.cmdCheck.Enabled = False s-^B)0T!
8Q $fXB
HzADz%~
2de[ yz
7PE3>cD
Dim ParaType As String, rText As String #'"zyidu
q:Lw!'Zh
Selection.WholeStory GJlkEWs
Selection.NoProofing = True d)V"tSC,
}~gBnq_DDU
tm1 = Now <
H1+qN=]`
L0ZgxG3:g
ActiveWindow.View.Type = wdNormalView E+XpgR5
~~J xw ]
NoSeries1(1) = "一" 2Eq?^ )s
NoSeries1(2) = "二" UuDT=_1Sh
NoSeries1(3) = "三" C'~K am S
NoSeries1(4) = "四" |a!AgvNF
NoSeries1(5) = "五" a`SQcNBf*
NoSeries1(6) = "六" FFE IsB"9
NoSeries1(7) = "七" {O\>"2}m'f
NoSeries1(8) = "八" :=
J~t@
NoSeries1(9) = "九" @
s
NoSeries1(10) = "十" -mD<8v[F
NoSeries1(11) = "十一" yO@KjCv"
NoSeries1(12) = "十二" CE :x;!}cd
NoSeries1(13) = "十三" cW+6Emh
NoSeries1(14) = "十四" wPhN_XV
NoSeries1(15) = "十五" pUs:r0B
NoSeries1(16) = "十六" 'n'83d)z
(#zSVtZ
NoSeries2(1) = "㈠" (dSf>p r2
NoSeries2(2) = "㈡" :^
9
sy
NoSeries2(3) = "㈢" R
7'a/
NoSeries2(4) = "㈣" IYtM'!u
NoSeries2(5) = "㈤" Sw##C
l#
NoSeries2(6) = "㈥" WxNPAJ6YH
NoSeries2(7) = "㈦" ^A9D;e6!-
NoSeries2(8) = "㈧" Y6LoPJ
NoSeries2(9) = "㈨" ^a9v5hu
NoSeries2(10) = "㈩" %EC{O@EAk
'EsN{.l?
NoSeries5(1) = "①" >:5^4/fo*
NoSeries5(1) = "②" %<^B\|d'?
NoSeries5(3) = "③" b
j6-0`
NoSeries5(4) = "④" <sXmk{
NoSeries5(5) = "⑤" ]
-
NoSeries5(6) = "⑥" 8J60+2Wa
NoSeries5(7) = "⑦" $L|YllD%
NoSeries5(8) = "⑧" -w8c;5X
NoSeries5(9) = "⑨" 8<cD+Jtj
NoSeries5(10) = "⑩" i21ybXA=Z
8
1Ar.<
Obl']Hr{y9
NoSeriesRM(1) = "I" x9fNIuAQ
NoSeriesRM(2) = "II" lZyxJDZ A
NoSeriesRM(3) = "III" RRYm.dMIw
NoSeriesRM(4) = "IV" e
;LJdd
NoSeriesRM(5) = "V" UclQo~3
NoSeriesRM(6) = "VI" 8<z]rLQw?%
NoSeriesRM(7) = "VII" NZUQ
R`5
NoSeriesRM(8) = "VIII" REd"}zDI
NoSeriesRM(9) = "IX" 6U{&`8C
NoSeriesRM(10) = "X" q2qbbQ6H
NoSeriesRM(11) = "XI" X^L)5n+$X
NoSeriesRM(12) = "XII" 4 [@`j{
NoSeriesRM(13) = "XIII" uXx c2}
NoSeriesRM(14) = "XIV" fC!]M hA"i
NoSeriesRM(15) = "XV" li>`9qCmI
NoSeriesRM(16) = "XVI" <28L\pdG`
>3R%GNw
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) ,`<w#
k_A. aYe
If i = vbNo Then V{51wnxT
Exit Sub ]<3$Sx_{y
End If JE~ci#|!
Ave{ `YD
If Me.chkSuper.Value Then uFd.2,XNP
Me.txtStatus.Text = "检查修改所有的上标格式" Bq}p]R3X
NzRpI5\.
CheckSuperScript Z4eu'.r-y~
M,0@@:
End If gHU/yi!T
VUfV=&D-*g
If Me.chkStyle.Value Then Ift @/A
Me.txtStatus.Text = "设置样式,请稍候...." h-"c
)?p
DoEvents Q4YIKNN|7
CeateOrModifyStyle \Qa6mt2h
End If g[P.lpi{U
vIk;x
CuE>=y-"I
-C9_gZ
ClearDomain _J<^'w^;%
t?[|oz:v
}=kf52Am,}
/.leY$
If Me.chkLIST.Value Then 7_ $Xt)Y{
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" D@[Mk"f
WdXi
ConvertListToOrdinary 2LpJ xV
End If xRZ9.Agv_
KH4
5A'o
y@&Cn
Dim pType As String, trimpTEXT As String .A;D-"!
If Me.chkNum.Value = True Then A0x"Etbw)
Me.txtStatus.Text = "转换全角数字形式为半角" n<C4-'^U[a
ConvertWidth "1", "1" ,TuDG*YA
DoEvents ],rtSUO
ConvertWidth "2", "2" &
w{""'
DoEvents b>R/=tx
ConvertWidth "3", "3" zE"ME*ou
DoEvents c*+yJNm3>
ConvertWidth "4", "4" zu6Y*{$>g
DoEvents 76i)m!
ConvertWidth "5", "5" 'BE &l W
DoEvents zB 6u%u WR
ConvertWidth "6", "6"
b_Us%{
DoEvents .r~!d|
ConvertWidth "7", "7" kNX"Vo]1
DoEvents I`
%\ "bF@
ConvertWidth "8", "8" U1&pcwP
DoEvents igNZe."V
ConvertWidth "9", "9" R#a
yN*
DoEvents mp2J|!Lx
ConvertWidth "0", "0" &<</[h/B/F
DoEvents vRm.#+Td
ConvertWidth "a", "a" vB
0O3]
DoEvents EC6)g;CO
ConvertWidth "b", "b" uo`O$k<;
DoEvents > UT Ak
ConvertWidth "c", "c" ,3^gB,ka
DoEvents } t4?*:\
ConvertWidth "d", "d" Vc!` BiH
DoEvents
x Bn+-V
ConvertWidth "e", "e" Y
..
DoEvents !2dA8b
ConvertWidth "f", "f" |RUx)&
DoEvents L4th 7#
ConvertWidth "g", "g" k(Z+(Y'{q~
DoEvents ]lj,GD)c
ConvertWidth "h", "h" "*o54z5"
DoEvents g(d9=xq@k
ConvertWidth "i", "i" vfG4PJ 6
DoEvents _I;+p eq
ConvertWidth "j", "j" XW!a?a
LNX
DoEvents xFZ
A18
ConvertWidth "k", "k" & i,on6
DoEvents >YPC&@9
ConvertWidth "l", "l" xA;o3Or
DoEvents hdB.u^!
ConvertWidth "m", "m" OoKzPePWji
DoEvents ?b?`(JTR
ConvertWidth "n", "n" m>4jRr6sF
ConvertWidth "o", "o" QN=a{
ConvertWidth "p", "p" np|3 os
ConvertWidth "q", "q" I>k>^
ConvertWidth "r", "r" #NZ\UmA
ConvertWidth "s", "s" 4@6!E^
ConvertWidth "t", "t" \79KU
ConvertWidth "u", "u"
U1?*vwfKZ
ConvertWidth "v", "v" hQ!sl O
ConvertWidth "w", "w" cP[3p:
ConvertWidth "x", "x" \RcB,?OK
ConvertWidth "y", "y" lWj|7
ConvertWidth "z", "z" }wmn v
ConvertWidth "A", "A" R:+2}kS5e{
ConvertWidth "B", "B" K/;FP'.
ConvertWidth "C", "C" /]=dPb%
ConvertWidth "D", "D" ,fS}cpV
ConvertWidth "E", "E" g?V>+oMx
ConvertWidth "F", "F" iV X 12
ConvertWidth "G", "G" (eS/Q%ZGK
ConvertWidth "H", "H" r3X|*/
ConvertWidth "I", "I" K-Bf=7F,
ConvertWidth "J", "J" w*.q t<rH)
ConvertWidth "K", "K" W@NM~+)e
ConvertWidth "L", "L" +QcgLq
ConvertWidth "M", "M" >t2E034_
ConvertWidth "N", "N" u|m>h(O
ConvertWidth "O", "O" Ux_ tHyc/
ConvertWidth "P", "P" w3lR8R]
ConvertWidth "Q", "Q" 19od#
d3+
ConvertWidth "R", "R" l?CUd7P(a
ConvertWidth "S", "S" neW_mu;~Z
ConvertWidth "T", "T" %JBFG.+
ConvertWidth "U", "U" fuM+{1}/E
ConvertWidth "V", "V" <1tFwC|4BJ
ConvertWidth "W", "W" %GUu{n<6
ConvertWidth "X", "X" -^=sxi,V
ConvertWidth "Y", "Y" \Q.Qos
ConvertWidth "Z", "Z" 0T,Qn{
ConvertWidth "^l", "^p" 4am`X1YV#
ConvertWidth "(", "(" ZM oV!lu
ConvertWidth ")", ")" j-2`yR
rM6^pzxe
End If H"PnX-fGN
Q9X7-\n
With ActiveDocument p8<Y5:`
Dim tbl As Table 1(C3;qlVD
For Each tbl In .Tables ,: X+NQ
tbl.Rows.Alignment = wdAlignRowCenter *@'4 A :A
tbl.Range.Font.NameFarEast = "楷体" I(fq4$
tbl.Range.Font.NameAscii = "Times New Roman" S4]}/Imn)
tbl.Range.Font.Size = 10.5 G%N/]]ll
Next @DgJxY|
Set tbl = Nothing YDBQ6X
End With /E'c y
a`5ODW+
^p#f B4z
With ActiveDocument x2B~1edf
f$a%&X6"-
For i = 1 To .TablesOfContents.Count V$u~}]z
.TablesOfContents(i).Delete td^2gjr^5
Next q1j<p)(
Pf
s _s6
aVv$k
jbQ2G|:Q
paraTotal = .Paragraphs.Count [9f
TN2'z
paraCounter = 1 reml|!F-)
@MIBW)P<
LastTitle0No = 0 2kV[A92s
LastTitle1No = 0 wCiDvHF5+C
LastTitle2No = 0 S -j<O&h~C
LastTitle3No = 0 H!U\;ny
LastTitle4No = 0 .5+
*,+-
LastTableNo = 0 ]_NN,m>z
LastFigureNo = 0 <VD^f
`_Bvaej?,
Dim Sec As Long Hl"rGA>
}J}a;P4
Sec = InputBox("正文从第一节开始?", "节设置", 6) l,}{Y4\G
If Sec = 0 Then 4`@]jm
Exit Sub -L>\
58`
End If K
@3 yS8F
%=x|.e@J
k = 0 2 g"_*[
Do While (paraCounter < paraTotal) And bContinue ]@OGp:Hz
k = k + 1 uN bOtA
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then O[Xl*9P
Exit Do m#SDB6l
End If usiv`.
paraCounter = paraCounter + 1 O@[c*3]e
If k Mod 20 = 0 Then M0`nr}g
Me.lbCounter.Caption = paraCounter :A35?9E?
DoEvents }^uUw&
End If [.DSY[!8U
Loop E@\e37e
&Im{p7gf!b
Y(IT#x?p
Do While (paraCounter < paraTotal) And bContinue uG2(NwOL
m7X&"0X
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) v)@EK6Nty
ShapeHeight = 0 $ wGDk
ShapeWidth = 0 4,L
(
Xv3u}nPMq
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth / G$8 j$
Q!/<=95E
Select Case ParaType 0T 2h3,
Case "【】表格内容" U,"lOG'
.Paragraphs(paraCounter).Style = "QLNU表格内容" Eq-fR~<9
Case "章" %zE_Q
LastTitle0No = LastTitle0No + 1 ? lC.
Pq
'新一章开始,复位其下属标题编号 lyiBRMiP|
LastTitle1No = 0 96
;17h$
LastTitle2No = 0 zmkqqiDp_
LastTitle3No = 0 Iu6KW :x
LastTitle4No = 0 g|*2O}<
UJG)-x
k = Val(ttNo) Ju$= Tn
If k = 0 Then '非数字编号章节 iMRb`
\KH
If ttNo <> NoSeries1(LastTitle0No) Then Z;shFMu
rText = "第" & NoSeries1(LastTitle0No) & ttString FUzIuz 6
Me.ErrMsg.AddItem "章节编号错误:" & ParaText %]%.{W\j3
End If 6GCwc1g
Else Lv@JfN"O
If Val(ttNo) <> LastTitle0No Then BQVpp,]
rText = "第" & LastTitle0No & ttString BQWEC,*N
Me.ErrMsg.AddItem "章节编号错误:" & ParaText }OO(uC2
End If [ P\3XSR
0S@O]k)
End If oXwoi!
J{'
u
'章段落设置 g~_cYy
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 U#G[#sd> K
.Paragraphs(paraCounter).Style = "QLNU章节" |D)NPN&
.Paragraphs(paraCounter).Range.Select Kx9Cx5B
Selection.EndKey unit:=wdLine V%k[S|f3
tc = Replace(rText, vbCr, "") =W)Fa6P3j(
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False |M|'S~z
Case "一级标题" rP.qCl+J
LastTitle1No = LastTitle1No + 1 MfU
G@
'新一级标题开始,复位其下属标题编号 Ggy_
Ctu
LastTitle2No = 0 CBx 1.xL
LastTitle3No = 0 T[M?:~
LastTitle4No = 0 3#R~>c2
.58>KBj(
If ttNo <> NoSeries1(LastTitle1No) Then E",s
]
rText = NoSeries1(LastTitle1No) & "、" & ttString BMU}NZA
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText RWmQP%A}aw
End If \7Hzj0hSi
4s/4z@3a
]xQPSs_
'一级标题段落设置 格式:一、标题内容 v'*
.Paragraphs(paraCounter).Range.Text = rText X0
&1ICZ
.Paragraphs(paraCounter).Style = "QLNU一级标题" :$d3}TjsA+
.Paragraphs(paraCounter).Range.Select jLC,<V*
Selection.EndKey unit:=wdLine j &)Xi^^
tc = Replace(rText, vbCr, "") FH}n]T
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False TF 6_4t6
Case "二级标题" RC Fb&,51
LastTitle2No = LastTitle2No + 1 #M
*h)/d[A
'新二级标题开始,复位其下属标题编号 N'R^S98x
LastTitle3No = 0 7k{Oae\$
LastTitle4No = 0 sKIWr{D
y [e$
If ttNo <> NoSeries1(LastTitle2No) Then 8}Rwf?B
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString &n|!
'/H
ErrMsg.AddItem "二级标题编号错误:" & ParaText *v3/8enf
End If N8(xz-6
Mj |)KDL
'二级标题段落设置 格式:(一)、标题内容
VVeO>j d
.Paragraphs(paraCounter).Range.Text = rText `+$'bNPn&
.Paragraphs(paraCounter).Style = "QLNU二级标题" {:40Jf
XOzPi*V**
.Paragraphs(paraCounter).Range.Select (8o~ XL
Selection.EndKey unit:=wdLine =zXpeo&|m
tc = Replace(rText, vbCr, "") CYrVP%xRA
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False \~:Kp
Kq
~Kda#=
Case "三级标题" jPYed@[+
LastTitle3No = LastTitle3No + 1 z<c^<hE:l
'新三级标题开始,复位其下属标题编号 N;tUrdgQ
LastTitle4No = 0 fV*x2g7w
BDZB;DPb
If Val(ttNo) <> LastTitle3No Then d{&+xl^ll
rText = LastTitle3No & ". " & ttString s]`&9{=E
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText %)*!(%\S*3
K^t M$l\
End If %j=dKd>
'三级标题段落设置 格式:1. 标题内容 {Eb
R
=
.Paragraphs(paraCounter).Range.Text = rText *A2J[,?c
.Paragraphs(paraCounter).Style = "QLNU三级标题" $7gzu4f
.Paragraphs(paraCounter).Range.Select ,(Fo%.j
Selection.EndKey unit:=wdLine 'qQ 5K
o
tc = Replace(rText, vbCr, "") a`(6hL3IT
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False P,!si#
Case "四级标题" '1;Q'-/J
LastTitle4No = LastTitle4No + 1 x3>K{
=Z_\8qc
If Val(ttNo) <> LastTitle4No Then @uz&]~+`
rText = "(" & LastTitle4No & "). " & ttString b!SGQv(^M
ErrMsg.AddItem "四级标题编号错误:" & ParaText T[>h
6d
'-3A
WBWI1
End If |$Dt6{h
'四级标题段落设置 格式:(1). 标题内容 &H,
5f#
.Paragraphs(paraCounter).Range.Text = rText ]O',Ei^
.Paragraphs(paraCounter).Style = "QLNU四级标题" u7G@VZ Ux5
.Paragraphs(paraCounter).Range.Select 6FG h=~{3,
Selection.EndKey unit:=wdLine XyJ*>;q
tc = Replace(rText, vbCr, "") L?&+*|VxI
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False &W