Dim bContinue As Boolean nLAwo
3
[mwqCW&
Dim regEX As New RegExp \C~6
'
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 UVLS
?1ra
4y}z+4
Dim LastTitle0String As String, LastTitle0No As Long ~]no7O4
Dim LastTitle1String As String, LastTitle1No As Long 6oQ7u90z*
Dim LastTitle2String As String, LastTitle2No As Long =e
1Q>~
Dim LastTitle3String As String, LastTitle3No As Long /L2ZI1v
Dim LastTitle4String As String, LastTitle4No As Long 'LG\]h>+)
Dim LastTitle5String As String, LastTitle5No As Long z-K};l9y
Dim LastTabelString As String, LastTableNo As Long cXt
&k
Dim LastFigureString As String, LastFigureNo As Long 2 {WZ?H93a
QZ(O2!Mg
Dim strSeperator As String !XjZt
y|BHSc3
Sub ConvertWidth(fTEXT As String, rText As String) ?s>_^xfD
Selection.Find.ClearFormatting "LDNkw'
Selection.Find.Replacement.ClearFormatting p q?# X0
Selection.Find.Wrap = wdFindContinue .<%q9Jy#
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText J
?aJa
DoEvents jTqJ(M}L
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True 6'm
ZM=d
End Sub "qC3%9e
rtJ@D2Hj^
Sub ClearDomain() U) xeta+
With Selection.Find xe6V7Wi/Tt
.ClearFormatting e`][zx
.Replacement.ClearFormatting k>MXOUaW.
.Wrap = wdFindContinue xcl;~"c*
Me.txtStatus.Text = "清除所有域代码" Yur}<>`(
DoEvents }8l+Jd3"
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False D1deh
=
End With n%\\1
End Sub ueU "v'h\
c8]%,26.
Private Sub cmdCheck_Click() C$q
-WoTM(
bContinue = True [E<A/_z
Dim NoSeries1(1 To 16) As String A #SO}c
Dim NoSeries2(1 To 16) As String 4e\w C
Dim NoSeries5(1 To 16) As String um]N]cCD`
Dim NoSeriesRM(1 To 16) As String 9wc\~5{li
Dim paraTotal As Long, ParaText As String 4MDVR/Z7
Dim ttString As String, ttNo As String WxD
$k3U
f#AuZ]h
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long jx
W/"Q
`lm '_~=`&
Me.txtStatus.Visible = True SF:{PgGMi
Me.lbParaType.Visible = True E)Qg^DHP/
Me.cmdCheck.Enabled = False %r6_['T
S
kipPEhA
Xo(W\Pes
fh_:ung
xzz@Wc^_
Dim ParaType As String, rText As String RF6]_-
n}b/9
Selection.WholeStory NE`;=26c
Selection.NoProofing = True hiVDN"$$
G,Yctv
tm1 = Now v
@2?X4n
0)PZS>
ActiveWindow.View.Type = wdNormalView B
(h`~pb
S9[Up}`
NoSeries1(1) = "一" gjK: a@{
NoSeries1(2) = "二" q4@+Pi)
NoSeries1(3) = "三" t3}_mJ
NoSeries1(4) = "四" s$9ow<oi]
NoSeries1(5) = "五" l0yflFGr
NoSeries1(6) = "六" \QSD*
NoSeries1(7) = "七" g&B7Y|Es
NoSeries1(8) = "八" S]T71W<i
NoSeries1(9) = "九" c uAp,!
NoSeries1(10) = "十" h$~$a;2cR
NoSeries1(11) = "十一" d_:tiHw$
NoSeries1(12) = "十二" J+0
?
e9
NoSeries1(13) = "十三" SmyJ@.L"
NoSeries1(14) = "十四" gBI?dw
NoSeries1(15) = "十五"
`m_fi
NoSeries1(16) = "十六" u-n$%yDS
+N B5Fd4
NoSeries2(1) = "㈠" LfrjC@
_y
NoSeries2(2) = "㈡"
p+Bvfn
NoSeries2(3) = "㈢" A ?~4Pe
NoSeries2(4) = "㈣" p8F$vx4,
NoSeries2(5) = "㈤" {hO|{vz
NoSeries2(6) = "㈥" z-0
N/?x1
NoSeries2(7) = "㈦" s#0m
NoSeries2(8) = "㈧" @:'E9J06
NoSeries2(9) = "㈨" 70*yx?T V
NoSeries2(10) = "㈩" biV|W@JM
;$!0pxL)s
NoSeries5(1) = "①" "lA$;\&
NoSeries5(1) = "②" FDFVhcr
NoSeries5(3) = "③" <;+QK=f
NoSeries5(4) = "④" u0+<[Ia'q
NoSeries5(5) = "⑤" xXV15%&
NoSeries5(6) = "⑥" RM2fe
Wm
NoSeries5(7) = "⑦" Nt<Ac&6
s
NoSeries5(8) = "⑧" gi@&Mr)fS
NoSeries5(9) = "⑨" zhRF>Y`
NoSeries5(10) = "⑩" WV|9d}5
Z'^.H3YvL
yYk?K<ou
NoSeriesRM(1) = "I" c7?|Tipc
NoSeriesRM(2) = "II" $1 Z3yb^
NoSeriesRM(3) = "III" _mQ~[}y+?
NoSeriesRM(4) = "IV" @*T8>
NoSeriesRM(5) = "V" JP]4* l
NoSeriesRM(6) = "VI" [daR)C
NoSeriesRM(7) = "VII" (|6!pQ7
NoSeriesRM(8) = "VIII" Y\1& Uk
NoSeriesRM(9) = "IX" 86&r;c:
NoSeriesRM(10) = "X" [)[?FG9
NoSeriesRM(11) = "XI" M tDJ1I%
NoSeriesRM(12) = "XII" Q3)[
*61e
NoSeriesRM(13) = "XIII" { iLr$89
NoSeriesRM(14) = "XIV" iu+H+_
NoSeriesRM(15) = "XV" u4=ulgi
NoSeriesRM(16) = "XVI" .$G^c
-Vg0J6x
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) V^9%+L+E5
^=cXL
If i = vbNo Then 'i/"D8
Exit Sub /oM&29 jy
End If h*[sV
@M }`nKXM
If Me.chkSuper.Value Then ,tBc%&.f
Me.txtStatus.Text = "检查修改所有的上标格式" 1*@Q~f:Uk
TSL/zTLDJ
CheckSuperScript k8.,id
\=W t{
End If #eI`l`}
5oD%~Fk l
If Me.chkStyle.Value Then 5=MM^$QG
Me.txtStatus.Text = "设置样式,请稍候...." ,qgR+]?({
DoEvents 2)^T[zHe
CeateOrModifyStyle :SD
3
End If h7]>b'H
OJcI0(G
@yPI$"Ma
p_3VFKq>0
ClearDomain &19z|Id
=8qhK=&]
Z q}Cl'f
]=0D~3o3
If Me.chkLIST.Value Then {\!@k\__
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" c%n%
,R>
x4_FG{AIu
ConvertListToOrdinary '(($dT
End If exm*p/
9JC8OSjJ
BS3BJwf;
f
Dim pType As String, trimpTEXT As String W9SEYkg
If Me.chkNum.Value = True Then V SH64
Me.txtStatus.Text = "转换全角数字形式为半角" pHDPj,lu
ConvertWidth "1", "1" DGAg#jh
DoEvents ?=Z0N&}[
ConvertWidth "2", "2" ~65lDFY/
DoEvents 7XIG ne%v
ConvertWidth "3", "3" '&xRb*
DoEvents \l;H!y[
ConvertWidth "4", "4" f7]C1!]
DoEvents O
>&,h^
ConvertWidth "5", "5" 8\Z/mU*4
DoEvents 2-wvL&pi)
ConvertWidth "6", "6"
+7)/SQM5
DoEvents 5U l=Nv]
ConvertWidth "7", "7" !jJH}o/KW
DoEvents f=MR.\
ConvertWidth "8", "8" lFM'F [-?-
DoEvents TlBu3z'P
ConvertWidth "9", "9" %eqL)pC]
DoEvents Cd'SPaR
ConvertWidth "0", "0" Q#$dp
DoEvents .Wci@5:3
ConvertWidth "a", "a"
}
xzbg
DoEvents 5HbPS%^.
ConvertWidth "b", "b" b9Ix*!Y
DoEvents oakm{I|k}
ConvertWidth "c", "c" {[B` q
DoEvents 1Yv#4t
ConvertWidth "d", "d" Zo(QU5m0
DoEvents b{JxTT}03
ConvertWidth "e", "e" I03
45Hc
DoEvents fm%-wUgj
ConvertWidth "f", "f" laFF/g;sRC
DoEvents 3D7phq>.q
ConvertWidth "g", "g" myY@Wp
DoEvents ! XNTk]!
ConvertWidth "h", "h" <~qhy{hRn
DoEvents _RzcMX
ConvertWidth "i", "i" t3$+;K(
DoEvents |a Ht6F
ConvertWidth "j", "j" ~{O@tt)F
DoEvents !g-19at
ConvertWidth "k", "k" p>]2o\["
DoEvents n1)m(,{
ConvertWidth "l", "l" aib)ItNb
DoEvents R_DZJV O
ConvertWidth "m", "m" QVrMrm+vRv
DoEvents Os7 3u#!'
ConvertWidth "n", "n" V$ss[fX
ConvertWidth "o", "o" F_Mi/pB^`9
ConvertWidth "p", "p" J$<g"z3
ConvertWidth "q", "q" ]O;Rzq{D(
ConvertWidth "r", "r" 3UX} )mW
ConvertWidth "s", "s" al\ R(\p|
ConvertWidth "t", "t" s*pgR=dZZ
ConvertWidth "u", "u" e_pyjaY!s
ConvertWidth "v", "v" S)\%.
~ n
ConvertWidth "w", "w" !tD,phca~
ConvertWidth "x", "x" B\!.o=<h
ConvertWidth "y", "y" C,m
o4
,Q
ConvertWidth "z", "z" ?_c*(2i&^
ConvertWidth "A", "A" 'xp&)gL
ConvertWidth "B", "B" E
:Y
*;
ConvertWidth "C", "C" wq&TU'O
ConvertWidth "D", "D" >;@hA*<
ConvertWidth "E", "E" ~v<,6BS<$Z
ConvertWidth "F", "F" 9Ic~F^
ConvertWidth "G", "G" \=/^H
ConvertWidth "H", "H" #(NkbJ5ka
ConvertWidth "I", "I" s*j0uAq)up
ConvertWidth "J", "J" Z66@@?`
ConvertWidth "K", "K" _-I 0f##.
ConvertWidth "L", "L" 7e-l`]
ConvertWidth "M", "M" @=[SsS
ConvertWidth "N", "N" y/@.T\p
ConvertWidth "O", "O" mM7S9^<UH
ConvertWidth "P", "P" $r=Ud >
ConvertWidth "Q", "Q" ^Ru/7pw5
ConvertWidth "R", "R" G(~"Zt}?
ConvertWidth "S", "S" d6k`=Hlg
ConvertWidth "T", "T" ztS'Dp}q<
ConvertWidth "U", "U" wMB<^zZmv
ConvertWidth "V", "V" G" Fd]'
ConvertWidth "W", "W" sj @'C@oK
ConvertWidth "X", "X" rx#\Dc}
ConvertWidth "Y", "Y" #zcnc$x\
ConvertWidth "Z", "Z" /\9X0a2h|E
ConvertWidth "^l", "^p" q
y8=4~40
ConvertWidth "(", "(" 9WuKW***
ConvertWidth ")", ")" .<`Rq'
"i1~YE
End If _,4f
z(
IZ6[|Ach6
With ActiveDocument l0$
+)FKd
Dim tbl As Table #_bSWV4
For Each tbl In .Tables ;0 VE*
tbl.Rows.Alignment = wdAlignRowCenter u{ .UZTn
tbl.Range.Font.NameFarEast = "楷体" =p)Wxk
tbl.Range.Font.NameAscii = "Times New Roman" ;-d :!*
tbl.Range.Font.Size = 10.5 7MT[fA8^
Next :bgi*pR{
Set tbl = Nothing i'%:
z]hp9
End With \/9uS.Kw
8V(#S:G35
^\<1Y''
With ActiveDocument }0Q6iHX@
x+9aTsZ
For i = 1 To .TablesOfContents.Count n300kpv
.TablesOfContents(i).Delete [Hww3+~+
Next %h%^i
r`L$[C5I
BI] %$r
q
lLT;V2=osX
paraTotal = .Paragraphs.Count Ot]PH[+
paraCounter = 1 {
O*maE"
LPk85E
LastTitle0No = 0 HJ*
W3Mg
LastTitle1No = 0 3RP}lb
LastTitle2No = 0 *5#Y[c
LastTitle3No = 0 b='YCa
LastTitle4No = 0 bg)yliX
LastTableNo = 0 l~M86 h
LastFigureNo = 0 #9Z*.
DP NUm<>
Dim Sec As Long ?8X+)nU@
+'x`rk
Sec = InputBox("正文从第一节开始?", "节设置", 6) f&Bu_r
If Sec = 0 Then 'N0/;k0ax
Exit Sub toEmIa~o6
End If ;
. c]0
Bk1Q.Un
k = 0 {=><@]N
Do While (paraCounter < paraTotal) And bContinue jn#
k = k + 1 9)QvJ87e@7
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then s Hu~;)
Exit Do iCIu]6
End If -_ [Z5%B
paraCounter = paraCounter + 1 7oDr`=q1]r
If k Mod 20 = 0 Then $vdGkz@6
Me.lbCounter.Caption = paraCounter 94F9f^ L
DoEvents >w?O?&Q$
End If fmvv
q1G&
Loop W<3nF5!
mYN|)QVKy
65Ysg}x
Do While (paraCounter < paraTotal) And bContinue #{l+I(M
zTP3JOe(
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) Dg@>d0FW
ShapeHeight = 0 Nze#u;
ShapeWidth = 0 4y+]V~p
Px}#{fkS
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth E#T-2^nD
dQt*/]{q
Select Case ParaType t\]CdH`+
Case "【】表格内容" c)M_&?J!5
.Paragraphs(paraCounter).Style = "QLNU表格内容" XH0R
:+s
Case "章" g4I&3 M
LastTitle0No = LastTitle0No + 1 UGPD5wX?
'新一章开始,复位其下属标题编号 d]k>7.
LastTitle1No = 0 }9Z?UtS
LastTitle2No = 0 ('xu2 ;<
LastTitle3No = 0 kG+CT
LastTitle4No = 0 g/4.^c
M#d_kDMw
k = Val(ttNo) lFD$Mc
If k = 0 Then '非数字编号章节 quU%9m
\S`
If ttNo <> NoSeries1(LastTitle0No) Then \,E;b{PQo6
rText = "第" & NoSeries1(LastTitle0No) & ttString
8KW}XG
Me.ErrMsg.AddItem "章节编号错误:" & ParaText !+T+BFw.
End If (CH F=g
Else k"V3FXC)
If Val(ttNo) <> LastTitle0No Then 2|#3rF
rText = "第" & LastTitle0No & ttString #:3E.=
Me.ErrMsg.AddItem "章节编号错误:" & ParaText g R(*lXm5w
End If .c+RFX@0
5HioxHL
End If BjJ$I^
N@^?J@#V
'章段落设置 <vA^%D<\~
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 >'8.>f
.Paragraphs(paraCounter).Style = "QLNU章节" ){")RrD(
.Paragraphs(paraCounter).Range.Select ;/SM^&Y
Selection.EndKey unit:=wdLine VWmZ|9Ri
tc = Replace(rText, vbCr, "") ^
;$f-e
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False bI=\n)sEz
Case "一级标题" v.,C"^W
LastTitle1No = LastTitle1No + 1 >0SF79-RE
'新一级标题开始,复位其下属标题编号 LC\Ys\/,U
LastTitle2No = 0 'UT 4x9&z
LastTitle3No = 0 Q4Q*5>
LastTitle4No = 0 <Dt,FWWkv'
HlY4%M5q/
If ttNo <> NoSeries1(LastTitle1No) Then lvb0dOmY
rText = NoSeries1(LastTitle1No) & "、" & ttString oHbEHS61
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText /H,!7!6>?
End If z8mR< q%`
#Qy*zU#9
Zi2NgVF
'一级标题段落设置 格式:一、标题内容 z_<
7T4
.Paragraphs(paraCounter).Range.Text = rText QKbX^C
.Paragraphs(paraCounter).Style = "QLNU一级标题" e0*',
.Paragraphs(paraCounter).Range.Select w=3@IW
Selection.EndKey unit:=wdLine :*6tbUp
tc = Replace(rText, vbCr, "") M>0=A
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False {`~{%2ayq7
Case "二级标题" U\
y?P:yy
LastTitle2No = LastTitle2No + 1 $d!Sl
a
'新二级标题开始,复位其下属标题编号 \A5cM\-
LastTitle3No = 0 VD+8
j29
LastTitle4No = 0 +?(2-RBd
n4ce)
N@
If ttNo <> NoSeries1(LastTitle2No) Then yc4mWB~gyU
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString 3U@p
ErrMsg.AddItem "二级标题编号错误:" & ParaText c:51In|~{C
End If lbgnO s,
Jnm{i|6N
'二级标题段落设置 格式:(一)、标题内容 M0 x5s@
.Paragraphs(paraCounter).Range.Text = rText #=b_!~:%
.Paragraphs(paraCounter).Style = "QLNU二级标题" ZqkP# ]+Y'
l0u6nGkh
.Paragraphs(paraCounter).Range.Select rFn;z}J2
Selection.EndKey unit:=wdLine 3b{8c8N^
tc = Replace(rText, vbCr, "") 'sY>(D*CQ
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False Ab-S*|B
Sy'/%[+goJ
Case "三级标题" #*
S0d1
LastTitle3No = LastTitle3No + 1 JHc|.2Oe
'新三级标题开始,复位其下属标题编号 E[6JHBE*r
LastTitle4No = 0 =2)5_/9au
qw0tw2|
If Val(ttNo) <> LastTitle3No Then OcMd'fwO
rText = LastTitle3No & ". " & ttString \y:
0+s/
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText EUe2<G
IJo`O
End If 0;3;Rs
'三级标题段落设置 格式:1. 标题内容 =6j
5,
.Paragraphs(paraCounter).Range.Text = rText C_PXh>H]'
.Paragraphs(paraCounter).Style = "QLNU三级标题" _ts0@Z_:
.Paragraphs(paraCounter).Range.Select J~DP*}~XK
Selection.EndKey unit:=wdLine s+tS4E?
tc = Replace(rText, vbCr, "") RoLUPy9U
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False Nj.(iBmr
Case "四级标题" n@5pS3qZ
LastTitle4No = LastTitle4No + 1 McxJ C<
/^#k/z
If Val(ttNo) <> LastTitle4No Then /[GOs*{zB
rText = "(" & LastTitle4No & "). " & ttString 0d:t$2~C
ErrMsg.AddItem "四级标题编号错误:" & ParaText ,u{d@U^)3@
v(=fV/
End If iX.=8~3
'四级标题段落设置 格式:(1). 标题内容 s>"=6 gb
.Paragraphs(paraCounter).Range.Text = rText M`KrB5a+6
.Paragraphs(paraCounter).Style = "QLNU四级标题" =q^o6{d0"
.Paragraphs(paraCounter).Range.Select YurK@Tq7
Selection.EndKey unit:=wdLine [t<^WmgtxL
tc = Replace(rText, vbCr, "") ,ye>D='
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False LlRvm/
{mw,U[C
Case "表格标题" ,^,Vq]$3
LastTableNo = LastTableNo + 1 ?qw&H /R
-t?S:9[w
If ttNo <> CStr(LastTableNo) Then 27E6S)zv
rText = "表" & LastTableNo & ". " & ttString nPfVZGt
ErrMsg.AddItem "表格编号错误:" & ParaText bI@+Or
/pFg<
End If //e.p6"8h
vf~q%+UqK
'表格名称段落设置 格式:表1. 表格名称 JQsS=m7Et
.Paragraphs(paraCounter).Style = "QLNU表格标题" 8:L%-
xe = Replace(rText, vbCr, "") iyu%o9_0
.Paragraphs(paraCounter).Range.Select ZHICp
L
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 CTR|b}!
Selection.Range.Text = xe v.cB3/$z
Selection.EndKey 3oxQ[. o
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False zScV 9,H1
I\Y/*u
Case "表格首行" &.=d,XKN
.Paragraphs(paraCounter).Style = "QLNU表格首行" ~0|~
Fg
Case "图片标题" %6L!JN
LastFigureNo = LastFigureNo + 1 &EXql']
A
,lcR:@w
If ttNo <> CStr(LastFigureNo) Then _xAdvr' W
rText = "图" & LastFigureNo & ". " & ttString L,waQk / @
ErrMsg.AddItem "表格编号错误:" & ParaText fbwo2qe@K
aAu
upPu
End If !o:RIwS3
'图片名称段落设置 格式:图1. 图名称 1b;Aru~l
.Paragraphs(paraCounter).Range.Text = rText h}z^NX
.Paragraphs(paraCounter).Style = "QLNU图片标题" +tdt>)a
.Paragraphs(paraCounter).Range.Select |j^>6nE
Selection.EndKey unit:=wdLine EZIMp8^
xe = Replace(rText, vbCr, "") 6VQ*z8wLw
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False B HoZ}1_
Case "正文" kdQ=%
'正文名称段落设置 P)^K&7X
.Paragraphs(paraCounter).Style = "QLNU正文" z.]t_`KuF9
Case "文献条目" @6
g
A4h
With .Paragraphs(paraCounter) ?_m;~>C
'.Range.Select VV?+q)
'Selection.ClearFormatting i <bFF03*S
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” nrwb6w
j
.Style = "QLNU参考文献" #g{ZfO[
#
End With ECg/ge2
Case "图表注解" N~\1yQT
With .Paragraphs(paraCounter) *ta|,
.Range.Font.NameFarEast = "楷体" 5^GUuFt5m
.Range.Font.NameAscii = "Times New Roman" a%;$l_wVT:
.Range.Font.Size = 9 '小5号字 x
nWapG
U&w
Ve$
.Alignment = wdAlignParagraphCenter 6rt.ec(
.LeftIndent = 0 !z(POK
.RightIndent = 0 5U3="L
.FirstLineIndent = 0 YqR
MVWcnk
.LineSpacing = 12 3r+vp yu
.LineSpacingRule = wdLineSpaceExactly
HHWB_QaL
.LineUnitAfter = 0 l0tMdsz
.LineUnitBefore = 0 n9t8RcJS:
.OutlineLevel = wdOutlineLevelBodyText iIcO_ZyA
.PageBreakBefore = False \P}~ICZA
.RightIndent = 0 d|j3E
.WordWrap = True 9j:?s;B
.LineUnitAfter = 0.5 "]*0)h_
k-Jj k3
End With I#Iu
:,OT
Case Else 9!_`HE+(XJ
'不作处理
T9RR.
ng
End Select <z %zzc1s
qK.8^{b
'含有inlineshape的段落处理 ~6kEpa
If ShapeHeight > 30 Then H:,rNaz7D^
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 a`q">T%q
End If !(uyqplTk
1xL2f&bG
If (ShapeWidth + ShapeHeight) > 150 Then h+,zfVJu
.Paragraphs(paraCounter).Style = "QLNU图片段落" w;}P<K
End If JT[|l-\zo
:~
zK0v"
'段落计数器递 yew9bn0a=
paraCounter = paraCounter + 1 _s|C0Pt
Me.lbCounter.Caption = "当前检测段落:" & paraCounter d@7
]=P:
Me.txtStatus.Text = ParaText *1ku2e]z
DoEvents V_Wv(G0-\
Loop *vCJ
Tz
End With IA$:r@QNx8
f@[q# }6
msg = "" .FqbX5\p,
}j+ZF'#
For i = 0 To Me.ErrMsg.ListCount - 1 #XQEfa
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) B6MMn.
Next BGLJ>zkq
EtcAU}9
asj^K|.z
+7^%fX;3pW
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg k/j]
*~"
Me.cmdCheck.Enabled = True ~-A5h(
Me.txtStatus.Visible = True ~BrERUk
Me.lbParaType.Visible = False Xv]O1 f cI
$khWu>b
bContinue = False t$]lK6
End Sub 2o6KVQ
s$&:F4=?
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) BtVuI5*h
Dim pTEXT As String p8%x@%k
"CT'^d+
pTEXT = ChKRange.Text E2LpQNvN%g
$MfHA~^
ParaType = "其它" p r(:99~3
TitleString = pTEXT 'F5&f9A
TitleNo = "N/A" h.sH:]Z
B3c
rms['
shpCounter = ChKRange.InlineShapes.Count #)GL%{Oa
If shpCounter <> 0 Then c:>&Bg&,6T
MaxShpHeight = 0: TotalShpWidth = 0 *S:^3{.m=
For i = 1 To shpCounter 8"N<g'Yl,
k = ChKRange.InlineShapes(i).Height lyF~E
l = ChKRange.InlineShapes(i).Width #If}P
$!
If k > MaxShpHeight Then (](:0H
MaxShpHeight = k f lR6^6E
End If TW{.qed8^
TotalShpWidth = TotalShpWidth + l xs.>+(@|;
Next nP0|nPWz#
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then ?\(E+6tpP
Exit Sub < :<E~anH
End If ou6yi;
l%
End If 9y>dDNM\<
XB
F#ILJ
'空行 (05/}PhB`
If Len(pTEXT) <= 2 Then b5No>U) /
Exit Sub |@sUN:G4k
End If pu0IhDMn
Z8z.Xn
k9.@S
'是否为表格中的文字 5^ARC^v
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then 9K@`n:
Rw
ParaType = "表格内容" ['tGc{4
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) i
Ne;h|
If k = 1 Then Cc$!TZq=
ParaType = "表格首行" g.SFl
End If VI74{='=
Exit Sub (6^v`SZ
End If '.c[7zL
Owo2DsT t
'例外情况:脚注 rs]%`"&=
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then :+bQPzL
ParaType = "脚注" w;&J._J
Exit Sub #[qmhU{s
End If :~~}|E
u
5T:e4U&
'例外情况:尾注 8l~]}2LAs
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then #i%it
ParaType = "尾注" _o'ii
VDuD
Exit Sub aiF7\^aw$
End If |
bQKymS
/v
U$62KA
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then i,8h
B(M!
ParaType = "页眉页脚" vCb3Ra~L`
Exit Sub ;;2XLkWu
End If {SY@7G]
K``MS
K;k_MA310
With regEX ]EnB`g(4;
.Global = True \5_+6
4;<?ec(dc
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" r.lH@}i%n
If regEX.Test(pTEXT) Then Z[)t34EY"
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") Oq7M1|{
TitleString = regEX.Replace(pTEXT, "$3") D\}^<HW
TitleNo = regEX.Replace(pTEXT, "$1") 9 ]c2ub7
ParaType = "章" Qo4]_,kR
Exit Sub &-:ZM0Fl
End If WJ<nc+/v:
Yev] Lp
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" Mi%i_T^i
If regEX.Test(pTEXT) Then g"EvMv&
ParaType = "一级标题" MT[V1I{LV
regEX.Execute (pTEXT) %\6|fKB4<
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") Xx~OZ^t&Vn
TitleString = regEX.Replace(pTEXT, "$3")
p^3]Q
TitleNo = regEX.Replace(pTEXT, "$1") fINF;TK
Exit Sub [ %cW ?@
End If Y4_/G4C
6y)TXp
'全角或半角括号中的数字 cV\(Z6u
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" Pv17wUB
If regEX.Test(pTEXT) Then n;@PaE^8=
ParaType = "二级标题" ?T3zA2
regEX.Execute (pTEXT) yH|[K=?S[
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") b^~ keQ
TitleString = regEX.Replace(pTEXT, "$5") }3E@]"<cVR
TitleNo = regEX.Replace(pTEXT, "$2") ^
|z
|kc
Exit Sub 1p
[C5j3
End If !g
#
ai)S:2
'阿拉伯数字 1. 2. {pH{SRM)B
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" 6}6;%{p"Gu
If regEX.Test(pTEXT) Then (0 /,R
ParaType = "三级标题" oM G8?p
regEX.Execute (pTEXT) 5Ev9u),D+v
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 DJVH}w}9_P
TitleString = regEX.Replace(pTEXT, "$3") Dq/_^a/1
TitleNo = regEX.Replace(pTEXT, "$1") H!?Av$h`
Exit Sub
[<