Dim bContinue As Boolean ;pqS|ayl
h*?]A
Dim regEX As New RegExp sY* qf=
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 |=[._VH1
w&
)ApfL
Dim LastTitle0String As String, LastTitle0No As Long S&F;~
Dim LastTitle1String As String, LastTitle1No As Long jP.dQj^j&
Dim LastTitle2String As String, LastTitle2No As Long L0
*f(
H
Dim LastTitle3String As String, LastTitle3No As Long ywj'O
e41
Dim LastTitle4String As String, LastTitle4No As Long v)~!HCG
Dim LastTitle5String As String, LastTitle5No As Long 2p~G][
Dim LastTabelString As String, LastTableNo As Long !?z"d
Dim LastFigureString As String, LastFigureNo As Long 0GQKM~|H
XdE|7=+s
Dim strSeperator As String _
Gkb[H&RZ
or(P?Ro
Sub ConvertWidth(fTEXT As String, rText As String) s14ot80)
Selection.Find.ClearFormatting %>1C($^
Selection.Find.Replacement.ClearFormatting VDlP,Mm*
Selection.Find.Wrap = wdFindContinue YoSBS
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText *t`=1Ioj
DoEvents QwLS
L<.
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True <m*j1|^{t
End Sub rxOvY
F
9O\yIL
Sub ClearDomain() 'OU`$K7n
With Selection.Find |<#yXSi
.ClearFormatting j2oU
1' b
.Replacement.ClearFormatting +A1xqOB
.Wrap = wdFindContinue (Ft#6oK"
Me.txtStatus.Text = "清除所有域代码" PJAM_K;
DoEvents +*G<xW :M
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False m,Mg
End With TV
K*l*
End Sub j07b!j:"\}
-kb;h F}.
Private Sub cmdCheck_Click() ]Aj5 K
bContinue = True cHJ4[x=
Dim NoSeries1(1 To 16) As String C|RC9b
Dim NoSeries2(1 To 16) As String {5(M
Dim NoSeries5(1 To 16) As String |Ew&. fgz
Dim NoSeriesRM(1 To 16) As String mcWN.
Dim paraTotal As Long, ParaText As String :H/Rhx=
Dim ttString As String, ttNo As String !T.yv5ge'
|AS9^w
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long OpmPw4?}
sqO$ka{
Me.txtStatus.Visible = True e!w#{</8Q
Me.lbParaType.Visible = True ZeH=]G4Zv7
Me.cmdCheck.Enabled = False :M.]- +(
>fp_$bjd
%-an\.a.
w}
U'>fj
JykN EMB#
Dim ParaType As String, rText As String }x:}9iphF
HBZtg
Selection.WholeStory b<BkI""b
Selection.NoProofing = True _xM3c&VeG
" ,]A.,
tm1 = Now LAuaowE\v
P
Q"v
ActiveWindow.View.Type = wdNormalView !Hj
7|5
(R!`Z%
NoSeries1(1) = "一" TlC??#
NoSeries1(2) = "二" {*X|)nr
NoSeries1(3) = "三" )!5"\eys
NoSeries1(4) = "四" GK{~n
NoSeries1(5) = "五" fz rH}^
NoSeries1(6) = "六" #66u<FaG
NoSeries1(7) = "七" <-HWs@8#
NoSeries1(8) = "八" =/19 -Y:
NoSeries1(9) = "九" !3\(
d{
NoSeries1(10) = "十" e0
9QaY
NoSeries1(11) = "十一" [jTZxH<
NoSeries1(12) = "十二" ~I@ %ysR
NoSeries1(13) = "十三" ooj^Z%9P
NoSeries1(14) = "十四" {"_V,HmEF+
NoSeries1(15) = "十五" ootkf=
NoSeries1(16) = "十六" G;]zX<2^3
1n#{c5T
NoSeries2(1) = "㈠" -Zqw[2Q4
NoSeries2(2) = "㈡" mzcxq:uZ5
NoSeries2(3) = "㈢" ;pG5zRe
NoSeries2(4) = "㈣" L"}2Y3
NoSeries2(5) = "㈤" \cQ+9e)
NoSeries2(6) = "㈥" ew,g'$drD
NoSeries2(7) = "㈦" `m\ ?gsw7
NoSeries2(8) = "㈧" 3A3WD+[L
NoSeries2(9) = "㈨" P%ZU+ET
NoSeries2(10) = "㈩" @4>?Y=#
=91f26c!~
NoSeries5(1) = "①" `&J=3x
NoSeries5(1) = "②" .8XkB<[wb
NoSeries5(3) = "③" `eKFs0M.
NoSeries5(4) = "④" @1V?94T1
NoSeries5(5) = "⑤" ;W3c|5CE
NoSeries5(6) = "⑥" nM`pnR_
NoSeries5(7) = "⑦" d6A+pa'2
NoSeries5(8) = "⑧" oP:/%
NoSeries5(9) = "⑨" |%j7Es
NoSeries5(10) = "⑩" *enT2Q
&&Otj-n5
ht*;,
[ea
NoSeriesRM(1) = "I" 5oR)
NoSeriesRM(2) = "II" /p)
y!5e
NoSeriesRM(3) = "III" ZBjb f_M:
NoSeriesRM(4) = "IV" :!fU+2$`^(
NoSeriesRM(5) = "V" B]PG
NoSeriesRM(6) = "VI" IW=%2n(<1
NoSeriesRM(7) = "VII" aL/7xa
NoSeriesRM(8) = "VIII" 21hTun"W
NoSeriesRM(9) = "IX" ~uuM0POo
NoSeriesRM(10) = "X" ;JX2ebx
NoSeriesRM(11) = "XI" j^ttTq|l
NoSeriesRM(12) = "XII" A6#v6 iT
NoSeriesRM(13) = "XIII" h YVy 65Ea
NoSeriesRM(14) = "XIV" JR|P]}
NoSeriesRM(15) = "XV" zI_pP?4;.q
NoSeriesRM(16) = "XVI" 6\m'MV`R!
T/q*k)IoR
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) [k=LX+w@
Kk>va->R
If i = vbNo Then c
Exit Sub Q.SqOHeJ
End If =!=DISPo
*-@@t+3
If Me.chkSuper.Value Then *s!T$oc
Me.txtStatus.Text = "检查修改所有的上标格式" sbV_h;<
9)'wgI#
CheckSuperScript BUXlHh%<R
B
Wzo|isv
End If +[#^c3x2
2`V(w[zTr
If Me.chkStyle.Value Then $~r=I[5'
(
Me.txtStatus.Text = "设置样式,请稍候...." B";Dj~y
DoEvents 6t4{aa!L|9
CeateOrModifyStyle 1(/rg
End If jNAboSf2Y
`LJ.NY pP
ki]i[cdk
FwDEYG
ClearDomain _
Uv3glK
#3YYE5cB
KXcE@q9
p9eTrFDy?
If Me.chkLIST.Value Then Zc=#Y
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" Wbi12{C
[-1Yyy1}
ConvertListToOrdinary XpdjWLO]C<
End If <#lNi.?.
Y~UWUF%aK
2l +t-
Dim pType As String, trimpTEXT As String dbfI!4
If Me.chkNum.Value = True Then ?d)FYB
Me.txtStatus.Text = "转换全角数字形式为半角" #ihHAiy3
ConvertWidth "1", "1" qO>A6
DoEvents ^Fwdi#g
ConvertWidth "2", "2" -\g@s@5
DoEvents xgWVxX^)
ConvertWidth "3", "3" NZuylQ
)0
DoEvents LP}j0)n
ConvertWidth "4", "4" #wF6Wx iG
DoEvents Ar`U/ %Cu
ConvertWidth "5", "5" )>!y7/3
DoEvents _p%@x:\
ConvertWidth "6", "6" s+a#x(7{
DoEvents ;z9U_
ConvertWidth "7", "7" ~\Udl
DoEvents 1pTQMf a
ConvertWidth "8", "8" f1I/aR V:+
DoEvents =Ct$!uun
ConvertWidth "9", "9"
bRx}ih
DoEvents u7
{R; QKw
ConvertWidth "0", "0" $lF\FC
DoEvents CMYk
xU
ConvertWidth "a", "a" !8o;~PPVl
DoEvents .;3
7 e
ConvertWidth "b", "b" B{NGrC`5)
DoEvents +P=I4-?eX
ConvertWidth "c", "c" Lasi)e=$<
DoEvents }nWW`:t kx
ConvertWidth "d", "d" )"s(;kU!
DoEvents {Yv5Z.L&(
ConvertWidth "e", "e" #a!qJeWm0
DoEvents O_Z
ConvertWidth "f", "f" BSg3
DoEvents Sp@{5
ConvertWidth "g", "g" IR"=8w#MP
DoEvents ExSy/^4f
ConvertWidth "h", "h" nb(Od,L
DoEvents sB<y(}u
ConvertWidth "i", "i" yj
mNeZ
DoEvents %kiPE<<x
ConvertWidth "j", "j" 3NrWt2?
DoEvents y{QF#&lW
ConvertWidth "k", "k" \C`2z]V%
DoEvents (Uk\O`)m
ConvertWidth "l", "l" A )xfO-
DoEvents 4M>E QF&
ConvertWidth "m", "m" cnM`ywKW
DoEvents 0lpUn74F
ConvertWidth "n", "n" XI5q>cd\Sz
ConvertWidth "o", "o" :Q>{Y
ConvertWidth "p", "p" yu=(m~KX
ConvertWidth "q", "q" (&qjY
I
ConvertWidth "r", "r" Xl
/2-'4
ConvertWidth "s", "s" )IGx3+I
,
ConvertWidth "t", "t" 9S{0vc/2@
ConvertWidth "u", "u" \`YV)"y" ~
ConvertWidth "v", "v" b+THn'2
ConvertWidth "w", "w" Bmi9U
ConvertWidth "x", "x" `^
uX`M/
ConvertWidth "y", "y"
k;vhQ=
ConvertWidth "z", "z" 2%@<A
ConvertWidth "A", "A" qa5 T(:8
ConvertWidth "B", "B" nPjN\Es6
ConvertWidth "C", "C" Ryi%}!
ConvertWidth "D", "D" #mc6;TRZO
ConvertWidth "E", "E" 4z,n:>oH
ConvertWidth "F", "F" 9TV1[+JWe
ConvertWidth "G", "G" v;IuB
ConvertWidth "H", "H" j.UO>1{7
ConvertWidth "I", "I" '];=1loD
ConvertWidth "J", "J" s@|TQ9e |j
ConvertWidth "K", "K" _Zbgmasb
ConvertWidth "L", "L" 0[fqF^HEN
ConvertWidth "M", "M" 'dcO-A:>
ConvertWidth "N", "N" TuzH'F
ConvertWidth "O", "O" $e,'<Jl
ConvertWidth "P", "P" V Rz9;=m
ConvertWidth "Q", "Q" s6_[H
ConvertWidth "R", "R" DZV U!J
ConvertWidth "S", "S" >('Z9<|r
:
ConvertWidth "T", "T" ~tqDh(
ConvertWidth "U", "U" Q5tx\GE
ConvertWidth "V", "V" $~:|Vj5iZ\
ConvertWidth "W", "W" ]PZ\N~T
ConvertWidth "X", "X" O+o_{t\R
ConvertWidth "Y", "Y" \Gy+y`
ConvertWidth "Z", "Z" F vHd`
ConvertWidth "^l", "^p" 8[H)tKf8
ConvertWidth "(", "(" _E
xd:
ConvertWidth ")", ")" PY
W>
]D|Hq4ug
End If ?.,2EC=+
$(;0;!t.
With ActiveDocument x: 2 o$+v3
Dim tbl As Table `6y\.6j
For Each tbl In .Tables 7)y
+QU]
tbl.Rows.Alignment = wdAlignRowCenter Xldz&&@
tbl.Range.Font.NameFarEast = "楷体" G!w?\-
tbl.Range.Font.NameAscii = "Times New Roman" ?4 lDoP{
tbl.Range.Font.Size = 10.5 Eo_;Nc
Next PA>su)N$
Set tbl = Nothing d]Mjr2h
End With /7Ft1f
~9dAoILrl
&(rR)cG
With ActiveDocument G1/
sQ%gf
For i = 1 To .TablesOfContents.Count TXK82qTdf
.TablesOfContents(i).Delete 1#^r5E4
Next M}`G}*
{&.?u1C.\
_u8d`7$*%
(c9!:
paraTotal = .Paragraphs.Count ]nQ(|$rW
paraCounter = 1 Z+C&?K
<k-hRs2d
LastTitle0No = 0 aKC3vR0
LastTitle1No = 0 ri1:q.:I]
LastTitle2No = 0 }B2qtb3
LastTitle3No = 0 ~bLhI
LastTitle4No = 0 [^A>hs*
LastTableNo = 0 gR8vF
LastFigureNo = 0 Mt+ggF.
*\F,?yU
Dim Sec As Long
Wf
kP
;.b^A
Sec = InputBox("正文从第一节开始?", "节设置", 6) *]* D^'
If Sec = 0 Then +AL
(K:
Exit Sub =idZvD
End If y`-5/4
2f.4P]s`T
k = 0 C/A~r
Do While (paraCounter < paraTotal) And bContinue I07_o"3>qr
k = k + 1 JbEQ35r
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then y7Y g$)sL
Exit Do qn~:B7f
End If '@eH)wh@m)
paraCounter = paraCounter + 1 ^ot9Q
If k Mod 20 = 0 Then w1
tg7^(@
Me.lbCounter.Caption = paraCounter k^r-~q+NV#
DoEvents pn4~?Aua0/
End If 5tl uS
Loop $nW^Gqwj]1
Fx' E"d
D^\2a;[AxA
Do While (paraCounter < paraTotal) And bContinue 1U~yu&
'Mm=<Bh
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) doV+u(J~
ShapeHeight = 0 :*s+X$x,<
ShapeWidth = 0 #"aL M6Cfs
$#d.@JWi
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth y,=TB[d#
hS+R/7
Select Case ParaType t+Hx&_pMj
Case "【】表格内容" uM('R;<^
.Paragraphs(paraCounter).Style = "QLNU表格内容" ajALca4
Case "章" ,5t h D
LastTitle0No = LastTitle0No + 1 ^ l9NF
'新一章开始,复位其下属标题编号 HU+zzTgI
LastTitle1No = 0 RaLc}F)9
LastTitle2No = 0 A0 1D-)
LastTitle3No = 0 y`.m'n7>P
LastTitle4No = 0 z+%7
4O"c
n ^_B0Rkv
k = Val(ttNo) U Zc%XZ`"V
If k = 0 Then '非数字编号章节 ?u_O(eg
If ttNo <> NoSeries1(LastTitle0No) Then nV&v@g4Tt
rText = "第" & NoSeries1(LastTitle0No) & ttString 9>HCt*|_8
Me.ErrMsg.AddItem "章节编号错误:" & ParaText z+6%Ya&ls
End If TeWpdUCO
Else -[.A6W
If Val(ttNo) <> LastTitle0No Then P0XVR_TJf
rText = "第" & LastTitle0No & ttString #gY|T|
Me.ErrMsg.AddItem "章节编号错误:" & ParaText 4+15`
End If L\("
HVK./yqy
End If ;B@-RfP
f/RDo4
'章段落设置 :pPn)j$
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 d3K-|
.Paragraphs(paraCounter).Style = "QLNU章节" 9!|+GIjn
.Paragraphs(paraCounter).Range.Select X3,+aL`
Selection.EndKey unit:=wdLine ?tFsSU
tc = Replace(rText, vbCr, "") lT~A~O
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False lM-*{<B
Case "一级标题" HrS
LastTitle1No = LastTitle1No + 1 mL[Y{t#N
'新一级标题开始,复位其下属标题编号 D'3. T{*rH
LastTitle2No = 0
(w{C*iB
LastTitle3No = 0 9V( esveq
LastTitle4No = 0 F otHITw[
1rQKHC:|
If ttNo <> NoSeries1(LastTitle1No) Then Ba /^CS
rText = NoSeries1(LastTitle1No) & "、" & ttString &%`Y>\@f
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText ;
gNoiAxW
End If *q |3QHZ
It3.
ZMI
vzQYI
'一级标题段落设置 格式:一、标题内容
&u7oa
.Paragraphs(paraCounter).Range.Text = rText DX%D8atrr
.Paragraphs(paraCounter).Style = "QLNU一级标题" 5 ]v]^Y'?
.Paragraphs(paraCounter).Range.Select *;yn_zg
Selection.EndKey unit:=wdLine <P4*7:jX
tc = Replace(rText, vbCr, "")
Y+'522er
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False {kp^@
Case "二级标题" Tx\g5rk
LastTitle2No = LastTitle2No + 1 KHJk}]K
'新二级标题开始,复位其下属标题编号 , 1`-u$
LastTitle3No = 0 #Do#e
{=+
LastTitle4No = 0 I`8
jJpG
A
Ig M_l=
If ttNo <> NoSeries1(LastTitle2No) Then Y]>Qu f.!
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString cJ!C=J
ErrMsg.AddItem "二级标题编号错误:" & ParaText UAq%Y8KA
End If qmM%MPv
N"q C-h
'二级标题段落设置 格式:(一)、标题内容 S2*ER
.Paragraphs(paraCounter).Range.Text = rText -C<Ni
.Paragraphs(paraCounter).Style = "QLNU二级标题" KK4"H]!.
+F3`?6UXz
.Paragraphs(paraCounter).Range.Select "[BDa}Il
Selection.EndKey unit:=wdLine nH% 1lD?:
tc = Replace(rText, vbCr, "") FkJX)
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False t?:Q
&i
%1\o
Case "三级标题" Jh)K0>R
LastTitle3No = LastTitle3No + 1 #8[iqvE
'新三级标题开始,复位其下属标题编号 -!b@\=
LastTitle4No = 0 Z-B b,8
K{x FhdW
If Val(ttNo) <> LastTitle3No Then OlF5~VAbfb
rText = LastTitle3No & ". " & ttString 8QNd t
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText EU"J'?
JDy ;Jb
End If O FCA~sR
'三级标题段落设置 格式:1. 标题内容 37QXML
.Paragraphs(paraCounter).Range.Text = rText jJDYl( [
.Paragraphs(paraCounter).Style = "QLNU三级标题" nfbq
J
.Paragraphs(paraCounter).Range.Select lTn~VsoRZ
Selection.EndKey unit:=wdLine wz(D
}N5
tc = Replace(rText, vbCr, "") duk:: |{F
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False DTR/.Nr'K
Case "四级标题" Om=
*b#k
LastTitle4No = LastTitle4No + 1 l`A4)8Y@
`[zd
If Val(ttNo) <> LastTitle4No Then dn)pVti_
rText = "(" & LastTitle4No & "). " & ttString ie%_-
ErrMsg.AddItem "四级标题编号错误:" & ParaText lSk<euCYs
X0"f>.Lg
End If 1_z6O!rx
'四级标题段落设置 格式:(1). 标题内容 3JR1If
.Paragraphs(paraCounter).Range.Text = rText XTOZ]H*^
.Paragraphs(paraCounter).Style = "QLNU四级标题" wu2C!gyBo
.Paragraphs(paraCounter).Range.Select 9x40
Selection.EndKey unit:=wdLine r9d dVD
tc = Replace(rText, vbCr, "") Vdz(\-}ao
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False 3 @7<e~f
mv+K!T6
Case "表格标题" Cq-#|+zr
LastTableNo = LastTableNo + 1 r0 6M.r
@lnM%
If ttNo <> CStr(LastTableNo) Then xFY<
ns
rText = "表" & LastTableNo & ". " & ttString (&a<6k
ErrMsg.AddItem "表格编号错误:" & ParaText Y!tjaL 9D
OnKPD=<
End If bn$}U.m$-
$=-Q]ld&]
'表格名称段落设置 格式:表1. 表格名称 bb^$]lT'
.Paragraphs(paraCounter).Style = "QLNU表格标题" "Nn+Zw43
xe = Replace(rText, vbCr, "") =!cI@TI
.Paragraphs(paraCounter).Range.Select _noQk3N
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 G]- wN7G
Selection.Range.Text = xe j$8i!C
Selection.EndKey f!"Y"g:@E
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False ;y{VdT
^sjL@.'m$N
Case "表格首行" }_{QsPx9
.Paragraphs(paraCounter).Style = "QLNU表格首行" 6b8@6;&LI
Case "图片标题" pt!Q%rXm
LastFigureNo = LastFigureNo + 1 XN=Cq*3}
X)TUKt
If ttNo <> CStr(LastFigureNo) Then }lzQMT
rText = "图" & LastFigureNo & ". " & ttString X;?Z_3I:5
ErrMsg.AddItem "表格编号错误:" & ParaText hIr
$^%
mzX <!
End If k v}<u
'图片名称段落设置 格式:图1. 图名称 b88Zk*
.Paragraphs(paraCounter).Range.Text = rText n_Ka+Y<
.Paragraphs(paraCounter).Style = "QLNU图片标题" 9IRvbE~2
.Paragraphs(paraCounter).Range.Select ]$vJK
Selection.EndKey unit:=wdLine khW9n*
xe = Replace(rText, vbCr, "") qJ|n73yn
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False ,t]qe
Case "正文" n*oa J<o%
'正文名称段落设置 pM i w9}
.Paragraphs(paraCounter).Style = "QLNU正文" *!gj$GK@%
Case "文献条目" <XHS@|
With .Paragraphs(paraCounter) Twj?SV
'.Range.Select #Rkld v'
'Selection.ClearFormatting l^IPN'O@
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” k<M~co;L
.Style = "QLNU参考文献"
(BA2
End With P;dp>jL
Case "图表注解" 7Z;w<b~
With .Paragraphs(paraCounter) T"GuE[?a
.Range.Font.NameFarEast = "楷体" ;Q]j"1c
.Range.Font.NameAscii = "Times New Roman" zTa>MzH1-;
.Range.Font.Size = 9 '小5号字 B!(t<W8cu
L#`9# Q
.Alignment = wdAlignParagraphCenter R "&(Ae?LR
.LeftIndent = 0 s\`Vr;R:|
.RightIndent = 0 Pj!{j)-tS
.FirstLineIndent = 0 2z\4?HJy
.LineSpacing = 12 0KF)+`CC>
.LineSpacingRule = wdLineSpaceExactly G D$jP?
.LineUnitAfter = 0 P~+?:buqc
.LineUnitBefore = 0 <}E^r_NvD
.OutlineLevel = wdOutlineLevelBodyText g1uqsqYt
.PageBreakBefore = False p]zYj >e
.RightIndent = 0 WR
*|kh
.WordWrap = True Hhbf9)
.LineUnitAfter = 0.5 a#0G
mK
/ h6(!-"
End With W].P(A>m
Case Else LxGE<xj|V%
'不作处理 QS~;C&1Hl
End Select E00zf3Jgv'
l}DCK
'含有inlineshape的段落处理 y%H;o?<WX
If ShapeHeight > 30 Then G=8w9-Ww
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 @J~y_J{
End If a9E!2o
+,
J9LS6~
7
If (ShapeWidth + ShapeHeight) > 150 Then ZHshg`I`
.Paragraphs(paraCounter).Style = "QLNU图片段落" LaE;{ jY
End If 8d
w]i1t<
axY-Vj
'段落计数器递 I~R<}volu
paraCounter = paraCounter + 1 {tE/Jv $
Me.lbCounter.Caption = "当前检测段落:" & paraCounter RTSR-<{z
Me.txtStatus.Text = ParaText p0.?R
DoEvents %;0w2W
Loop ~EU[?
End With tH:K6^oR
OU(z};Is6Z
msg = "" 8j,_
X*~NE\
For i = 0 To Me.ErrMsg.ListCount - 1 kCR)k=*
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) -?b@ 6U
Next +fhyw{
JXlFo3<
1q!JpC^
dv0TJ 0%
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg 1>*]jj}
Me.cmdCheck.Enabled = True oPNYCE
Me.txtStatus.Visible = True {zGIQG9
Me.lbParaType.Visible = False ^gFjm~2I
UZdE^Q[
bContinue = False V=|^r?
End Sub xLZQ\2q
2`* %NJ
Sub CheckPara(ByRef ChKRange As Range, ParaType As String, ReplaceTEXT As String, TitleString As String, TitleNo As String, shpCounter As Long, MaxShpHeight As Long, TotalShpWidth As Long) xQ7n$.?y@
Dim pTEXT As String yvxC/Jo
4
r2T?LO0N{
pTEXT = ChKRange.Text tji,by#E/%
T
^a {#B
ParaType = "其它" @"s\eL,r
TitleString = pTEXT mm=Y(G[_%y
TitleNo = "N/A" ;f-|rC_"
'KGY;8<x]
shpCounter = ChKRange.InlineShapes.Count Q:~w;I
If shpCounter <> 0 Then O#7ldF(
MaxShpHeight = 0: TotalShpWidth = 0 -aNTFt~|[
For i = 1 To shpCounter ]tZ5XS
k = ChKRange.InlineShapes(i).Height {K'SOhH4?
l = ChKRange.InlineShapes(i).Width A*pihBo7
If k > MaxShpHeight Then bIm$7a`T
MaxShpHeight = k *eXO?6f%s^
End If bE>3D#V<
TotalShpWidth = TotalShpWidth + l JMOP/]%D
Next |?Q(4(D`*
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then
F!>K8 q
Exit Sub .Qh8I+Q%
End If q
rbF@{
End If YeJ95\jf
G
7)D+],{Y
'空行 +&\TdvNI4
If Len(pTEXT) <= 2 Then 6\,^MI
Exit Sub Za!c=(5
End If Jb-wvNJu
=DxJt7J1
BH0rT})
'是否为表格中的文字 ke>\.|HT}
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then ~~1~ _0?e
ParaType = "表格内容" ~+>M,LfK
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) ~rCnST
If k = 1 Then 8{+~3@T
ParaType = "表格首行" @sKAsn
End If )C2d)(baEJ
Exit Sub vP}K(' (
End If _3p:q.
ioi
'例外情况:脚注 /^[)JbgB
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then @\l>
<R9V
ParaType = "脚注" p2~Q
Exit Sub %Z{
J=
End If QBsDO].J<
CHpDzG>]4
'例外情况:尾注 [/uKo13
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then ,.FTw,<
ParaType = "尾注" l3MbCBX2
Exit Sub lO $M6l
End If 24N,Bo
3
Dlj=$25
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then a`pY&xq::
ParaType = "页眉页脚" 5,AQ~_,'\
Exit Sub HHnabSn}{q
End If <Awx:lw.
Ql*/{#$
xYu~}kMu
With regEX $fKwJFr
.Global = True *vAOUqX`x
C6"!'6 W
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" 3/rvSR!
If regEX.Test(pTEXT) Then 8)POEY4
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") J|FyY)_
TitleString = regEX.Replace(pTEXT, "$3") jPU#{Wo#
TitleNo = regEX.Replace(pTEXT, "$1") Aq'%a)Y2
ParaType = "章" Rg[e~##
Exit Sub /#G"'U/
End If ^}1RDdQ"U
eBAB7r/7
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" u
F*cS&'Z
If regEX.Test(pTEXT) Then S,(@Q~
ParaType = "一级标题" ^YIOS]d>8#
regEX.Execute (pTEXT) 4}LF>_+=
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") Y(SI`Xo[
TitleString = regEX.Replace(pTEXT, "$3") wCt+{Y3T
TitleNo = regEX.Replace(pTEXT, "$1") x>8f#B\Mr
Exit Sub <uTsXv
End If Ok`U*j
peqFa._W
'全角或半角括号中的数字 F[=m|MZb
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" pO+1?c43
If regEX.Test(pTEXT) Then H+5]3>O-$
ParaType = "二级标题" Xi{(1o4%
regEX.Execute (pTEXT)
UiZ61lw
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") f,L
TitleString = regEX.Replace(pTEXT, "$5") _&%!4n#>
TitleNo = regEX.Replace(pTEXT, "$2") UdI>x 4bI
Exit Sub J#x91Jh
End If sId5pY!
omjLQp[%
'阿拉伯数字 1. 2. @J<B^_+Se
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" E7eVg*
Cvi
If regEX.Test(pTEXT) Then *Ra")(RnDK
ParaType = "三级标题" d}o1 j
regEX.Execute (pTEXT) iz^wBQ
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 zRJ
y3/>
TitleString = regEX.Replace(pTEXT, "$3") >A,WXzAK}S
TitleNo = regEX.Replace(pTEXT, "$1") *>'R
R<
Exit Sub E+1j3Q;
End If G>RYQ{O
CLk Ve
'全角或半角括号中的阿拉伯数字 x b0+4w|
.Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" }\0"gM
If regEX.Test(pTEXT) Then ;%Da {
ParaType = "四级标题" xY'g7<})$
regEX.Execute (pTEXT) %xZ.+Ff%
ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") _@OYC<
TitleString = regEX.Replace(pTEXT, "$5") /3TorB~Y
TitleNo = regEX.Replace(pTEXT, "$2") kN$70N7I;
Exit Sub nIi_4=Z
End If xRY5[=97
Fp]8f&l8
'表格名称 kx=AX*I
.Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" 4a @iR2e
If regEX.Test(pTEXT) Then 654%X(:q
ParaType = "表格标题" P~qVr#eU
regEX.Execute (pTEXT) Gj ^bz'2
ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) kTk?[BK
TitleString = Trim(regEX.Replace(pTEXT, "$3")) bp$jD
TitleNo = Trim(regEX.Replace(pTEXT, "$1")) |fI%L9
strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换 V[xy9L[#
Exit Sub :> q?s
End If )[K3p{4
G2^DukK.
'图片名称 j d81E
.Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" =5|5j!i=q
If regEX.Test(pTEXT) Then ~Op1NE
ParaType = "图片标题" rODKM-7+
regEX.Execute (pTEXT) @iP6N
ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3") PjP%,-@1
TitleString = regEX.Replace(pTEXT, "$3") >Qx#2x+
TitleNo = regEX.Replace(pTEXT, "$1") ;p_X7N
Exit Sub u=l(W(9=
End If m5p~>]}fYF
y^A$bTQq
'参考文献 {;}8Z $
.Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})" '[数字]、 L,D>E
If regEX.Test(pTEXT) Then f!J^vDl
ParaType = "文献条目" 8
KkpXaz
'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4") ".0W8=
'TitleNo = regEX.Replace(pTEXT, "[$2] ") `/AzX *`
Exit Sub ,pASjFWi
End If +i>q;=~
YiCDV(prT
prfx = Left(pTEXT, 2) h[8y$.YsC
If prfx = "注:" Or prfx = "注:" Then \fz
j fZ1n
ParaType = "图表注解" =@w:
Exit Sub @iRVY|t/
End If []]3"n
|d 3agfS[n
z )pV
$
ParaType = "正文" `@eH4}L*
"XY?v8*c
End With l =yHx\
End Sub fA8+SaXW%
w?tKL0c
Sub ConvertListToOrdinary() /)I9+s#q9o
Dim st As Paragraph 3-R3Qlr
With ActiveDocument X2uX+}h*tA
For i = .Paragraphs.Count To 1 Step -1 hjG1fgEj
Set st = .Paragraphs(i) 3PA'Uk"5Z
lst = st.Range.ListFormat.ListString >" .qFn g
If lst <> "" Then u7=[~l&L
st.Range.ListFormat.RemoveNumbers R,\
r{@yrz
st.Range.InsertBefore lst & " " LNZ#%R~r
End If O$H150,Q
Next ~ tLR
End With 1;P\mff3Y
Set st = Nothing _5T7A><q<
End Sub *02( J
HIq1/)
Private Sub UserForm_Activate() V"p<A
Me.lbTotal.Caption = "当前文章段落总数:" & ActiveDocument.Paragraphs.Count & " 共" & ActiveDocument.Sections.Count & "节" <C$<