Dim bContinue As Boolean `f\+aD'u
M6
"a
w6
Dim regEX As New RegExp z
Qx6r
.
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 UiH5iZ<r;
;BW9SqlN
Dim LastTitle0String As String, LastTitle0No As Long -E-e!
Dim LastTitle1String As String, LastTitle1No As Long s+6tdBvzs
Dim LastTitle2String As String, LastTitle2No As Long P7
R}oO_n:
Dim LastTitle3String As String, LastTitle3No As Long
].3@ Dk
Dim LastTitle4String As String, LastTitle4No As Long ->5[C0: ]
Dim LastTitle5String As String, LastTitle5No As Long Gw?ueui<
Dim LastTabelString As String, LastTableNo As Long D@`"99z
Dim LastFigureString As String, LastFigureNo As Long k5eTfaxl
/gq\.+'{
Dim strSeperator As String {lN G:o
$(&+NJ$U$
Sub ConvertWidth(fTEXT As String, rText As String) ~otV'= /my
Selection.Find.ClearFormatting H<ZXe!q(nx
Selection.Find.Replacement.ClearFormatting RwDXO
dgu
Selection.Find.Wrap = wdFindContinue c[;=7-+
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText |snWO0iF
DoEvents YAYwrKt
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True o3a%u(
End Sub z?.XVk-
M`QK{$1p
Sub ClearDomain() -\V;Gw8mD
With Selection.Find jYnP)xX
;
.ClearFormatting p9j2jb,qy
.Replacement.ClearFormatting 7nk3^$|
.Wrap = wdFindContinue #hh7fE'9
Me.txtStatus.Text = "清除所有域代码" x(y=.4Yf+
DoEvents t9[%o=N~lD
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False %QFeQ(b/(
End With lCJ/@)
End Sub DUyUA'*4n|
SI:Iv:>
Private Sub cmdCheck_Click() gv/yfiA?
bContinue = True >o!5)\F
Dim NoSeries1(1 To 16) As String N3@gvS
Dim NoSeries2(1 To 16) As String e/F+Tf
Dim NoSeries5(1 To 16) As String /|,:'W%U
Dim NoSeriesRM(1 To 16) As String =[IKwmCX
Dim paraTotal As Long, ParaText As String nv%0EAa#}
Dim ttString As String, ttNo As String `{'h+v`
\bv JZ_
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long nVGWJ3
tS6r4d%~=
Me.txtStatus.Visible = True hpzDQ6-Y
Me.lbParaType.Visible = True c{wob%!>
Me.cmdCheck.Enabled = False Rj~y#m
Vl
0Y'@{
qz.WF8Sy2
7WEoyd
s5u
Dim ParaType As String, rText As String ~
ve
Sbjc8V ut
Selection.WholeStory *KDwl<^A
Selection.NoProofing = True [G7S
R6qC0@*
tm1 = Now '2v$xOh!y
9DaoMOPEI
ActiveWindow.View.Type = wdNormalView AqjEz+TVt
-ei+r#
NoSeries1(1) = "一" ; 8u5
NoSeries1(2) = "二" Z]=9=S|
.4
NoSeries1(3) = "三" c}D>.x|]
NoSeries1(4) = "四" .oz(,$CS"
NoSeries1(5) = "五" &|c] U/_w
NoSeries1(6) = "六" 1L<X+,]@
NoSeries1(7) = "七" js)I%Z
NoSeries1(8) = "八"
W>m#Mz
NoSeries1(9) = "九" !E_RD,_
NoSeries1(10) = "十" G|)fZQ1nS
NoSeries1(11) = "十一" iS}~e{TP/
NoSeries1(12) = "十二" \zV'YeG
NoSeries1(13) = "十三" ?oQAxb&
NoSeries1(14) = "十四" );L
+)UV
NoSeries1(15) = "十五" ;N!W|G
NoSeries1(16) = "十六" 7hfa?Mcz
4/E>k <MA
NoSeries2(1) = "㈠" ^1`T_+#[s
NoSeries2(2) = "㈡" bVYsPS
NoSeries2(3) = "㈢" -SKcS#IF
NoSeries2(4) = "㈣" n/Dk~Q)
NoSeries2(5) = "㈤" A:,R.P>`C
NoSeries2(6) = "㈥" vff`Xh>k(
NoSeries2(7) = "㈦" |5me }!C
NoSeries2(8) = "㈧" 77~l~EX
NoSeries2(9) = "㈨" W Z
^u%Z
NoSeries2(10) = "㈩" onF?;>[
KhPDkD-
NoSeries5(1) = "①" f%c-
NoSeries5(1) = "②" Y\
{&chuF
NoSeries5(3) = "③" ]hlYmT
NoSeries5(4) = "④" @rxfOc0J#
NoSeries5(5) = "⑤" G-W(giF;NO
NoSeries5(6) = "⑥" S")*~)N@
NoSeries5(7) = "⑦" 8AIAv_
g
NoSeries5(8) = "⑧" s]i<D9h
NoSeries5(9) = "⑨" 6Y/TqI[
NoSeries5(10) = "⑩" DWcEl:
jjJ l\Vn
psB9~EU&Q
NoSeriesRM(1) = "I" x<h-F
NoSeriesRM(2) = "II" sr`)l& t?
NoSeriesRM(3) = "III"
`sJv?
NoSeriesRM(4) = "IV" 7K &j
NoSeriesRM(5) = "V" BH^8!7dkT
NoSeriesRM(6) = "VI" -0Q^k\X-
NoSeriesRM(7) = "VII" q=_tjg
NoSeriesRM(8) = "VIII" {iq)[
)n
NoSeriesRM(9) = "IX" bT c'E#
NoSeriesRM(10) = "X" %y R~dt'
NoSeriesRM(11) = "XI" a~O](/+p;
NoSeriesRM(12) = "XII" uqK[p^{
NoSeriesRM(13) = "XIII" y jY}o
NoSeriesRM(14) = "XIV" DK }1T
NoSeriesRM(15) = "XV" JU RJN+)z
NoSeriesRM(16) = "XVI" 21.N
+
H'
99&PY[f:{
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) t$5)6zG
Rb_+C
If i = vbNo Then T.iVY5^<
Exit Sub BV6
U -
End If I)}T4OOc/
R4[dh.lf
If Me.chkSuper.Value Then E/uKzzD9
Me.txtStatus.Text = "检查修改所有的上标格式" Nzel^~
8u bb~ B;
CheckSuperScript +@#k<.yqn
}ygxmb^@Z
End If 6%2\bI.#
H&=3rkX
If Me.chkStyle.Value Then s&Ml1A :
Me.txtStatus.Text = "设置样式,请稍候...." O
-N>
X
DoEvents P>;u S
CeateOrModifyStyle Ol1P
End If 5.FAuzz
vm`\0V
GSW
oSB0P
!-Md+I_
ClearDomain =Ye I,KbA)
k{B;J\`E;
S}XVr?l2O
R*z:+p}oHy
If Me.chkLIST.Value Then $Qq5Fx9kU
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" jGKas I`
F)4;:".zna
ConvertListToOrdinary s14; \
End If \_PD@A9
C4
@"@kbr
_chX
{_Hu-
Dim pType As String, trimpTEXT As String WU<C7
If Me.chkNum.Value = True Then bB"q0{9G-
Me.txtStatus.Text = "转换全角数字形式为半角" .GNl31f0
ConvertWidth "1", "1" p_l.a
DoEvents Gt5'-Hyo
ConvertWidth "2", "2" +*P;Vb6 D
DoEvents
ICXz(?a
ConvertWidth "3", "3" -
]Mp<Y
DoEvents yZ57uz
ConvertWidth "4", "4" lv0}d
DoEvents p/.[cH
ConvertWidth "5", "5" \A/??8cgXs
DoEvents g'{hp:
ConvertWidth "6", "6" ro*$OLc/
DoEvents D}7G|gX1
ConvertWidth "7", "7" p_Y U!j_VE
DoEvents L4H5#?'
ConvertWidth "8", "8" qW'5Zk
DoEvents {_1zIt|
ConvertWidth "9", "9" ?ZlN$h^
DoEvents WbDD9ZS
ConvertWidth "0", "0" 7T-}oNaJA\
DoEvents
*"K7<S[
ConvertWidth "a", "a" L$<(HQQJ8
DoEvents d@,3P)?
ConvertWidth "b", "b" JBvP {5
DoEvents a]8}zSUK
ConvertWidth "c", "c" Y"Y+U`Qt
DoEvents Ncle8=8
ConvertWidth "d", "d" UA$Xa1
DoEvents LFV'
,1+
ConvertWidth "e", "e" ik Pm,ZN
DoEvents ?^W`7H F%0
ConvertWidth "f", "f" NlV,]
$L1T
DoEvents fN{JLp
ConvertWidth "g", "g" xlU:&=|
DoEvents \)mV2r!%
ConvertWidth "h", "h" gCc::[}\Y
DoEvents #Yr/G
NN
ConvertWidth "i", "i" #ysSfM6
DoEvents O^yDb
ConvertWidth "j", "j" g7nqe~
`{
DoEvents !'T,%8']
ConvertWidth "k", "k" Zi~-m]9U
DoEvents SYmiDR
ConvertWidth "l", "l" 3tIno!|
DoEvents /E0/)@pDq
ConvertWidth "m", "m" b<?A
DoEvents 2%zJI"Ic
ConvertWidth "n", "n" qL
h[BR
ConvertWidth "o", "o" VN!+r7w'
ConvertWidth "p", "p" cpg+-Zf%
ConvertWidth "q", "q" u+/1ryp
ConvertWidth "r", "r" >zY~")|R(
ConvertWidth "s", "s" H@!kgaNF
ConvertWidth "t", "t" CPS1b
ConvertWidth "u", "u" Wo8.tu-2
ConvertWidth "v", "v" &[iunJv:eq
ConvertWidth "w", "w" Ng
PY/R>
ConvertWidth "x", "x" NamO5(1C
ConvertWidth "y", "y" @&LtIN#
ConvertWidth "z", "z" (&
t8.7O
ConvertWidth "A", "A" Mk$Pt
ConvertWidth "B", "B" WjsE#9D!of
ConvertWidth "C", "C" @-F[3`HeA
ConvertWidth "D", "D" ;H:+w\?8f$
ConvertWidth "E", "E" +axpIjI'
ConvertWidth "F", "F" O9(6 ?n
ConvertWidth "G", "G" w
UBug
ConvertWidth "H", "H" "=ogO/_Q"
ConvertWidth "I", "I" zM*PN|/%sH
ConvertWidth "J", "J" q&N1| f7
ConvertWidth "K", "K" { WW!P,w
ConvertWidth "L", "L" h|S6LgB
ConvertWidth "M", "M" e#jkp'
ConvertWidth "N", "N" FR9*WI
ConvertWidth "O", "O" ($A0umW1%
ConvertWidth "P", "P" '}eA2Q>BV
ConvertWidth "Q", "Q" <>|/U `
ConvertWidth "R", "R" G0VbW-`O
ConvertWidth "S", "S" U>jLh57
ConvertWidth "T", "T" Zn9ecN
ConvertWidth "U", "U" #+]-}v3
ConvertWidth "V", "V" ~*,e &I
ConvertWidth "W", "W" mbh;oX+
ConvertWidth "X", "X" ss>p
ConvertWidth "Y", "Y" KOM]7%ys1H
ConvertWidth "Z", "Z" <fm0B3i?
ConvertWidth "^l", "^p" #X?#v7i",D
ConvertWidth "(", "(" H(k-jAO,
ConvertWidth ")", ")" C~#ndl
Ij
?g\SF}2
End If 1l*O;J9By
H[KTM 'n
With ActiveDocument a]mPc^h
Dim tbl As Table cKbsf^R[e
For Each tbl In .Tables BavGirCp
tbl.Rows.Alignment = wdAlignRowCenter ??tNMr5{[
tbl.Range.Font.NameFarEast = "楷体" BPkqC >w
tbl.Range.Font.NameAscii = "Times New Roman" Gv uX"J
tbl.Range.Font.Size = 10.5 E A8>{}Z*
Next / %:%la%
Set tbl = Nothing 3om4q2R
End With fPLi8`r
a'm\6AW2)
b`Agb<x"
With ActiveDocument ]t|-
EM&;SQ;C9
For i = 1 To .TablesOfContents.Count A
D/7k3:
.TablesOfContents(i).Delete T nG=X:+=
Next +rA:/!b)Y
)@OKL0t
K!a4
>Du{
Cvf^3~q
paraTotal = .Paragraphs.Count 8rwXbYx
x
paraCounter = 1 G)'(%rl
L=9w
3VXS
LastTitle0No = 0 4RXF.kJ3=
LastTitle1No = 0 2%F!aeX
LastTitle2No = 0 'HdOW[3o
LastTitle3No = 0 3"XS#~l%
LastTitle4No = 0 ek3,ss3
LastTableNo = 0 gcNpA?mC|u
LastFigureNo = 0 A(<"oAe|
s.oh6wz
Dim Sec As Long ;x=r.3OQy
UAi] hUq
Sec = InputBox("正文从第一节开始?", "节设置", 6) @rT}V>2I
If Sec = 0 Then ka$oUB)iQ
Exit Sub |N/Wu9w$
End If A(#4$}!n5
+zup+=0e
k = 0 :n t
\uwh
Do While (paraCounter < paraTotal) And bContinue +W-,74A
k = k + 1 ID1
/N)56
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then |zaYIVE[
Exit Do hi(uL>\
End If I
R<`OA
paraCounter = paraCounter + 1 E:C-k^/[Y
If k Mod 20 = 0 Then n-Qpg
Me.lbCounter.Caption = paraCounter L% cr `<~
DoEvents YPY'[j(p`n
End If )5(Ko<"
Loop OG&X7>'3I{
~^u#Q\KE"
UPI'O %
Do While (paraCounter < paraTotal) And bContinue +@c-:\K%
|Q _]+[
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) V.k2t$@
ShapeHeight = 0 yA#
-}Y|]b
ShapeWidth = 0 r{~@hd'Aj
z8"(Yy7m
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth wK[Xm'QTPJ
RU'
WHk
Select Case ParaType 4H\+vJPM
Case "【】表格内容" Q:4euhz*
.Paragraphs(paraCounter).Style = "QLNU表格内容" J6 VG j=/
Case "章" yF#:*Vz>
LastTitle0No = LastTitle0No + 1
MJ+]\(
'新一章开始,复位其下属标题编号 lx!9KQAM*
LastTitle1No = 0 WKwU:im
LastTitle2No = 0 ~
[4oA$[a|
LastTitle3No = 0 Ao/KB_4f*Q
LastTitle4No = 0 \HsrUZ~
IT~pp_6g
k = Val(ttNo) s[HQq;S
If k = 0 Then '非数字编号章节 0,x<@.pW
If ttNo <> NoSeries1(LastTitle0No) Then b jq1",
rText = "第" & NoSeries1(LastTitle0No) & ttString )K+Tvx3(m
Me.ErrMsg.AddItem "章节编号错误:" & ParaText :',Q6
j( s
End If kj4t![o+
Else 7Vd"AVn}g
If Val(ttNo) <> LastTitle0No Then z2GT
9
rText = "第" & LastTitle0No & ttString 2]f"(X4jp
Me.ErrMsg.AddItem "章节编号错误:" & ParaText 4Nx]*\\
End If ?TXe.h|u
%!;6h^@
End If &oyj8
t LzX L*
'章段落设置 tbP
;iK'
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 -#ta/*TT:
.Paragraphs(paraCounter).Style = "QLNU章节" N))G/m3
.Paragraphs(paraCounter).Range.Select Nhm)bdv]
Selection.EndKey unit:=wdLine [$D4U@mRp
tc = Replace(rText, vbCr, "") aybfBC
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False ]1XJQW@gF
Case "一级标题" 1ukCH\YgU
LastTitle1No = LastTitle1No + 1 =H\ig%%E@
'新一级标题开始,复位其下属标题编号 IO4 8sV }
LastTitle2No = 0 ]_ON\v1
LastTitle3No = 0 Apfs&{Uy
LastTitle4No = 0 34$qV{Y%y
9W[ ~c"Ku
If ttNo <> NoSeries1(LastTitle1No) Then X!w&ib-
rText = NoSeries1(LastTitle1No) & "、" & ttString ;1&7v
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText ?\l@k(w4[x
End If 32N*E,
%HNe"7gk
#el i_Cxe
'一级标题段落设置 格式:一、标题内容 *A,h^
.Paragraphs(paraCounter).Range.Text = rText FLI0C
.Paragraphs(paraCounter).Style = "QLNU一级标题" F9SkEf
]99
.Paragraphs(paraCounter).Range.Select B[I
a8t
Selection.EndKey unit:=wdLine dgIEc]#pH
tc = Replace(rText, vbCr, "") <CJ`A5N
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False )|` #BC
Case "二级标题" u=5~^ 9
LastTitle2No = LastTitle2No + 1 w53+k\.
'新二级标题开始,复位其下属标题编号
#<\A[Po
LastTitle3No = 0 +$YluGEJ
LastTitle4No = 0 *&\fBi]
> $#v\8
If ttNo <> NoSeries1(LastTitle2No) Then u\JYxNj1
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString k7\h- yn{
ErrMsg.AddItem "二级标题编号错误:" & ParaText @sV6g?{tI
End If u{-J?t&`
UUF;Q0X
'二级标题段落设置 格式:(一)、标题内容 =[$zR>o*%
.Paragraphs(paraCounter).Range.Text = rText ]qLro<
.Paragraphs(paraCounter).Style = "QLNU二级标题" ?5> Ep:{+/
o y'GAc/
.Paragraphs(paraCounter).Range.Select .>{.!a
Selection.EndKey unit:=wdLine Y_}DF.>I P
tc = Replace(rText, vbCr, "") laQM*FLg
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False !M[a/7x,p
*{y/ wgX
Case "三级标题" 5V^+;eO
LastTitle3No = LastTitle3No + 1 5ecAev^1-
'新三级标题开始,复位其下属标题编号 PJCRvs|X
LastTitle4No = 0 =nmvG%.hd
}4; \sY
If Val(ttNo) <> LastTitle3No Then i8tH0w/(M
rText = LastTitle3No & ". " & ttString Vf'r6Rf
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText o$=D`B
3%JPJuNVw
End If ?1f(@
'三级标题段落设置 格式:1. 标题内容 KH<f=?b
.Paragraphs(paraCounter).Range.Text = rText n;eK2+}]
.Paragraphs(paraCounter).Style = "QLNU三级标题" 2
P=c1;
.Paragraphs(paraCounter).Range.Select tw`{\kWG
Selection.EndKey unit:=wdLine *)2&gQ&%+
tc = Replace(rText, vbCr, "") 1P'R-I
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False G%V*+Ond
Case "四级标题" #SzCd&hI
LastTitle4No = LastTitle4No + 1
~S],)E1w
BpGK`0H
If Val(ttNo) <> LastTitle4No Then &D|wc4+
rText = "(" & LastTitle4No & "). " & ttString SRixT+E
ErrMsg.AddItem "四级标题编号错误:" & ParaText %e@Jc3
^h :%%\2
End If sKkk+-J4
'四级标题段落设置 格式:(1). 标题内容 t&r-;sH^[
.Paragraphs(paraCounter).Range.Text = rText ?G#T6$E8
.Paragraphs(paraCounter).Style = "QLNU四级标题" )i;o\UU
.Paragraphs(paraCounter).Range.Select L)sCc0fv7k
Selection.EndKey unit:=wdLine /kAu&}
tc = Replace(rText, vbCr, "") \*5_gPj!d
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False m 8Q[+_:$H
AvN\^
&G
Case "表格标题" j>5D4}*]f
LastTableNo = LastTableNo + 1 #^>5,M2
fFHT`"bD:
If ttNo <> CStr(LastTableNo) Then zdwr5k
rText = "表" & LastTableNo & ". " & ttString tWNz:
V
ErrMsg.AddItem "表格编号错误:" & ParaText 2f8Cs$Opb
;34 m!\N5
End If 5jpb`Axj#
B^z3u=ll
'表格名称段落设置 格式:表1. 表格名称 DKjkO5R\
.Paragraphs(paraCounter).Style = "QLNU表格标题" p&:(D=pIu
xe = Replace(rText, vbCr, "") pm*6&,
.Paragraphs(paraCounter).Range.Select Z?vbe}pUM
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 Mpm#a0f
Selection.Range.Text = xe FK$?8Jp
Selection.EndKey 0 ;b%
@_E
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False ZkyH<Aa
.[Z<r>
Case "表格首行" m|RA@sY%`
.Paragraphs(paraCounter).Style = "QLNU表格首行" 4mG?$kCN
Case "图片标题" 9Okb)K95
LastFigureNo = LastFigureNo + 1 \s.c.c*eh;
PuuO2TZ
If ttNo <> CStr(LastFigureNo) Then ~olta\|
rText = "图" & LastFigureNo & ". " & ttString &wlSOC')j
ErrMsg.AddItem "表格编号错误:" & ParaText kO]],Vy`
em87`Hj^lo
End If pM
B~Lt9
'图片名称段落设置 格式:图1. 图名称
6<h?%j(
.Paragraphs(paraCounter).Range.Text = rText i_? S#L]h
.Paragraphs(paraCounter).Style = "QLNU图片标题" llf|d'5Nl
.Paragraphs(paraCounter).Range.Select } #[MV+D
Selection.EndKey unit:=wdLine 2VNMz[W'
xe = Replace(rText, vbCr, "") 03iD(,@
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False ?0Qm
Case "正文" 0<{+M` G/
'正文名称段落设置 &J\V
!uVo
.Paragraphs(paraCounter).Style = "QLNU正文" #8!xIy
Case "文献条目" a-t}L{~
With .Paragraphs(paraCounter) -N')LY
'.Range.Select -m&