Dim bContinue As Boolean Q140b;Z
`6R.*hq
Dim regEX As New RegExp pCB^\M%*
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 )td?
t.4
MD"a%H#p
Dim LastTitle0String As String, LastTitle0No As Long N5ph70#y3
Dim LastTitle1String As String, LastTitle1No As Long $0kuR!U.N
Dim LastTitle2String As String, LastTitle2No As Long )aV\=a |A
Dim LastTitle3String As String, LastTitle3No As Long +hUS
sR&
Dim LastTitle4String As String, LastTitle4No As Long gs xT
Dim LastTitle5String As String, LastTitle5No As Long }NH\Q$ IU
Dim LastTabelString As String, LastTableNo As Long rE&`G[(b
Dim LastFigureString As String, LastFigureNo As Long X0QY:?
Q|gw\.]$&[
Dim strSeperator As String D.!ay>o0#
_f"HUKGN
Sub ConvertWidth(fTEXT As String, rText As String) g':/hlQ
Selection.Find.ClearFormatting P!6v0ezN
Selection.Find.Replacement.ClearFormatting %^
`b)
Selection.Find.Wrap = wdFindContinue `:aml+
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText *A^j>lV
DoEvents n+sV$*wvS
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True ^|b ]E
End Sub 31y>/*}
3Y;<Q>roT
Sub ClearDomain() iXF iFsb
With Selection.Find jfLkp>2E'
.ClearFormatting i)@IV]]6yL
.Replacement.ClearFormatting TO,XN\{y
.Wrap = wdFindContinue fZq_]1(/uP
Me.txtStatus.Text = "清除所有域代码" bOB<m4
DoEvents gv6}GE
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False "k;j@
End With
eX{:
&Do
End Sub vU4Gw4
Bql5=p
Private Sub cmdCheck_Click() \zdY$3z
bContinue = True zL^`r)H
Dim NoSeries1(1 To 16) As String ~o<+tL
Dim NoSeries2(1 To 16) As String rXIFCt8J
Dim NoSeries5(1 To 16) As String ~BUzyc%
Dim NoSeriesRM(1 To 16) As String {?!0<0
Dim paraTotal As Long, ParaText As String *y}<7R
Dim ttString As String, ttNo As String W[$GB_A)
'aN`z3T
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long 3d1$w
:
\{>+!`w
Me.txtStatus.Visible = True Q5ZZ4`K!
Me.lbParaType.Visible = True HsF8$C$z
Me.cmdCheck.Enabled = False q7z;b A
F6L}n-p5
(plsL
>V01
%fLd
#Epx'$9
Dim ParaType As String, rText As String \*wQ%_N5
%',bCd{QW
Selection.WholeStory k@[P\(
a3b
Selection.NoProofing = True #`g..3ey
Fm{/&U^
tm1 = Now -(Zi
EgYM][:UU
ActiveWindow.View.Type = wdNormalView @|=JXSr!KY
'\,|B
x8Q
NoSeries1(1) = "一" LH:M`\(DL1
NoSeries1(2) = "二" <FkoWN
NoSeries1(3) = "三" !1X^lFf;~
NoSeries1(4) = "四" EMTAl;P
NoSeries1(5) = "五" u|G&CV#r
NoSeries1(6) = "六" A89n^@
NoSeries1(7) = "七" FX->_}kL=
NoSeries1(8) = "八" XEUy,>mR
NoSeries1(9) = "九" Ej[:!L
NoSeries1(10) = "十" i"B q*b@
NoSeries1(11) = "十一" 9Kpzj43
NoSeries1(12) = "十二" v^;p]_c~2
NoSeries1(13) = "十三" Mnv2tnU]
NoSeries1(14) = "十四" J{69iQ
NoSeries1(15) = "十五" }k{h^!fV
NoSeries1(16) = "十六" |}?o=bO
hja;d1yH
NoSeries2(1) = "㈠" -&7\do<
NoSeries2(2) = "㈡" &'mq).I2
NoSeries2(3) = "㈢" 'XbrO|%
NoSeries2(4) = "㈣" K3; lst>4
NoSeries2(5) = "㈤" !{WIN%O
NoSeries2(6) = "㈥" K> rZJ[a
NoSeries2(7) = "㈦" doX8Tq
NoSeries2(8) = "㈧" K1_]ne)
NoSeries2(9) = "㈨" 7\T~KYb?
NoSeries2(10) = "㈩" San=E@3}v!
pxuZ=<
NoSeries5(1) = "①" Uo~-^w}
NoSeries5(1) = "②" ]N& Y25oT5
NoSeries5(3) = "③" z{>p<)h
NoSeries5(4) = "④"
L@&(>
NoSeries5(5) = "⑤" 5n1aRA1
NoSeries5(6) = "⑥" c; MF
NoSeries5(7) = "⑦" 3Ilf
lXb
NoSeries5(8) = "⑧" sOf;I]E|
NoSeries5(9) = "⑨" &*e(
NoSeries5(10) = "⑩" h1A/:/_M6
id" -eMwp
qH8d3?1XO
NoSeriesRM(1) = "I" $:4*?8K2
NoSeriesRM(2) = "II" +L]$M)*0&
NoSeriesRM(3) = "III" ZaZm$.s n
NoSeriesRM(4) = "IV" Jc3Z1 Tt
NoSeriesRM(5) = "V" @[2Go}VF
NoSeriesRM(6) = "VI" 46(=*iT&V
NoSeriesRM(7) = "VII" d3IMQ_k
NoSeriesRM(8) = "VIII" {9,!XiF.:
NoSeriesRM(9) = "IX" p`PBPlUn
NoSeriesRM(10) = "X" liuw!
NoSeriesRM(11) = "XI" `pTCK9
NoSeriesRM(12) = "XII" R.Uwf
NoSeriesRM(13) = "XIII" AeZ__X
NoSeriesRM(14) = "XIV" W ZAkp|R
NoSeriesRM(15) = "XV" Y30T>5
NoSeriesRM(16) = "XVI" y8!#G-d5
kp$w)%2JW
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) @:ojt$
k$NNpv&;d
If i = vbNo Then k^%Kw(/
Exit Sub b@>MA
End If y-1!@|l0:6
`w;8xD(
If Me.chkSuper.Value Then )5j1;A:gr
Me.txtStatus.Text = "检查修改所有的上标格式" v90)G8|q
nYvx[
zq?^
CheckSuperScript K:cZq3F
{\
P`-'C
End If y$Y*%D^w
f ecV[
If Me.chkStyle.Value Then Twi7g3}/jB
Me.txtStatus.Text = "设置样式,请稍候...." VJf|r#2
DoEvents qs|{
CeateOrModifyStyle =dp(+7Va
End If !EuqJjh
\\D(St
%77X/%.Y
e Lj1
ClearDomain ?RMOy$L
I\8F.J1_
W>HGB
nF)XZB0F
If Me.chkLIST.Value Then Ed>Dhy6\r
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" q!y6K*
GdlzpBl
ConvertListToOrdinary !#[=,'Y
End If O^L#(8bC
O,c}T7A'?w
;/79tlwq
Dim pType As String, trimpTEXT As String
sx]kH$
If Me.chkNum.Value = True Then yPmo@aw]1
Me.txtStatus.Text = "转换全角数字形式为半角" )o;oOPT!
ConvertWidth "1", "1" [#3*R_#8R
DoEvents 5j{jbo=!
ConvertWidth "2", "2" X%sMna)
DoEvents \I[f@D-J
ConvertWidth "3", "3" C
-:lM1
DoEvents *URBx"5XZ
ConvertWidth "4", "4" q; n
DoEvents #J):N
ConvertWidth "5", "5" RP9jZRDbZ
DoEvents gR]NH
ConvertWidth "6", "6" )
u(Gf*t
DoEvents JHvawFBN<u
ConvertWidth "7", "7" aQTISX;
DoEvents :ot^bAyt|
ConvertWidth "8", "8" !,0%ZG}]7
DoEvents K!cLEG!G
ConvertWidth "9", "9" e*Gt%'
DoEvents qx;8Hq(E[
ConvertWidth "0", "0" vUNmN2pRJ
DoEvents ]}za
ConvertWidth "a", "a" zQ=c6xvm8
DoEvents m8:9Uv
ConvertWidth "b", "b" /E32^o|,>
DoEvents kgZiyPcw
ConvertWidth "c", "c" "B34+fOur
DoEvents zF([{5r[!)
ConvertWidth "d", "d" N+3]C9 2o
DoEvents iL
Iv<VK/d
ConvertWidth "e", "e" ?r}'0dW
DoEvents #86=[*Dr
ConvertWidth "f", "f" ER'zjI>t@
DoEvents bZKlQ<sI
ConvertWidth "g", "g" F3Y/Miw
DoEvents h't!
1u
ConvertWidth "h", "h" h@H8oZ[
DoEvents -V_iv/fmM
ConvertWidth "i", "i" j]X$7
DoEvents |ler\"Eu
ConvertWidth "j", "j" p7{%0
DoEvents )/vse5EG+
ConvertWidth "k", "k" .m^L,;+2
DoEvents xk/osbKn
ConvertWidth "l", "l" er44s^$
DoEvents {p
R4+g
ConvertWidth "m", "m"
{}A1[Y|
DoEvents 1v
M'yr$
ConvertWidth "n", "n" <5t2 +D]]}
ConvertWidth "o", "o" CwL8-z0 Jn
ConvertWidth "p", "p" pOKs VS%fT
ConvertWidth "q", "q" ?\.DG`Zxc
ConvertWidth "r", "r" +bhR[V{0g
ConvertWidth "s", "s" PCkQ hR
ConvertWidth "t", "t" K
K_
ConvertWidth "u", "u" q[
-Y
XO
ConvertWidth "v", "v" 6oA2"!u^w
ConvertWidth "w", "w" oj'a%mx
ConvertWidth "x", "x" ,'%wadOo
ConvertWidth "y", "y"
<}
BuU!
ConvertWidth "z", "z" KccI Yn~
ConvertWidth "A", "A" QO;OeMQv%
ConvertWidth "B", "B" 7/># yR
ConvertWidth "C", "C"
4Y/kf%]]A
ConvertWidth "D", "D" :5DL&,,Q3
ConvertWidth "E", "E" jY|fP!?[
ConvertWidth "F", "F" = 9K5f#;e
ConvertWidth "G", "G" \v]esIP5R'
ConvertWidth "H", "H" .I#ss66h
ConvertWidth "I", "I" 5IJm_oy
ConvertWidth "J", "J" iS@+qWo1
ConvertWidth "K", "K" +~{Honj[
ConvertWidth "L", "L" }Tz<fd/
ConvertWidth "M", "M" |3SM
ConvertWidth "N", "N" u6lcl}'
ConvertWidth "O", "O" d&x #9ka
ConvertWidth "P", "P" 9ZVzIv(
ConvertWidth "Q", "Q"
=K:)%Qh
ConvertWidth "R", "R" d H ;
ConvertWidth "S", "S" ,g~Iup
ConvertWidth "T", "T" pG-9H3[f#
ConvertWidth "U", "U" "R5! V
V
ConvertWidth "V", "V" m~;}8ObQE
ConvertWidth "W", "W" J4l\
ConvertWidth "X", "X" .gP}/dj
ConvertWidth "Y", "Y" "WfVZBWG$
ConvertWidth "Z", "Z" ri?k}XnhX
ConvertWidth "^l", "^p" U1y8Y/
ConvertWidth "(", "(" eJ"je@vvrK
ConvertWidth ")", ")" M!D&a)\
9V0@!M8S
End If gbvMS*KQz
xro%AM
With ActiveDocument ENhKuX
Dim tbl As Table ,VYUQE>\
For Each tbl In .Tables u$%;03hJ
tbl.Rows.Alignment = wdAlignRowCenter w40 -K5wt>
tbl.Range.Font.NameFarEast = "楷体" ~^ <1k-
tbl.Range.Font.NameAscii = "Times New Roman" Wq"5-U;:w
tbl.Range.Font.Size = 10.5 \ y}!yrQ
Next $eU oFa5A
Set tbl = Nothing \nbGdka
End With O}Mu_edM
7E]qP
5
,CED%
With ActiveDocument Pz77\DpFi
=Y]'wb
For i = 1 To .TablesOfContents.Count P~
^VLnw
.TablesOfContents(i).Delete ;RUod .x
Next S9mcThcZ
WV?3DzeR
r
Y#^C
sn.0`Stt
paraTotal = .Paragraphs.Count }c?W|#y`.o
paraCounter = 1 R[vA%G
=&,<Co1 hF
LastTitle0No = 0 S"Z.M _
LastTitle1No = 0 7mBH#Q)
LastTitle2No = 0 eR|u']Em>T
LastTitle3No = 0 E},^,65
LastTitle4No = 0 E-v#G~
LastTableNo = 0 ;QS(`SK l
LastFigureNo = 0 ];
Z[V
N/V~>UJ0{*
Dim Sec As Long AbA_s I<;
UfxYD
Sec = InputBox("正文从第一节开始?", "节设置", 6) L}hc|(:
If Sec = 0 Then g)`;m%DG6
Exit Sub >X58 zlxk
End If 5==hyIy
NfsF'v
k = 0 WFm\ bZ.
Do While (paraCounter < paraTotal) And bContinue @lhjO>@#I
k = k + 1 {^V9?^?d (
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then Bid+,,
Exit Do 7
/7,55
End If hYSzr-)
paraCounter = paraCounter + 1 :v
Do{My^1
If k Mod 20 = 0 Then [yn\O=%5
Me.lbCounter.Caption = paraCounter ~zO>Q4-k
DoEvents 3[r9v!l
End If b
sM]5^
Loop K*sav?c
|?\J,h
HOSt0IHzty
Do While (paraCounter < paraTotal) And bContinue k"$E|$
rUxjm\
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) bD:[r))#e
ShapeHeight = 0 GC3WB4iY@U
ShapeWidth = 0 s,|"s|P
&$NYZ3?9
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth e anR$I;Yj
|)[I$]L
Select Case ParaType |x+g5~$
Case "【】表格内容" VOkSR
6
.Paragraphs(paraCounter).Style = "QLNU表格内容" kb~;s-$O`s
Case "章" NjH`
AMGBT
LastTitle0No = LastTitle0No + 1 ;^f ;<
'新一章开始,复位其下属标题编号 n1
LastTitle1No = 0
t#N@0kIX.
LastTitle2No = 0 );!IGcgF
LastTitle3No = 0 CwdeW.A"j
LastTitle4No = 0 I(Gl8F\c~
8_=MP[(H
k = Val(ttNo) Qk[
YF
If k = 0 Then '非数字编号章节 H[ o > "@4
If ttNo <> NoSeries1(LastTitle0No) Then LM2S%._cj;
rText = "第" & NoSeries1(LastTitle0No) & ttString (,XbxDfM
Me.ErrMsg.AddItem "章节编号错误:" & ParaText nmWo:ox4;(
End If N/x]-$fl
Else
g5@P
If Val(ttNo) <> LastTitle0No Then k%Wj+\93f
rText = "第" & LastTitle0No & ttString 5D6 ,B
Me.ErrMsg.AddItem "章节编号错误:" & ParaText e$l*s/"0t
End If -PiakX
_)XZ;Q
End If &G$K.q
iY;>LJmp
'章段落设置 `)TuZP_)
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 @aC9O9|~
.Paragraphs(paraCounter).Style = "QLNU章节" mz m{p(.
.Paragraphs(paraCounter).Range.Select !e?2
x@J
Selection.EndKey unit:=wdLine ZGsI\3S
tc = Replace(rText, vbCr, "") $,
vXyZ
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False 0?Bv
zfb
Case "一级标题" {g7~e{2
LastTitle1No = LastTitle1No + 1 59#o+qo4
'新一级标题开始,复位其下属标题编号 *o}7&Hw#9f
LastTitle2No = 0 <X"_S'O
LastTitle3No = 0 :x[SV^fw[
LastTitle4No = 0 xtFGj,N
]9lR:V
sw
If ttNo <> NoSeries1(LastTitle1No) Then H~<w*[uT
rText = NoSeries1(LastTitle1No) & "、" & ttString c1sVdM}|
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText w<SFs#Z
End If yB5JvD ?
E2i'lO\P
'B9q&k%<
'一级标题段落设置 格式:一、标题内容 QruclNW{Bv
.Paragraphs(paraCounter).Range.Text = rText
}'WEqNuE
.Paragraphs(paraCounter).Style = "QLNU一级标题" P<C=9@
`!
.Paragraphs(paraCounter).Range.Select >!3r7LgK
Selection.EndKey unit:=wdLine n%K^G4k^
tc = Replace(rText, vbCr, "") Y{I,ipU.
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False $i|d=D&t
Case "二级标题" z]Ha
E|j}S
LastTitle2No = LastTitle2No + 1 B*OBXN>'P
'新二级标题开始,复位其下属标题编号 pB:/oHV
LastTitle3No = 0 bR'UhPs-8;
LastTitle4No = 0 F S!D
A/sM
?!p>_
If ttNo <> NoSeries1(LastTitle2No) Then oYAHyCkVq
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString V {C{y5
ErrMsg.AddItem "二级标题编号错误:" & ParaText :y1,OR/k
End If
{v}BtZ
xU;/LJ6
'二级标题段落设置 格式:(一)、标题内容 HAmAmEc,
.Paragraphs(paraCounter).Range.Text = rText HB*H%>L{"B
.Paragraphs(paraCounter).Style = "QLNU二级标题" @bF4'M
YLv5[pV
.Paragraphs(paraCounter).Range.Select
Y+nk:9
Selection.EndKey unit:=wdLine C17$qdV/
tc = Replace(rText, vbCr, "") @
D.MpM}~
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False jT*?Z:U
C+%6N@
Case "三级标题" +5"Pm]oRbx
LastTitle3No = LastTitle3No + 1 *X\J[$!
'新三级标题开始,复位其下属标题编号 _^@ >I8ix
LastTitle4No = 0 $!7$0WbC
3W3)%[ 5
If Val(ttNo) <> LastTitle3No Then U2
8frRa
rText = LastTitle3No & ". " & ttString BFswqp:
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText ]XjL""EbC
tLzb*U8'1w
End If -8Q}*Z
'三级标题段落设置 格式:1. 标题内容 2?nEHIUT
.Paragraphs(paraCounter).Range.Text = rText k"F \4M
.Paragraphs(paraCounter).Style = "QLNU三级标题" i9eE/
.
.Paragraphs(paraCounter).Range.Select '1"vwXJ"
Selection.EndKey unit:=wdLine NCivh&HR
tc = Replace(rText, vbCr, "") ^i!I0Q2yd
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False g+]o=@
Case "四级标题" $&X-ay o
LastTitle4No = LastTitle4No + 1 !,9;AMO
-
,FL*Z9wA
If Val(ttNo) <> LastTitle4No Then $ww0$
rText = "(" & LastTitle4No & "). " & ttString ;5tQV%V^Q
ErrMsg.AddItem "四级标题编号错误:" & ParaText xQDWnpFc
'0<9+A#
End If N
oRPvFv
'四级标题段落设置 格式:(1). 标题内容 W|(U}PrC
.Paragraphs(paraCounter).Range.Text = rText D}~uxw;[^
.Paragraphs(paraCounter).Style = "QLNU四级标题" !g4u<7
.Paragraphs(paraCounter).Range.Select ![&9\aH
Selection.EndKey unit:=wdLine ^4Tf6Fw#
tc = Replace(rText, vbCr, "") m[qW)N:w
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False
F% z$^ m-
a: 2ezxP
Case "表格标题" _sK{qQxvM=
LastTableNo = LastTableNo + 1 4SJb\R)XK
|_mN:(3
If ttNo <> CStr(LastTableNo) Then yY_#fJj
rText = "表" & LastTableNo & ". " & ttString zuS4N?t`p
ErrMsg.AddItem "表格编号错误:" & ParaText R1~wzy
`Sal-|[Cv[
End If qFXx/FZ
Gz:ell$
'表格名称段落设置 格式:表1. 表格名称 o[%\W
.Paragraphs(paraCounter).Style = "QLNU表格标题" |f3 :9(p
xe = Replace(rText, vbCr, "") c2wgJH!g
.Paragraphs(paraCounter).Range.Select 6,~]2H'zq
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 s"~3.J
Selection.Range.Text = xe \:Q)X$6
Selection.EndKey >';UF;\5]Q
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False 3(`P x}
^@f.~4P*I
Case "表格首行" +1nzyD_E
.Paragraphs(paraCounter).Style = "QLNU表格首行" n;LjKE
Case "图片标题" .oqe0
$I
LastFigureNo = LastFigureNo + 1 >e!Y 63`
a5?Yh<cJ
If ttNo <> CStr(LastFigureNo) Then 6t4Khiwx
rText = "图" & LastFigureNo & ". " & ttString 0M!GoqaA
ErrMsg.AddItem "表格编号错误:" & ParaText +-NH
4vUg
6z2%/P-'
End If NH<~BC]I
'图片名称段落设置 格式:图1. 图名称 +!mEP
>
.Paragraphs(paraCounter).Range.Text = rText .u:aX$t+
.Paragraphs(paraCounter).Style = "QLNU图片标题" {gb` %J
.Paragraphs(paraCounter).Range.Select Ff1!+P,
Selection.EndKey unit:=wdLine R(f6uO!m
xe = Replace(rText, vbCr, "") ]OV}yD2p
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False {a0yHy$H
Case "正文" ^$s&bH'8
'正文名称段落设置 Xi0fX$-,
.Paragraphs(paraCounter).Style = "QLNU正文" 20/P:;
Case "文献条目" r3dGX
iu
With .Paragraphs(paraCounter) ej,R:}C%`
'.Range.Select 4q\&Mb3
'Selection.ClearFormatting O=}d:yZb!
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” (qzBy \\p
.Style = "QLNU参考文献" [ d`m)MW-
End With -tA_"q'^
Case "图表注解" 2
ZyO
With .Paragraphs(paraCounter) NqM=Nu\
.Range.Font.NameFarEast = "楷体" z) x.6
.Range.Font.NameAscii = "Times New Roman" "KgNMNep
.Range.Font.Size = 9 '小5号字 ;_#<a*f
v8K`cijSS
.Alignment = wdAlignParagraphCenter Sym}#F\s
.LeftIndent = 0 1s.>_
.RightIndent = 0 1 %8JMq\
.FirstLineIndent = 0 4"veq rC
.LineSpacing = 12 JHa\"h
.LineSpacingRule = wdLineSpaceExactly OMAvJzK .
.LineUnitAfter = 0 JnLF61
.LineUnitBefore = 0 o ~M=o:^nH
.OutlineLevel = wdOutlineLevelBodyText sh*/wM
.PageBreakBefore = False \. a 7F4h
.RightIndent = 0 ART0o7B
.WordWrap = True RZ|M;c
.LineUnitAfter = 0.5 ~l}\K10L*
m(`O>zS
End With >D%
Case Else [lGxys)J
'不作处理 <c$rfjM+JU
End Select iKu4s
}/QtIY#I
'含有inlineshape的段落处理 Aw&0R" {
If ShapeHeight > 30 Then
'Pxq>Os
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 z"-oD*ICw
End If z9E*1B+
g3f;JB
If (ShapeWidth + ShapeHeight) > 150 Then JCci*F#r
.Paragraphs(paraCounter).Style = "QLNU图片段落" og&-P=4O
End If zKT4j1h
MlR]+]
'段落计数器递 pKU(4&
BxX
paraCounter = paraCounter + 1 J,J6bfR/
Me.lbCounter.Caption = "当前检测段落:" & paraCounter 0:JNkXZ:
Me.txtStatus.Text = ParaText EiVVVmm!
DoEvents a n0n8l
Loop intl?&wC
End With Q/0oe())
*U-:2uf
msg = "" iK!FVKi}
Vfw
H:
For i = 0 To Me.ErrMsg.ListCount - 1 \h?6/@3ob
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) 3vdFO: j
Next O8~RfB
l{*Ko~g
-$$mr U
0O a&vx
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg tX6_n%/L
Me.cmdCheck.Enabled = True kH`?^^_yJ
Me.txtStatus.Visible = True 0U8'dYf
Me.lbParaType.Visible = False MT6"b
/ ;+Mz*
bContinue = False dZX;k0
End Sub biV NZdA
Oh%p1$H
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) &Q*
7
Dim pTEXT As String <[K3Prf C
qkqtPbQ 7
pTEXT = ChKRange.Text wVs"+4l<
Dus!Ki~8(t
ParaType = "其它" A4(k<<xjE
TitleString = pTEXT ]Y@_ 2`
TitleNo = "N/A" Mh
MXn;VKj
b,X+*hRt
shpCounter = ChKRange.InlineShapes.Count \BX9Wn*)a
If shpCounter <> 0 Then }<zbx*!
MaxShpHeight = 0: TotalShpWidth = 0 7Ah
For i = 1 To shpCounter Tn9Fg7<
k = ChKRange.InlineShapes(i).Height )Y6\"-M[
l = ChKRange.InlineShapes(i).Width Bg}l$?S
If k > MaxShpHeight Then bu-6}
T+
MaxShpHeight = k 33&l.[A"!}
End If n6G&c4g<"
TotalShpWidth = TotalShpWidth + l +X`&VO6~
Next eAStpG"*
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then %cBOi_}}~
Exit Sub Tv6y+l
End If
: 76zRF
End If Yr>0Qg],
=~5N/!
'空行 DF
UTQ:N
If Len(pTEXT) <= 2 Then hM[3l1o{|
Exit Sub \01 kK)
End If jib pZ)
eL.WP`Lz
w OOu/Y
'是否为表格中的文字 )+ 'r-AF*
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then E#,\[<pc
ParaType = "表格内容" t+K1ArQc
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) 4sW'p
H
If k = 1 Then d2TIG<
6/
ParaType = "表格首行" UA(4mbz+
End If Uq~b4 X$
Exit Sub 5A<}*T
End If z$Le,+
efE=5%O
'例外情况:脚注 p{:y?0pGN
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then } =Xlac_U
ParaType = "脚注" T8&eaAoo
Exit Sub GFju:8P?
End If Q @[gj:w
OZC
yg/K
'例外情况:尾注 zszmG^W{
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then p5% %k-
ParaType = "尾注"
e<(6x[_
Exit Sub ||ugb6q[6B
End If ;&'r yYrex
hA;Ai:8
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then ZH*h1?\X
ParaType = "页眉页脚" ^qi+Y)dU|
Exit Sub sVGQ
SJJ5
End If 62MQ+H
sPVE_n
}Q@~_3,UJ
With regEX \hn$-'=4
.Global = True uUV"86B_
1;'-$K`}
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" Xvoz4'Gme
If regEX.Test(pTEXT) Then XE&h&v=>
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") bYZU}Kl;(
TitleString = regEX.Replace(pTEXT, "$3") 1z0|uc
TitleNo = regEX.Replace(pTEXT, "$1") >; tE.CJH
ParaType = "章" /DP0K
@%
Exit Sub iSUu3Yv,_m
End If g*`xEb='
gf?N(,
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" 5W$Jxuyqj
If regEX.Test(pTEXT) Then \w"~DuA
ParaType = "一级标题" EJRkFn8XG'
regEX.Execute (pTEXT) 'Ebjn>"
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") zR<fz
TitleString = regEX.Replace(pTEXT, "$3") oz]&=>$1I
TitleNo = regEX.Replace(pTEXT, "$1") }!?RB v'W
Exit Sub q"oNFHYPDs
End If tCm]1ZgRW
;)wk^W
'全角或半角括号中的数字 TD%L`Gk
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" UR9\g(
If regEX.Test(pTEXT) Then @WJ\W `P
ParaType = "二级标题" l}r 9kS
regEX.Execute (pTEXT) ALcPbr
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") ~mwIr
TitleString = regEX.Replace(pTEXT, "$5") 0S9~db
TitleNo = regEX.Replace(pTEXT, "$2") 8!HB$vdw7
Exit Sub ^b}Wl0Fn
End If OhMJt&s9P=
\ q3ui}-9
'阿拉伯数字 1. 2. s~bi#U;dF
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" t\a|Gp W
If regEX.Test(pTEXT) Then ?>iUz.];t
ParaType = "三级标题" S4?WR+:h
regEX.Execute (pTEXT) UO#`Ak
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 wOCAGEg
TitleString = regEX.Replace(pTEXT, "$3") yimK"4!j5A
TitleNo = regEX.Replace(pTEXT, "$1") ,I ][
Exit Sub 0TSB<,9a[
End If +95v=[t#Ut
u~2]$
/U
'全角或半角括号中的阿拉伯数字 BvH?d]%
.Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" 5pC}ZgEa<
If regEX.Test(pTEXT) Then 4=EA3`l
ParaType = "四级标题" N3*1,/,l.
regEX.Execute (pTEXT) ``I[1cC
ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") GNEPb?+T
TitleString = regEX.Replace(pTEXT, "$5") TIt\
TitleNo = regEX.Replace(pTEXT, "$2") U^BM 5b
Exit Sub 0 q1x+
End If 1Lk(G9CoY
T,jb%uPcE
'表格名称 8ICV"8(
.Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" ;<thEWH;Y
If regEX.Test(pTEXT) Then VumM`SH
ParaType = "表格标题" w
W/q#kc
regEX.Execute (pTEXT) iK+Vla`}
ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) }S3 oX$
TitleString = Trim(regEX.Replace(pTEXT, "$3")) c8Ud<M .
TitleNo = Trim(regEX.Replace(pTEXT, "$1")) 8UXRM :Z"
strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换 ^sFO
[cYo
Exit Sub 6/?onEL9_
End If K#AexA
pT3icy!A=
'图片名称 Gi#-TP\
.Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" E/*&'Osq
If regEX.Test(pTEXT) Then V0#Ocq,
ParaType = "图片标题" &xhwOgI