Dim bContinue As Boolean n-DVT;y
dg^L=
Dim regEX As New RegExp JgHM?AWg|
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 3"rzb]=
R
iDf,e Kk$'
Dim LastTitle0String As String, LastTitle0No As Long -j&Tc`j_
Dim LastTitle1String As String, LastTitle1No As Long wY"Q o7
Dim LastTitle2String As String, LastTitle2No As Long O@YTAT&d#
Dim LastTitle3String As String, LastTitle3No As Long KoS*0U<g6
Dim LastTitle4String As String, LastTitle4No As Long .; )l
Dim LastTitle5String As String, LastTitle5No As Long bGorH=pb5R
Dim LastTabelString As String, LastTableNo As Long _v*
nlc
Dim LastFigureString As String, LastFigureNo As Long Znetzm=0
$-On~u0g
Dim strSeperator As String %TsPyiYl
^ "\R\COQ
Sub ConvertWidth(fTEXT As String, rText As String) x"~~l
Selection.Find.ClearFormatting Q:$Zy
Selection.Find.Replacement.ClearFormatting f
nI|
Selection.Find.Wrap = wdFindContinue
]
Eh}L
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText IEyL];K
DoEvents F4e:ZExJ
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True +*_5tWAc
End Sub
^ :F.
ApjOj/
Sub ClearDomain() l&}y/t4%
With Selection.Find DS<}@
.ClearFormatting frBX{L
.Replacement.ClearFormatting b"TjGE
.Wrap = wdFindContinue ;U_QvN|
Me.txtStatus.Text = "清除所有域代码" BATG FS&
DoEvents A4ISNM7R[
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False pC_O:f>vJ
End With d:F @a
End Sub 'TAUE{{
6)BR+U
Private Sub cmdCheck_Click() ?-Vjha@BO
bContinue = True Rar"B*b;$
Dim NoSeries1(1 To 16) As String WKSPBT;
Dim NoSeries2(1 To 16) As String +kFxi2L6
Dim NoSeries5(1 To 16) As String b=/curl&
Dim NoSeriesRM(1 To 16) As String ,~?YBLw@c
Dim paraTotal As Long, ParaText As String gkHNRAL
Dim ttString As String, ttNo As String .$#r
V?7
\cCV6A[
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long pFJB'=c
G}9=)
Me.txtStatus.Visible = True w}CmfR
Me.lbParaType.Visible = True c5mZG
7-
Me.cmdCheck.Enabled = False 1 `KN]Nt
xzx$TUL
#Z5}2soA
w;l<[q?_
kCXd
Ghb
Dim ParaType As String, rText As String C{d7J'Avk
l9M0cZ,
Selection.WholeStory I<A6Z&*un
Selection.NoProofing = True Reu*Pe
$U/YR&vcw
tm1 = Now gR@C0
:\=CRaA
ActiveWindow.View.Type = wdNormalView %e@#uxm
QFIL)'K
NoSeries1(1) = "一" r/*=%~*
NoSeries1(2) = "二" !\g+8>
NoSeries1(3) = "三" (#;`"Yu
NoSeries1(4) = "四" xai4pF-?
NoSeries1(5) = "五" :f$x Qr4Qz
NoSeries1(6) = "六" M|] "W
NoSeries1(7) = "七" %sRUh0AL
NoSeries1(8) = "八" kkK
kf
'
NoSeries1(9) = "九" GHmv}
Z
NoSeries1(10) = "十" pBw0"
ff
NoSeries1(11) = "十一" K).n.:vYZ
NoSeries1(12) = "十二" |^9BA-nA
NoSeries1(13) = "十三" ~ Uo)0
NoSeries1(14) = "十四" ]f1
{n
NoSeries1(15) = "十五" rSYi<ku
NoSeries1(16) = "十六" 72,rFYvpK
hxS 6:5Uc
NoSeries2(1) = "㈠" #:d
=)Qj0
NoSeries2(2) = "㈡" \.g\Zib )
NoSeries2(3) = "㈢" K+6e?5t
NoSeries2(4) = "㈣" ;vb8G$
NoSeries2(5) = "㈤" lqb/eN9(t
NoSeries2(6) = "㈥" kQ
NoSeries2(7) = "㈦" G-T0f
NoSeries2(8) = "㈧" ,<2DLp%%D
NoSeries2(9) = "㈨" 'fL"txW
NoSeries2(10) = "㈩" 5K?}}Frrt`
"al`$ %(
NoSeries5(1) = "①" XbQlHfrS
NoSeries5(1) = "②" D0N9Ksq
NoSeries5(3) = "③" o`.R!wm:W
NoSeries5(4) = "④" {f{ZHi|
NoSeries5(5) = "⑤" Q#
EP|
NoSeries5(6) = "⑥" K x~|jq
NoSeries5(7) = "⑦" r `eU~7
NoSeries5(8) = "⑧" J sEa23
NoSeries5(9) = "⑨" $O^v]>h
NoSeries5(10) = "⑩" kD}Y|*]5-5
5 B=^v#m
&
=/
NoSeriesRM(1) = "I" HfLLlH<L`&
NoSeriesRM(2) = "II" wYlf^~#"
NoSeriesRM(3) = "III" 8?FbtBAn
NoSeriesRM(4) = "IV" %K]euEqs
NoSeriesRM(5) = "V" 5cWw7V<m
NoSeriesRM(6) = "VI" gI8Bx ]
NoSeriesRM(7) = "VII" $u/E\l
NoSeriesRM(8) = "VIII" z.rh]Zq
NoSeriesRM(9) = "IX" lKgKtQpi
NoSeriesRM(10) = "X" ci+tdMA
NoSeriesRM(11) = "XI" 1 tR_8lC
NoSeriesRM(12) = "XII" LF0sH)e]
NoSeriesRM(13) = "XIII" S'HnBn
/
NoSeriesRM(14) = "XIV" Zec <m8~
NoSeriesRM(15) = "XV" CwJDmz\tk
NoSeriesRM(16) = "XVI" eW>3XD4
JBnKK
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) R-:fd!3oQ
AO
UL^$&
If i = vbNo Then "4%"&2L
Exit Sub ]
7 _`]7p
End If :EHJ\+kejX
1$*%" 5
a
If Me.chkSuper.Value Then \qUKP"dr
Me.txtStatus.Text = "检查修改所有的上标格式" 7w1wr)qSB
=rR~ `
CheckSuperScript `~X!Ll
8 B**8yg.
End If ZR\VCVH\^
,y%3mR_~
If Me.chkStyle.Value Then
L_w+y
Me.txtStatus.Text = "设置样式,请稍候...." #);[mW{F
DoEvents Iz[@^IUx=
CeateOrModifyStyle c=AOkX3UD
End If vp(;W,ba:|
mYU9
trHV
|!F5.%PY
A0%}v*
ClearDomain g&n )fF
&)oOeRwi].
p^iRPI
BW,mwq
If Me.chkLIST.Value Then 3 R&lqxhg
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" +<
prgP`v
x}twsc`
ConvertListToOrdinary 1xc~`~
End If eX_D/25 $
&x >
B
^V%rag
Dim pType As String, trimpTEXT As String 2[gFkyqe
If Me.chkNum.Value = True Then xTGxvGv8
Me.txtStatus.Text = "转换全角数字形式为半角" _{|D
ConvertWidth "1", "1" ujJI
1I
DoEvents a5G/[[cwTV
ConvertWidth "2", "2" fQP {|+4
DoEvents "YB**Y
ConvertWidth "3", "3" }(<%`G6N
DoEvents Pm$q]A~
ConvertWidth "4", "4" eznypY=
DoEvents (8ht*b.5K
ConvertWidth "5", "5" s{w[b\rA
DoEvents #Mg]GeDJ{
ConvertWidth "6", "6" X=C1/4wU
DoEvents V_Wwrhua
ConvertWidth "7", "7" zB?
V_aT
DoEvents SwU\
q]^|Z
ConvertWidth "8", "8" sN("+ sZ.n
DoEvents 7$r
jlVe
ConvertWidth "9", "9" {Ha8]y
DoEvents -WQ^gcO=7
ConvertWidth "0", "0" }
za[E>z
DoEvents ]QuM<ms
ConvertWidth "a", "a" <40rYr$/J
DoEvents Z/ Tm)Xd
ConvertWidth "b", "b" IuZ) [*W
DoEvents wKH ::!
ConvertWidth "c", "c" ^GBe)~MT
DoEvents 2y%,p{="
ConvertWidth "d", "d" /cZ-tSC)o
DoEvents
l$hJE;n
ConvertWidth "e", "e" 7u[j/l,
DoEvents >Yt/]ta4+
ConvertWidth "f", "f" eh[_~
>w
DoEvents N4*G{g
ConvertWidth "g", "g" XW?b\!@ $
DoEvents a" H WGY
ConvertWidth "h", "h" )a3IQrf=
DoEvents z5bo_Eq
ConvertWidth "i", "i" ~8m=1)A{(
DoEvents /CTc7.OYt
ConvertWidth "j", "j" Cg616hyut
DoEvents (5Sivw*mP
ConvertWidth "k", "k" r",]Voibd
DoEvents R1Ye<R!Q
ConvertWidth "l", "l" 6DZ),F,M
DoEvents Z`&
4SH=j
ConvertWidth "m", "m" d(:3
DoEvents kPjd_8z2n
ConvertWidth "n", "n" -8N|xQ378
ConvertWidth "o", "o" p!/[K6u
ConvertWidth "p", "p" r_YIpnJ
ConvertWidth "q", "q" <A9y9|>o
ConvertWidth "r", "r" 45&8weXO:'
ConvertWidth "s", "s" w{dIFvQ"$
ConvertWidth "t", "t" y ?G_y
ConvertWidth "u", "u" >q7BVF6V|
ConvertWidth "v", "v" .`CZUKG
ConvertWidth "w", "w" `nO71mo
ConvertWidth "x", "x" YJ:3!B>Zo
ConvertWidth "y", "y" dCu'>G\bP
ConvertWidth "z", "z" .ZMW>U>
ConvertWidth "A", "A" I!wX[4p eg
ConvertWidth "B", "B" CDi<<,
ConvertWidth "C", "C" r 6eb}z!i
ConvertWidth "D", "D"
{NJ
fNu
ConvertWidth "E", "E" "KJ%|pg_C
ConvertWidth "F", "F"
8L*GE
ConvertWidth "G", "G" }Yv\0\~'W|
ConvertWidth "H", "H" dSCzx
.c
ConvertWidth "I", "I" VxFOYC>p
ConvertWidth "J", "J" 0 'Vg6E]/
ConvertWidth "K", "K" MV=9!{`
ConvertWidth "L", "L" A^2L~g[^Q
ConvertWidth "M", "M" ESoAzo,u
ConvertWidth "N", "N" ?m
c%.Bt
ConvertWidth "O", "O" B4XZko(
ConvertWidth "P", "P" gDIBnH
ConvertWidth "Q", "Q" mQ}ny (K'
ConvertWidth "R", "R" CB~Q%Q
LG
ConvertWidth "S", "S" kw`WH)+F
ConvertWidth "T", "T" 5b/ojr7
ConvertWidth "U", "U" S^Au#1e
ConvertWidth "V", "V" k0Ek:MjJr
ConvertWidth "W", "W" U=8@@yE
ConvertWidth "X", "X" c)&>$S8*
ConvertWidth "Y", "Y" B-d(@7,1
ConvertWidth "Z", "Z" 4'p=p#o
ConvertWidth "^l", "^p" RwVaZJe)l
ConvertWidth "(", "(" R4Rb73o
ConvertWidth ")", ")" *;|`E(
:SV>+EDY
End If VYw%01#
ouHu8)q'r
With ActiveDocument {7MjP+\
Dim tbl As Table FecktD=
For Each tbl In .Tables *1@:'rJ
tbl.Rows.Alignment = wdAlignRowCenter ^h&I H|
tbl.Range.Font.NameFarEast = "楷体" j6(?D*x
tbl.Range.Font.NameAscii = "Times New Roman" C!C|\$)-
tbl.Range.Font.Size = 10.5 ~ 7)A"t
Next 1qi@uYDug
Set tbl = Nothing
Yav2q3
End With pb0E@C/R
d1joVUYE
)~jqW=d
2
With ActiveDocument 8q
)=
vEQ<A<[Z
For i = 1 To .TablesOfContents.Count 71C42=AU
.TablesOfContents(i).Delete ?GBkqQ
Next [ $fJRR
E0oU$IB
hO[3 Z^X
~L7:2weV[
paraTotal = .Paragraphs.Count N -w(e
paraCounter = 1 a ,7&"
3/JyUh?
LastTitle0No = 0 /+e~E;3bO
LastTitle1No = 0 Iak0 [6Ey
LastTitle2No = 0 NcCvm#
LastTitle3No = 0 gK|R =J
LastTitle4No = 0 8e0."o.6
LastTableNo = 0 2l5KJlfj>k
LastFigureNo = 0 B}d.#G+_$x
htP|3 B
Dim Sec As Long 7<9L?F2
D5?phyC[Z
Sec = InputBox("正文从第一节开始?", "节设置", 6) FEz>[#eOX
If Sec = 0 Then
[Vf}NF
Exit Sub Lhh;2r/?78
End If ^zEE6i
F>gmj'-^
k = 0 Q)af|GW$
Do While (paraCounter < paraTotal) And bContinue eo^/c+FG
k = k + 1
tZ2e!<C
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then OlD`uA
Exit Do oPKXZU(c
End If YDmWN#
paraCounter = paraCounter + 1 U/;]zdP.K
If k Mod 20 = 0 Then 0@Kkl$O>mb
Me.lbCounter.Caption = paraCounter j<"nO(
DoEvents `Pc3?~>0HH
End If %i)B*
9k
Loop ~:_0CKa!
2i|B=D(
Q+i\8RJ
Do While (paraCounter < paraTotal) And bContinue 9N[EZhW
=8=!Yc(>
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) xv7"WFb
ShapeHeight = 0 l2hG$idC
ShapeWidth = 0 2=ztKfsBhE
;7Oi! BC
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth 5jq=_mHt
+\# Fd
Select Case ParaType Kt#,
]]
Case "【】表格内容" SK$Vk[c]
.Paragraphs(paraCounter).Style = "QLNU表格内容"
z&4~x!-_
Case "章" 2>em0{e
LastTitle0No = LastTitle0No + 1 x?D/.vrOY
'新一章开始,复位其下属标题编号 Mp\
<cE
LastTitle1No = 0 >NV=LOO
LastTitle2No = 0 T@^]i&
LastTitle3No = 0 )gR=<oa
LastTitle4No = 0 g<\z= H
mCKk*5ws5"
k = Val(ttNo) nws"RcP+Z
If k = 0 Then '非数字编号章节 5(&xNT-n8
If ttNo <> NoSeries1(LastTitle0No) Then 8Z85D
rText = "第" & NoSeries1(LastTitle0No) & ttString A<YsfDa_d
Me.ErrMsg.AddItem "章节编号错误:" & ParaText HI&kP+,y
End If
GJ'spgz
Else -Cid3~mX3
If Val(ttNo) <> LastTitle0No Then 3kmeD".
rText = "第" & LastTitle0No & ttString Kud'p
Z{P
Me.ErrMsg.AddItem "章节编号错误:" & ParaText ^Jp*B;
End If u}6v?!
VF0dE
End If /vE]2Io
!NKmx=I]
'章段落设置 59Sw+iZj
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 pJ,@Y>
.Paragraphs(paraCounter).Style = "QLNU章节" OuIv e>8
.Paragraphs(paraCounter).Range.Select \Btk;ivg
Selection.EndKey unit:=wdLine K
X]oE+:
tc = Replace(rText, vbCr, "") !PUp>(
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False 9h(IUD{8
Case "一级标题" rn.\tDeA
LastTitle1No = LastTitle1No + 1 Gt/4F-Gn
'新一级标题开始,复位其下属标题编号 Y@ F
LastTitle2No = 0 j?n+>/sG,
LastTitle3No = 0 lu UYo
LastTitle4No = 0 h7qBp300
y,+[$u7h
If ttNo <> NoSeries1(LastTitle1No) Then &S74mV
rText = NoSeries1(LastTitle1No) & "、" & ttString AH{^spD{7,
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText >qT '
z$
End If PI5j"u UO
4}KU>9YRA
k5+]SG`]]
'一级标题段落设置 格式:一、标题内容 TF+
l5fv
.Paragraphs(paraCounter).Range.Text = rText j
nwQV
.Paragraphs(paraCounter).Style = "QLNU一级标题" J7-^F)lu-
.Paragraphs(paraCounter).Range.Select '4;6u]d)2
Selection.EndKey unit:=wdLine
l54|Q
tc = Replace(rText, vbCr, "") Gk~l,wV>
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False )"O{D`uX
Case "二级标题" Tvf~P w
LastTitle2No = LastTitle2No + 1 g?qKNY
'新二级标题开始,复位其下属标题编号 ;)!"Ty|
LastTitle3No = 0 e&X>F"z2
LastTitle4No = 0 \Mi#{0f+q
9-jO,l
If ttNo <> NoSeries1(LastTitle2No) Then Zzd/K^gg
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString e9u@`ZC07
ErrMsg.AddItem "二级标题编号错误:" & ParaText w\|Ei(
End If igDyp0t
3/M.0}e
'二级标题段落设置 格式:(一)、标题内容 p*;
Qz
.Paragraphs(paraCounter).Range.Text = rText B94
&elu
.Paragraphs(paraCounter).Style = "QLNU二级标题" %6
=\5>
qg,Nb
.Paragraphs(paraCounter).Range.Select Gg0#H^s( (
Selection.EndKey unit:=wdLine @Z\2* 1y6
tc = Replace(rText, vbCr, "") `hB1b["(
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False
[EHrIn
>R,?hWT
Case "三级标题" ?)tK!'
LastTitle3No = LastTitle3No + 1 YT2'!R
1
'新三级标题开始,复位其下属标题编号 e-D4'lu
LastTitle4No = 0 VTe.M[:
rcbP$tvz
If Val(ttNo) <> LastTitle3No Then _
py2kjA6
rText = LastTitle3No & ". " & ttString Na!za'qk[o
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText heD,&OX
J+<p+(^*v
End If 0|)19LR
'三级标题段落设置 格式:1. 标题内容 @Hr+/52B
.Paragraphs(paraCounter).Range.Text = rText [5 pCL0<c@
.Paragraphs(paraCounter).Style = "QLNU三级标题" V"d=.Hb>
.Paragraphs(paraCounter).Range.Select c8'Cq7
Selection.EndKey unit:=wdLine Ae|P"^kZ
tc = Replace(rText, vbCr, "") &+nRIv S_`
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False dU;upS_-
Case "四级标题" 'UDBV
LastTitle4No = LastTitle4No + 1 H)J
S0
G0
RSWcaATZN
If Val(ttNo) <> LastTitle4No Then m =&j@
rText = "(" & LastTitle4No & "). " & ttString fU*C/ d3
ErrMsg.AddItem "四级标题编号错误:" & ParaText O25mkX
%]Cjhs"v
End If ?9U:g(v
'四级标题段落设置 格式:(1). 标题内容 &y:CW>T$/X
.Paragraphs(paraCounter).Range.Text = rText ]O!s'lC
.Paragraphs(paraCounter).Style = "QLNU四级标题" [wcA.g* F
.Paragraphs(paraCounter).Range.Select
dhR(_
Selection.EndKey unit:=wdLine ~LE[,
I:q
tc = Replace(rText, vbCr, "") Z}cIA87U
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False .L;",E
RLKj
u;u
Case "表格标题" lg/sMF>z\f
LastTableNo = LastTableNo + 1 P%o44|[][
C*wdtEGq
If ttNo <> CStr(LastTableNo) Then A1JzW)B
rText = "表" & LastTableNo & ". " & ttString U|fTb0fB
ErrMsg.AddItem "表格编号错误:" & ParaText Mz|L-62
sj
9D
End If !
sYf<
cNP/<8dq
'表格名称段落设置 格式:表1. 表格名称 y' tRANxQ
.Paragraphs(paraCounter).Style = "QLNU表格标题" s'2Rs^,hN
xe = Replace(rText, vbCr, "") N
<pbO#e
.Paragraphs(paraCounter).Range.Select UxPGv;F
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 lpEDPvD_Vm
Selection.Range.Text = xe l`rC0kJ]
Selection.EndKey
Q&+c.S
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False 8&a_A:h
|6B6?'
Case "表格首行" *PB/iVH%6
.Paragraphs(paraCounter).Style = "QLNU表格首行" M9V-$ _)
Case "图片标题" *)PG-$6X&
LastFigureNo = LastFigureNo + 1 yU`:IMz
.S vyj
If ttNo <> CStr(LastFigureNo) Then {fG|_+tl3o
rText = "图" & LastFigureNo & ". " & ttString F2oJ]th.3
ErrMsg.AddItem "表格编号错误:" & ParaText cgNt_8qC
QN 0r E@a
End If |>sv8/!
'图片名称段落设置 格式:图1. 图名称 $j`<SxJ>
.Paragraphs(paraCounter).Range.Text = rText x1DVD!0 ~{
.Paragraphs(paraCounter).Style = "QLNU图片标题" )W9_qmYd"
.Paragraphs(paraCounter).Range.Select ~u/@rqF
Selection.EndKey unit:=wdLine e(\Q)re5Q
xe = Replace(rText, vbCr, "") NV!4(_~
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False ic~Z_?p
Case "正文" 9A;6x$s
'正文名称段落设置 ^HFo3V
}h
.Paragraphs(paraCounter).Style = "QLNU正文" @P70W<<
Case "文献条目" QAaF@Do
With .Paragraphs(paraCounter) DPPS?~Pq
'.Range.Select A
+!sD5d
'Selection.ClearFormatting %aLCH\e
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” ^]rxhpS
.Style = "QLNU参考文献" <:cpz* G4
End With !`C?nY
Case "图表注解" G\mKCaI8
With .Paragraphs(paraCounter) 7s]Wq6
.Range.Font.NameFarEast = "楷体" iB{xvyR
.Range.Font.NameAscii = "Times New Roman" R@ QQNYU.D
.Range.Font.Size = 9 '小5号字 ^('cbl
UA0tFeH
.Alignment = wdAlignParagraphCenter )<LI%dQ:'l
.LeftIndent = 0 |9]PtgQv7
.RightIndent = 0 4_<
nQ9K
.FirstLineIndent = 0 MuSaK %
.LineSpacing = 12 6:RMU
.LineSpacingRule = wdLineSpaceExactly <$C<Ba?;?
.LineUnitAfter = 0 z_(eQP])
.LineUnitBefore = 0 OWV/kz5'H
.OutlineLevel = wdOutlineLevelBodyText 9A*rE.B+W
.PageBreakBefore = False
8?Wgawx
.RightIndent = 0 k|ip?O
.WordWrap = True 9 }n,@@
.LineUnitAfter = 0.5 {"4<To]z
h3t$>vs2F"
End With 2
zl~>3S
Case Else B "n`|;
r5
'不作处理 "z/V%ZK~f
End Select
/Su)|[/'
l4`^!
'含有inlineshape的段落处理 Sf5]=F-w
If ShapeHeight > 30 Then #J~Xv:LgD
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 Kfd _uXL>
End If QE6El'S
_sm;HH7'*
If (ShapeWidth + ShapeHeight) > 150 Then ,Qo}J@e
(
.Paragraphs(paraCounter).Style = "QLNU图片段落" pU DO7Q]
End If C
>kmIw'
z.59]\;U>
'段落计数器递 UG=I~{L
paraCounter = paraCounter + 1 fv5C!
> t
Me.lbCounter.Caption = "当前检测段落:" & paraCounter AgI >
Me.txtStatus.Text = ParaText FAd``9kRT
DoEvents WJcVQMs
Loop Gy^FrF
End With '8Qw:f h
afy/K'~
msg = "" %L cH>sV
E.#6;HHzN
For i = 0 To Me.ErrMsg.ListCount - 1 }MjQP R
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) ^
+a
Next 1*#bfeoM
/yt7#!tm+
Gx;xj0-"
9mm2V ps;
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg
,]U[W
Me.cmdCheck.Enabled = True ^hysC c
Me.txtStatus.Visible = True h+xA?[c=
Me.lbParaType.Visible = False Ge~,[If+
o#dcD?^
bContinue = False /b+;:
z
End Sub 7%tR&F -u
NY 4C@@"
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) 0&B:\
Dim pTEXT As String Dpj-{q7C
{0fz9"|U
pTEXT = ChKRange.Text y*(_\\
#ZF>WoC@e?
ParaType = "其它" xtsL8-u f
TitleString = pTEXT -=>U
=|
TitleNo = "N/A" 0k.v0a7%
Lv3XYZgW~
shpCounter = ChKRange.InlineShapes.Count mLULd} g/o
If shpCounter <> 0 Then w#<^RKk
MaxShpHeight = 0: TotalShpWidth = 0 Q4CJ]J`
For i = 1 To shpCounter n`QO(pZ6+
k = ChKRange.InlineShapes(i).Height 1 Xa+%n
9
l = ChKRange.InlineShapes(i).Width 1(#RN9
If k > MaxShpHeight Then
`;}H%
MaxShpHeight = k ,$PFI(Whk
End If 6mAB(X^+
TotalShpWidth = TotalShpWidth + l 'oCm.~;_
Next a G@nErdW
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then @jKDj]\
Exit Sub Y^X:vI
End If 5R"2Wd
End If >Pyc[_j
rx}*u3x=
'空行 bu&;-Ynb
If Len(pTEXT) <= 2 Then D8EeZUqU
Exit Sub &!OGIYC(
End If 4D GY6PS
1 M=
fo;6huz
'是否为表格中的文字 qdO[d|d
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then t,1in4sN
ParaType = "表格内容" Vbo5`+NAis
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) zw<
4G[u
If k = 1 Then hLSTSD}
ParaType = "表格首行" [tOuNj:
End If "]w!`^'_
Exit Sub drs-mt8
End If \P5>{2i
h$|3
dz N
'例外情况:脚注 ?^Pq/VtZ
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then }!=gP.Zu^
ParaType = "脚注" QjqBO+
Exit Sub j;G[%gi6{
End If + q
l
H)`@2~Y
'例外情况:尾注
Y[h#hZ
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then
[Ek42%
ParaType = "尾注" J2'W =r_#
Exit Sub hRRkFz/0&
End If htV#5SUx&
_o&94&
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then W?=$V>)
ParaType = "页眉页脚" 2aFT<T0
Exit Sub FQ0KUb}0
End If 7}A5u,.,ht
PaxK^*
/=q.tDH=I
With regEX Pu-p7:99;'
.Global = True UDVf@[[hN
,zD_% ox
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" PqVW'FYe
If regEX.Test(pTEXT) Then CJm.K
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") u7n[f@Eg,%
TitleString = regEX.Replace(pTEXT, "$3") -E}>h[;qZ
TitleNo = regEX.Replace(pTEXT, "$1") T
G_bje
ParaType = "章" d&5c_6oW
Exit Sub }2h't.Z<u
End If xM%`KP.8X
/MhS=gVxM
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" wy YtpW
If regEX.Test(pTEXT) Then Rnzqw,q
ParaType = "一级标题" 6<<'bi
regEX.Execute (pTEXT) %N>\:85?
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") UKOFT6|
TitleString = regEX.Replace(pTEXT, "$3") )tScc*=8
TitleNo = regEX.Replace(pTEXT, "$1") K]ca4Z
Exit Sub !e&rVoA
End If -.^3;-[
rAM*\=
'全角或半角括号中的数字 eQ$e*|}"m
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$"
Ny.*G@&
If regEX.Test(pTEXT) Then Oy:QkV9
ParaType = "二级标题" & &