Dim bContinue As Boolean S6uBk"V!
ek<U2C_
u#
Dim regEX As New RegExp $o z
ZFvJF
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 *(J<~:V?
x.I-z@\E
Dim LastTitle0String As String, LastTitle0No As Long "#%T*c{Tf0
Dim LastTitle1String As String, LastTitle1No As Long Wk?XlCj
Dim LastTitle2String As String, LastTitle2No As Long Om*Dy}
Dim LastTitle3String As String, LastTitle3No As Long qdh D6#r
Dim LastTitle4String As String, LastTitle4No As Long hO8B]4=&*
Dim LastTitle5String As String, LastTitle5No As Long }j
x{Cw
Dim LastTabelString As String, LastTableNo As Long Z q)A"'Y
Dim LastFigureString As String, LastFigureNo As Long ]v#Q\Q8>
y!j1xnzki
Dim strSeperator As String 8in8_/x
ul
E\>5O4h
Sub ConvertWidth(fTEXT As String, rText As String) 4I$#R
Selection.Find.ClearFormatting /}wGmX! -!
Selection.Find.Replacement.ClearFormatting H4U;~)i
Selection.Find.Wrap = wdFindContinue ]4PG[9J@
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText dJk.J9Z
DoEvents \W4SZR%u
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True b1+Nm
End Sub MWB?V?qPSC
:hr%iu
Sub ClearDomain() Y (Q8P{@(
With Selection.Find d{Z
.ClearFormatting \%#jT GFs~
.Replacement.ClearFormatting ;,D7VxWhY
.Wrap = wdFindContinue iPao54Z
Me.txtStatus.Text = "清除所有域代码" l\H9Io3
DoEvents +-ue={'
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False TAP
/gN'
End With *ZHk^d:
End Sub y3vOb , 4
.[7m4iJf
Private Sub cmdCheck_Click() 2ma.zI@^u9
bContinue = True zK}.Bhj#
Dim NoSeries1(1 To 16) As String JP#m}W
Dim NoSeries2(1 To 16) As String ~dv
C$
Dim NoSeries5(1 To 16) As String 5}f$O
Dim NoSeriesRM(1 To 16) As String HRk+2'wjAz
Dim paraTotal As Long, ParaText As String 7J\I%r
Dim ttString As String, ttNo As String =d9%ce
)<+Z,6
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long wx<DzC
T
^uBMDYe
Me.txtStatus.Visible = True &}WSfZ0{
Me.lbParaType.Visible = True
) s M}BY
Me.cmdCheck.Enabled = False ,%u\2M
8I*fPf
<=p"ck@
/%~`B[4F
>%{h_5
Dim ParaType As String, rText As String 9.<$&mVk7`
6d,"GT
Selection.WholeStory eb7`R81G
Selection.NoProofing = True :t(}h!7
C)`/Q( ^
tm1 = Now /IgTmXxxj
P;h/)-q8
ActiveWindow.View.Type = wdNormalView 7l?-2I'c
I3A](`
NoSeries1(1) = "一" %"o4IYV#
NoSeries1(2) = "二" nRvV+F0#
NoSeries1(3) = "三" {Tx+m;5F
NoSeries1(4) = "四" 3+IS7ATn
NoSeries1(5) = "五" {oO!v}]
NoSeries1(6) = "六" ]RV6(|U4_
NoSeries1(7) = "七" C0e<
_6p=
NoSeries1(8) = "八" Yk }zN_v
NoSeries1(9) = "九" K}6}Opr,Tt
NoSeries1(10) = "十" cOIshT1
NoSeries1(11) = "十一" p0b&CrALx
NoSeries1(12) = "十二" @qeI4io-n
NoSeries1(13) = "十三" qk+:p]2
NoSeries1(14) = "十四" u4%-e)$X
NoSeries1(15) = "十五" cdk;HK_Ve.
NoSeries1(16) = "十六" 'kp:yI7w
avdi9!J2
NoSeries2(1) = "㈠" G'! Hc6OZ
NoSeries2(2) = "㈡" H}A67J9x
NoSeries2(3) = "㈢" ]F,5Oh :OY
NoSeries2(4) = "㈣" *M&~R(TMn
NoSeries2(5) = "㈤" ]^dXB0
NoSeries2(6) = "㈥" XMpPG~XdN
NoSeries2(7) = "㈦" }pA0mW9
NoSeries2(8) = "㈧" Ltc>@
NoSeries2(9) = "㈨" 6x_8m^+m
NoSeries2(10) = "㈩" |3s-BKbN4
${e{#
NoSeries5(1) = "①" 4!D!.t~r
NoSeries5(1) = "②" 8L0#<"'0
NoSeries5(3) = "③" z`{x1*w_
NoSeries5(4) = "④" g8^ $,
NoSeries5(5) = "⑤" 5'@}8W3b
NoSeries5(6) = "⑥" rN
OwB2e
NoSeries5(7) = "⑦" k9a-\UIMet
NoSeries5(8) = "⑧" M^H357r%
NoSeries5(9) = "⑨" M}HGFN
NoSeries5(10) = "⑩" *T
6<'a
_bW#*
Y5
U4%P0}q/
NoSeriesRM(1) = "I" @A
g=2\9
NoSeriesRM(2) = "II" Bp9
u6R
NoSeriesRM(3) = "III" 7&2xUcsz
)
NoSeriesRM(4) = "IV" H`kfI"u8
NoSeriesRM(5) = "V" (g5T2(_6L
NoSeriesRM(6) = "VI" ="MG>4j3.F
NoSeriesRM(7) = "VII" yhZ 2-*pTg
NoSeriesRM(8) = "VIII" d^4!=^HN
NoSeriesRM(9) = "IX" 4W6gKY
NoSeriesRM(10) = "X" "zfy_h
NoSeriesRM(11) = "XI" :0r@o:H
NoSeriesRM(12) = "XII" eP6>a7gc
NoSeriesRM(13) = "XIII" |ML|P\1&V
NoSeriesRM(14) = "XIV" Tk)y*y
NoSeriesRM(15) = "XV" hX8;G!/
NoSeriesRM(16) = "XVI" 1_%3cN.
.^uNzN~
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) RxcX\:
~|riFp=J
If i = vbNo Then po!0j+ r3
Exit Sub x-cg df
End If ZjbMk3Y
OF!(BJL
If Me.chkSuper.Value Then =ayl~"bW
Me.txtStatus.Text = "检查修改所有的上标格式"
. F_pP2A
e_7a9:2e
CheckSuperScript ?bY'J6n.
F@[l&`7
End If *&!&Y*Jzg
64Q{Yu
I
If Me.chkStyle.Value Then _
HGbR/
Me.txtStatus.Text = "设置样式,请稍候...." U",kAQY
DoEvents FK>8(M/
CeateOrModifyStyle dQTJC
%]O
End If o[aRG7C
7h0LR7
S9-
FKjU
c.r]w
ClearDomain p%8y!^g
pFhznH{0
[WuN?H
*IfLoKS'
If Me.chkLIST.Value Then 3(jI
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" 7iT#dpF/A
<\Lii0hi!
ConvertListToOrdinary 4;y*y tY*
End If eWE7>kwh
QrDI$p7;'
p v%`aQ]o{
Dim pType As String, trimpTEXT As String ELPzqBI
If Me.chkNum.Value = True Then Iy'a2@
Me.txtStatus.Text = "转换全角数字形式为半角" wm_xH_{F
ConvertWidth "1", "1" :(E.sT"R
DoEvents rdSkGb
ConvertWidth "2", "2" 5@6F8:x}V
DoEvents vT)FLhH6*
ConvertWidth "3", "3" l 'm!e '7_
DoEvents WQK ~;GV-
ConvertWidth "4", "4" 0.qnbDw_
DoEvents J.35Ad1hM
ConvertWidth "5", "5" Xnpw'<~X
DoEvents v:|_!+g:
ConvertWidth "6", "6" K8daSvc
DoEvents :.J Ad$>P
ConvertWidth "7", "7" PS**d$ S
DoEvents 6;Wns'
ConvertWidth "8", "8" l*^c?lp)
DoEvents CN+[|Mz*p
ConvertWidth "9", "9" h:[%' htz
DoEvents M:rE^El
ConvertWidth "0", "0" f
}P6P>0T
DoEvents wa2?%y_G
ConvertWidth "a", "a" Gg$4O 8
DoEvents c7Jfo
x
V
ConvertWidth "b", "b" tP^2NTs%]
DoEvents J4"?D9T3G
ConvertWidth "c", "c" lXjhT
DoEvents S8 .1%sw
ConvertWidth "d", "d" LB$#]
Z
DoEvents E:(DidSE@
ConvertWidth "e", "e"
n Hz Xp:"
DoEvents c<fl6o)
ConvertWidth "f", "f" f@rR2xZoQ
DoEvents tFn_{fCc>
ConvertWidth "g", "g" "w7wd5h
DoEvents M8(N9)N
ConvertWidth "h", "h" [`2V!rU
DoEvents t}w<xe
ConvertWidth "i", "i" 9bwG3jn4?
DoEvents lf-1;6nyk"
ConvertWidth "j", "j" e#BxlC
DoEvents #?u#=]
ConvertWidth "k", "k" epXvk
&
DoEvents clyZD`*
ConvertWidth "l", "l" 0w<vc}
{t
DoEvents eaB6e@]@
ConvertWidth "m", "m" h&}z@
DoEvents fAYp\k
ConvertWidth "n", "n" ]O]6O%.ao
ConvertWidth "o", "o" OiI29
ConvertWidth "p", "p" L.X"wIs^
ConvertWidth "q", "q" ';'gKX!9V
ConvertWidth "r", "r" *sz:c3{_
ConvertWidth "s", "s" 21_sg f?
ConvertWidth "t", "t" 1L3+KD~
ConvertWidth "u", "u" V(wm?Cc]
ConvertWidth "v", "v" %0&59q]LM
ConvertWidth "w", "w" @|
N{EI
ConvertWidth "x", "x" yzWVUqtXm
ConvertWidth "y", "y" M-7^\wXTA
ConvertWidth "z", "z" QN)E
PS:y
ConvertWidth "A", "A" '3Ro`p{
ConvertWidth "B", "B" B:oE&Ahh{
ConvertWidth "C", "C" ^Q,-4\ec
ConvertWidth "D", "D"
+7E&IK
ConvertWidth "E", "E" #:[^T,YD0
ConvertWidth "F", "F" [`(W(0U%
ConvertWidth "G", "G" m9Xauk$(
ConvertWidth "H", "H" x`n7D
ConvertWidth "I", "I" #l 7(WG
ConvertWidth "J", "J" As"%
u
ConvertWidth "K", "K" Op<,e{[]
ConvertWidth "L", "L" &Zy%
Zz
ConvertWidth "M", "M" DsX+/)d
ConvertWidth "N", "N" e>J.r("f
ConvertWidth "O", "O" s`#g<_ {X
ConvertWidth "P", "P" ZW>iq M^9
ConvertWidth "Q", "Q" E/Of
kL*\
ConvertWidth "R", "R" o&-D[|E|
ConvertWidth "S", "S" 8GlRO4yd
ConvertWidth "T", "T" 7G':h0i8
ConvertWidth "U", "U" r?7tI0
ConvertWidth "V", "V" efN5(9*9R
ConvertWidth "W", "W" _O#R,Y2#
ConvertWidth "X", "X" y8%QS*
ConvertWidth "Y", "Y" zPm|$d
ConvertWidth "Z", "Z" Yc^;?n`x
ConvertWidth "^l", "^p" vLI'Z)\
ConvertWidth "(", "(" M,w5F5
ConvertWidth ")", ")" Xnc?oT+
grVPu! B;
End If ;x,yGb`
c'md)nD2M
With ActiveDocument BMi5F?Q'G
Dim tbl As Table L+K,Y:D!W
For Each tbl In .Tables "vvv@sYxi
tbl.Rows.Alignment = wdAlignRowCenter ;r?s7b/>
tbl.Range.Font.NameFarEast = "楷体" yo^M>^P\N
tbl.Range.Font.NameAscii = "Times New Roman" 40=*Ul U-
tbl.Range.Font.Size = 10.5 Jo'~oZ$
Next &a8%j+j
Set tbl = Nothing 7/e25LS!`U
End With 03Uj0.Z|7
=W[M=_0u
<]Btx;}
With ActiveDocument )kIZmQ|f1
OjWg>v\v
For i = 1 To .TablesOfContents.Count Bi-x
gq'z
.TablesOfContents(i).Delete 1 EL#T&
Next [[s^rC<d
pddumbp
#n_t5 O[
,,8'29yEq
paraTotal = .Paragraphs.Count adY ,Nz
paraCounter = 1 o#u
hPUZ
tZ>'tE
LastTitle0No = 0 ;
.+
C
LastTitle1No = 0 jI/#NCKE
LastTitle2No = 0 H"NBjVRU%
LastTitle3No = 0 t9~Y
?
LastTitle4No = 0 }y>/#]X
LastTableNo = 0 =C#22xqQ.
LastFigureNo = 0 #KUNZW
fL(_V/p^
Dim Sec As Long WU\Bs2
weH;,e*r
Sec = InputBox("正文从第一节开始?", "节设置", 6) l3N '@GO
If Sec = 0 Then _J&IL!S2
Exit Sub \%}w7J;
End If yRy^'E~
^UmhSxQ##
k = 0 W
%<,GV
Do While (paraCounter < paraTotal) And bContinue \ v2-}jU(
k = k + 1 v`&>m'
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then g|Xjw Ti8$
Exit Do 0d/
f4
End If s{uSU1lQn
paraCounter = paraCounter + 1 AGhr(\j
If k Mod 20 = 0 Then U+G8Hs/y
Me.lbCounter.Caption = paraCounter sW]>#e
DoEvents O-
(gkE
End If W4#E&8g%
Loop dnzZ\t>U
K?@x'q1
Ju-#F@38
Do While (paraCounter < paraTotal) And bContinue O[+\` 63F=
w!r.MWE
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) ;iA$
yw:
ShapeHeight = 0 eWOZC(I*z
ShapeWidth = 0 L'HO"EZFj
Ug#EAV<m
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth nTv^][
@Zzg^1Ilpu
Select Case ParaType Z6
fR2A~Q[
Case "【】表格内容" ?>Bt|[p:s)
.Paragraphs(paraCounter).Style = "QLNU表格内容" bQ`2ll*(
Case "章" @yNCWa~N
LastTitle0No = LastTitle0No + 1 3[UaK`/1C
'新一章开始,复位其下属标题编号 (j&7`9<5
LastTitle1No = 0 1VA%xOURh
LastTitle2No = 0 \2 Yo*jE}
LastTitle3No = 0 jO.c>C[?
LastTitle4No = 0 nmw#4yHYy:
V~7Oa2'#B
k = Val(ttNo) AzMX~cd
If k = 0 Then '非数字编号章节 7V%b!R}
If ttNo <> NoSeries1(LastTitle0No) Then U
!b~vrr^
rText = "第" & NoSeries1(LastTitle0No) & ttString 0ZJrK\K;
Me.ErrMsg.AddItem "章节编号错误:" & ParaText D\Fu4Eg
End If 09 vm5|
Else k r5'E#
If Val(ttNo) <> LastTitle0No Then 8vx#QU8E/
rText = "第" & LastTitle0No & ttString yRWZ/,9x
Me.ErrMsg.AddItem "章节编号错误:" & ParaText .h-k*F0Ga)
End If byHXRA
)39
Iuve~ugO
End If Y;=GM:*H
04c`7[
'章段落设置 DD'RSV5]
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 H2{&da@D5
.Paragraphs(paraCounter).Style = "QLNU章节" lm8<0*;,
.Paragraphs(paraCounter).Range.Select $Yj4&Two<
Selection.EndKey unit:=wdLine \Icd>>)*
tc = Replace(rText, vbCr, "") !DBaC%TGC
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False Wb#ON|.2
Case "一级标题" {#N,&?
[
LastTitle1No = LastTitle1No + 1 ._p^0UxT
'新一级标题开始,复位其下属标题编号 u}-)ywX
LastTitle2No = 0 ua!RwSo
LastTitle3No = 0 2,r jy|R`
LastTitle4No = 0 /6FPiASbS
<z QUa
If ttNo <> NoSeries1(LastTitle1No) Then &; [0.:;
rText = NoSeries1(LastTitle1No) & "、" & ttString b\
vL^\bX8
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText YR"IPyj
End If 8bX?HeYrr
W]5
sqtF;6
a?X#G/)
'一级标题段落设置 格式:一、标题内容 mr+8[0
.Paragraphs(paraCounter).Range.Text = rText QV8;c^EZ
.Paragraphs(paraCounter).Style = "QLNU一级标题" vv1W <X0e<
.Paragraphs(paraCounter).Range.Select XZ4H(Cj
Selection.EndKey unit:=wdLine 42Cc`a%U
tc = Replace(rText, vbCr, "") rT'<6]`
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False i9^m;Y)^I
Case "二级标题" r12e26_Ab
LastTitle2No = LastTitle2No + 1 }g"K\x:Z
'新二级标题开始,复位其下属标题编号 pnGDM)H7
LastTitle3No = 0 E9Hyd #A
LastTitle4No = 0 ]#\/1!W
`L
@`l
If ttNo <> NoSeries1(LastTitle2No) Then D
26A%[^O
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString ^ux"<?
ErrMsg.AddItem "二级标题编号错误:" & ParaText /t04}+,e^
End If =c#;
c+a
,-)ww:
'二级标题段落设置 格式:(一)、标题内容 Lf+3nN
.Paragraphs(paraCounter).Range.Text = rText uDMyO<\
.Paragraphs(paraCounter).Style = "QLNU二级标题" "b0!h6$!H
r5Xi2!
.Paragraphs(paraCounter).Range.Select ui&^ m,
Selection.EndKey unit:=wdLine b`^mpB*6R
tc = Replace(rText, vbCr, "") # {~3bgY
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False {^@qfkZz^
i%otvDn1
Case "三级标题"
WYW@%t
LastTitle3No = LastTitle3No + 1 qb PC5v
'新三级标题开始,复位其下属标题编号 Fv3:J~Yf
LastTitle4No = 0 KV|ywcGhT
?m h0^G
If Val(ttNo) <> LastTitle3No Then $+n5l@W
rText = LastTitle3No & ". " & ttString &!?qSi~V
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText yb-/_{Y
6AKT-r.
End If "uU[I,h
'三级标题段落设置 格式:1. 标题内容 oN[#C>#(
.Paragraphs(paraCounter).Range.Text = rText +~?K@n
.Paragraphs(paraCounter).Style = "QLNU三级标题" l)qGG$7$
.Paragraphs(paraCounter).Range.Select ?>iZ){0,
Selection.EndKey unit:=wdLine aFDCVm%U|
tc = Replace(rText, vbCr, "") &P(vm@*
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False 8]&lUMaqVZ
Case "四级标题" |"Fm<