Dim bContinue As Boolean 2DBFY1[Pk
OBM&N
Dim regEX As New RegExp mL s>RR#b
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 K;g6V!U
F
B&l|#e
Dim LastTitle0String As String, LastTitle0No As Long 59_VC('
Dim LastTitle1String As String, LastTitle1No As Long "?
5@j/
e`
Dim LastTitle2String As String, LastTitle2No As Long =\jPnov!
Dim LastTitle3String As String, LastTitle3No As Long Eo<N
Dim LastTitle4String As String, LastTitle4No As Long g3'yqIjQL
Dim LastTitle5String As String, LastTitle5No As Long te3\MSv;O
Dim LastTabelString As String, LastTableNo As Long w4uY/!~k
Dim LastFigureString As String, LastFigureNo As Long 4Z{ r
y[f6J3/
Dim strSeperator As String v`"BXSmp{
a&n}pnEn)
Sub ConvertWidth(fTEXT As String, rText As String) rY=dNK]d
Selection.Find.ClearFormatting #|cr\\2*
Selection.Find.Replacement.ClearFormatting `=W#owAF
Selection.Find.Wrap = wdFindContinue 2cJ3b
0Xx
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText GmN~e*x>p
DoEvents
.Dyxul
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True M ~6k[ew
End Sub BMbZ34^e
H#I%6k*\a
Sub ClearDomain() <;E>1*K}8
With Selection.Find HO8x:2m
.ClearFormatting
{0} Q5
.Replacement.ClearFormatting Oufdi3h
.Wrap = wdFindContinue Z9I
?j1K|!
Me.txtStatus.Text = "清除所有域代码" B}h8c
DoEvents /5R?(-
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False >D$NEO^
End With S\118TpD
End Sub |0N1]Hf
lJ4&kF=t
Private Sub cmdCheck_Click() q9m-d-!)
bContinue = True Jy#2
1
Dim NoSeries1(1 To 16) As String 3%V VG~[
Dim NoSeries2(1 To 16) As String 4
eP-yi
Dim NoSeries5(1 To 16) As String YjeHNPf
Dim NoSeriesRM(1 To 16) As String z]Mu8
Dim paraTotal As Long, ParaText As String p( [FZ
Dim ttString As String, ttNo As String ddeH-Z
`SESj)W(y
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long A|0\ct
IlP@a[:_
Me.txtStatus.Visible = True cD4H@!=a
Me.lbParaType.Visible = True X;p4/ *U
Me.cmdCheck.Enabled = False l:"zYcp%
HN
L;s5gq
')v<MqBr
x4S0C[k
mr#XN&e
Dim ParaType As String, rText As String ]0@
J)Z09
a)M#O\i`
Selection.WholeStory /{\mV(F(
Selection.NoProofing = True JiH
k`e`
vqBT^Q_q;
tm1 = Now ?pp|~A)b
D5fhOq+g
ActiveWindow.View.Type = wdNormalView kF"G {5
%VzCeS9
NoSeries1(1) = "一" P*8DM3':
NoSeries1(2) = "二" JclG*/Wjg4
NoSeries1(3) = "三" *}N
J
NoSeries1(4) = "四" xcu:'7'K[
NoSeries1(5) = "五" ~]lVixr9
NoSeries1(6) = "六" ~f!iz~
NoSeries1(7) = "七"
IWAp
NoSeries1(8) = "八" P'CDV3+
NoSeries1(9) = "九" x5nw/''[2
NoSeries1(10) = "十" %y2i1^
NoSeries1(11) = "十一" <<ifd?
NoSeries1(12) = "十二" 1ml{oqNj
NoSeries1(13) = "十三" 92Df.xI}
NoSeries1(14) = "十四" ,~xX[uB
NoSeries1(15) = "十五" ef(OhIX
NoSeries1(16) = "十六" h*X
u/aOg
tv7A&Z)Rh
NoSeries2(1) = "㈠" ePwoza
NoSeries2(2) = "㈡" 9iQc\@eGd
NoSeries2(3) = "㈢" JlN<w
NoSeries2(4) = "㈣" Ft$tL;
NoSeries2(5) = "㈤" -D30(g{
O
NoSeries2(6) = "㈥" gJI(d6
NoSeries2(7) = "㈦" &H@OLyC
NoSeries2(8) = "㈧" UkXf)
NoSeries2(9) = "㈨" 9^1.nE(R&
NoSeries2(10) = "㈩" "DNiVL.
oSqkAAGz\
NoSeries5(1) = "①" nQ^<h.
NoSeries5(1) = "②" Nm=\~LP90
NoSeries5(3) = "③" tm280
NoSeries5(4) = "④" |
R$/oq
NoSeries5(5) = "⑤" C{Er%
NoSeries5(6) = "⑥" o;
Ma)/P
NoSeries5(7) = "⑦" Wfyap)y
NoSeries5(8) = "⑧" N2S7=`5/T
NoSeries5(9) = "⑨" 3eS
*U`_
NoSeries5(10) = "⑩" q6
Rr?
xs3t~o3y
=L?(mNHT
NoSeriesRM(1) = "I" 92K#xM/
NoSeriesRM(2) = "II" Snf1vH
NoSeriesRM(3) = "III" qx3`5)ef
NoSeriesRM(4) = "IV" aY@st]p
NoSeriesRM(5) = "V" 3a]Omuu|=
NoSeriesRM(6) = "VI" i\u m;\
NoSeriesRM(7) = "VII" ax+P)yz
NoSeriesRM(8) = "VIII" =WP`i29j9}
NoSeriesRM(9) = "IX" V
9i[dF
NoSeriesRM(10) = "X" +oMe\wYR$r
NoSeriesRM(11) = "XI" zkRL'-
NoSeriesRM(12) = "XII" By-A1|4Cp`
NoSeriesRM(13) = "XIII" "~zQN(sR"P
NoSeriesRM(14) = "XIV" d|(@#*{T]
NoSeriesRM(15) = "XV" 1K'.QRZMb9
NoSeriesRM(16) = "XVI" Qk.:b
a8!/V@a
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) 2OJ=Xb1
Yv [j5\:x
If i = vbNo Then 7IH^5r
Exit Sub
^qlfdf
End If 8'X:}O/
%o9;jX
If Me.chkSuper.Value Then A~UDtXN*4
Me.txtStatus.Text = "检查修改所有的上标格式" Yhkn(k2
h,C?%H+/0Q
CheckSuperScript ,k5b,}tN
{:r8X
End If ir*T,O
2J
%4rPkPAtrp
If Me.chkStyle.Value Then atO/
Tp
Me.txtStatus.Text = "设置样式,请稍候...." n9Xs sl0
DoEvents }28,fb
/
CeateOrModifyStyle v"dj%75O?e
End If .TTXg,8#D
92HxZ*t7km
Ohmi(s
_~b$6Nf!83
ClearDomain g` QbJ61a
2
7!9LU
=W~K_jE5lo
OCVF+D :
If Me.chkLIST.Value Then w$5#jJX\
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" /_G^d1T1?L
[J.-gN$X@
ConvertListToOrdinary }TS4D={1
End If qhiO( !jK
m;"i4!
tv1Z%Mx?Cp
Dim pType As String, trimpTEXT As String d,9YrwbD
If Me.chkNum.Value = True Then e+5]l>3)f
Me.txtStatus.Text = "转换全角数字形式为半角" j3`"9bY
ConvertWidth "1", "1" " %)zTH
DoEvents g5*Zg_G/
ConvertWidth "2", "2" d;D8$q)8Q
DoEvents 7 Ed6o
ConvertWidth "3", "3" iB,Nqs3i*
DoEvents |
Djgm7$*
ConvertWidth "4", "4" {|~22UkF[V
DoEvents $zvqjT:>
ConvertWidth "5", "5" _,JdL'[d
DoEvents ekj@;6
d]
ConvertWidth "6", "6" ]M;aVw<!
DoEvents ^SouA[
ConvertWidth "7", "7" s1eGItx[w
DoEvents .(8sa8{N
ConvertWidth "8", "8" #D-L>7,jA
DoEvents m
pWmExQ
ConvertWidth "9", "9" -gpF%g`H
DoEvents p kR+H|
ConvertWidth "0", "0" BiUOjQC#
DoEvents C4jqT
ConvertWidth "a", "a" ,!RbFME&H
DoEvents YQI&8~z
ConvertWidth "b", "b" P`
K?k<
DoEvents ,^UNQO*{GI
ConvertWidth "c", "c" ,\BGxGNAmV
DoEvents +EWfsKz
ConvertWidth "d", "d" iYJzSVO
DoEvents Iw0Q1bK(
ConvertWidth "e", "e" .l->O-=
DoEvents 62X;gb
ConvertWidth "f", "f" Q'~2,%3<
DoEvents Ws;}D}+
ConvertWidth "g", "g" IW.~I,!x
DoEvents n"1LVJN7
ConvertWidth "h", "h" aBO%qmtt
DoEvents ]`2=<n;=
ConvertWidth "i", "i" ;*Cu >f7
DoEvents )"IBw0]
ConvertWidth "j", "j" q{W@J0U
DoEvents K9X0/
ConvertWidth "k", "k" *y;(c)_w/%
DoEvents +h$)l/>:
ConvertWidth "l", "l" fQ^45u
lz
DoEvents PfI~`ke
ConvertWidth "m", "m" \666{. a
DoEvents 8W|qm;J98
ConvertWidth "n", "n" y0R5YCq\":
ConvertWidth "o", "o" |
\OG9{q
ConvertWidth "p", "p" : _>/Yd7-&
ConvertWidth "q", "q" x]gf3Tc58
ConvertWidth "r", "r" Q( C\X
ConvertWidth "s", "s" l 6;}nG
ConvertWidth "t", "t" K)AJx"
ConvertWidth "u", "u" JPX5Jm()
ConvertWidth "v", "v" =2z9Aq{
ConvertWidth "w", "w" [CU]fU{$
ConvertWidth "x", "x" :Sx
!jx>W
ConvertWidth "y", "y" + W ?
/A]
ConvertWidth "z", "z"
De>'
ConvertWidth "A", "A" av&4:
O!
ConvertWidth "B", "B" >~kSe=Hsb4
ConvertWidth "C", "C" "@JSF
ConvertWidth "D", "D" 4$=Dq$4z
ConvertWidth "E", "E" uV:;q>XM'%
ConvertWidth "F", "F" VHJ-v!
ConvertWidth "G", "G" xi]qdiA
ConvertWidth "H", "H" oD]riA>jC
ConvertWidth "I", "I" s4RqMO5eI
ConvertWidth "J", "J" 4q`$nI Bi
ConvertWidth "K", "K" S;vE%
ConvertWidth "L", "L" `&"-|
ConvertWidth "M", "M" cj:!uhZp7
ConvertWidth "N", "N" ; c'9Xyl-
ConvertWidth "O", "O" 52$7vYMto
ConvertWidth "P", "P" J0e~s
ConvertWidth "Q", "Q" + a%Vp!y
ConvertWidth "R", "R" ,rB"ag !
ConvertWidth "S", "S" qd9CKd
ConvertWidth "T", "T" F;mK)
Q-
ConvertWidth "U", "U" 0~{&
ConvertWidth "V", "V" (YbRYu
ConvertWidth "W", "W" HY,+;tf2r
ConvertWidth "X", "X" rH9wRY(
ConvertWidth "Y", "Y" :h>d'+\
ConvertWidth "Z", "Z" S1<m O-
ConvertWidth "^l", "^p" '=_}&
ConvertWidth "(", "(" AiT&:'<UT
ConvertWidth ")", ")" +@Oo)#V|.
pm-SDp>s
End If Khbkv
e7<//~W7W
With ActiveDocument wsy
G~^>
Dim tbl As Table .cTK\
For Each tbl In .Tables S0_#h)
tbl.Rows.Alignment = wdAlignRowCenter n_Ht{2I
tbl.Range.Font.NameFarEast = "楷体" jrMY]Ea2`
tbl.Range.Font.NameAscii = "Times New Roman" \#.@*?fk
tbl.Range.Font.Size = 10.5
5y. n
Next ubn`w=w$
Set tbl = Nothing I$o^F/RH
End With G &'e
P
L,&R0gxi
5Mfs)a4j.
With ActiveDocument Mb6#97
:RsO$@0G
For i = 1 To .TablesOfContents.Count D2`tWRm0
.TablesOfContents(i).Delete btC0w^5
Next X`d d"8%
rRN7HL+b
f3>8ZB4
K; 7o+Xr
paraTotal = .Paragraphs.Count KB$s7S"=
paraCounter = 1 Mt@P}4
L- -
LastTitle0No = 0 u;xl}
LastTitle1No = 0 o5(p&:1M
LastTitle2No = 0 Kp+Lk
LastTitle3No = 0 w7H.&7rF
LastTitle4No = 0 (GVH#}uB
LastTableNo = 0 &^C<J
LastFigureNo = 0 kMGK8y
NzmVQ-4
Dim Sec As Long l^s\^b=W
nwk66o:|
Sec = InputBox("正文从第一节开始?", "节设置", 6) ?NZKu6
If Sec = 0 Then AHq;6cG
Exit Sub :wJ=t/ho
End If }*{@-v|_R
{
jnQoxN
k = 0 KWVEAHIn
Do While (paraCounter < paraTotal) And bContinue D{&0r.2F
k = k + 1
q$$:<*Uy
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then %rpJZ
t
Exit Do ~:Jw2 P2z
End If fX,L;Se"
paraCounter = paraCounter + 1 a}Db9 =
If k Mod 20 = 0 Then @_tQ:
U
,v
Me.lbCounter.Caption = paraCounter E\V-<]o
DoEvents 4
7R4gs#W
End If ,O@xv
Loop !%' 1x2?
/YbyMj*
8]6u]3q#
Do While (paraCounter < paraTotal) And bContinue qW57h8M
aI$D
qnF4
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) V0Cz!YM_3
ShapeHeight = 0 yv:8=.r}M
ShapeWidth = 0 U2*g9Es
3@ a
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth uaMf3HeYV
LFsrqdzJ
Select Case ParaType -
_bHLoI
Case "【】表格内容" 7Vf2Qx1_
.Paragraphs(paraCounter).Style = "QLNU表格内容" (vCMff/ Y1
Case "章" Ex'6 WN~kD
LastTitle0No = LastTitle0No + 1 289@O-
'新一章开始,复位其下属标题编号 -9XB.)\#
LastTitle1No = 0 M
<oy
LastTitle2No = 0 Lw
7,[?,Z
LastTitle3No = 0 ,~
D_T
LastTitle4No = 0 i<N[s O
[E_eaez7#
k = Val(ttNo) pKf]&?FX
If k = 0 Then '非数字编号章节 I$K? ,
If ttNo <> NoSeries1(LastTitle0No) Then m>C}T
rText = "第" & NoSeries1(LastTitle0No) & ttString 5c btMNP
Me.ErrMsg.AddItem "章节编号错误:" & ParaText 93="sS
End If ^`Tns6u>
Else V6.xp{[
If Val(ttNo) <> LastTitle0No Then ?UC3ES
rText = "第" & LastTitle0No & ttString T~%}(0=m
Me.ErrMsg.AddItem "章节编号错误:" & ParaText pA(B~9 WQ
End If =&QC&CqEi
3siWq9.
End If
D(}w$hi8
X|'E yZ
'章段落设置 @V/Lqia
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 ,6,sz]3-
.Paragraphs(paraCounter).Style = "QLNU章节" O2|[g8(_F
.Paragraphs(paraCounter).Range.Select lsV9-)yyl
Selection.EndKey unit:=wdLine z~TG~_s
tc = Replace(rText, vbCr, "") Ju""i4
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False {*V
CR
Case "一级标题" KdT1
Nb=
LastTitle1No = LastTitle1No + 1 `I(#.*
'新一级标题开始,复位其下属标题编号 ~n:dHK`
LastTitle2No = 0 sd;J(<Ofh
LastTitle3No = 0 j?&Rf,,%
LastTitle4No = 0 {shf\pm!o
`6KTQk'
If ttNo <> NoSeries1(LastTitle1No) Then >uS?Nz5/
rText = NoSeries1(LastTitle1No) & "、" & ttString i5 x[1
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText 8}/v[8p
End If adG=L9
"n
Wq_#46P-
_jV(Gv'
'一级标题段落设置 格式:一、标题内容 0h~Iua5
.Paragraphs(paraCounter).Range.Text = rText fk%yi[
.Paragraphs(paraCounter).Style = "QLNU一级标题" " gB.
.Paragraphs(paraCounter).Range.Select hlPZTr=a
Selection.EndKey unit:=wdLine FgIL Q"+
tc = Replace(rText, vbCr, "") ].f28bY
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False p`//
*gl
Case "二级标题" ~7$E\w6
LastTitle2No = LastTitle2No + 1 TqbDj|7`R
'新二级标题开始,复位其下属标题编号
;[*jLi,uc
LastTitle3No = 0 /5^"n4/M
LastTitle4No = 0 }cK<2J#
/"A)}>a
If ttNo <> NoSeries1(LastTitle2No) Then <eU28M?\
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString f\sxx!kt
ErrMsg.AddItem "二级标题编号错误:" & ParaText :DP%>H|
End If +@]b}W
`=A*ei5
'二级标题段落设置 格式:(一)、标题内容 o8+ZgXct
.Paragraphs(paraCounter).Range.Text = rText k r0PL)$
.Paragraphs(paraCounter).Style = "QLNU二级标题" l MCoc 'ae
%vjLw`
.Paragraphs(paraCounter).Range.Select +.N3kH
Selection.EndKey unit:=wdLine *={`
%
tc = Replace(rText, vbCr, "") (?SK< 4!
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False G1 ?."
x0^O?UR
Case "三级标题" +*2wGAT
LastTitle3No = LastTitle3No + 1 h+e Oe}
'新三级标题开始,复位其下属标题编号 ZCJOh8
LastTitle4No = 0 gxEa?QH
i)nb^
If Val(ttNo) <> LastTitle3No Then
1eC1Cyw
rText = LastTitle3No & ". " & ttString YNc]x>
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText ^h+,Kn0@
O) ks
End If 6LUO
'三级标题段落设置 格式:1. 标题内容 G[4TT#
.Paragraphs(paraCounter).Range.Text = rText w
^ v*1KA&
.Paragraphs(paraCounter).Style = "QLNU三级标题" {C>.fg%t
.Paragraphs(paraCounter).Range.Select OhmKjY/}
Selection.EndKey unit:=wdLine t+'|&b][Qi
tc = Replace(rText, vbCr, "") "4c
?hH:C
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False @5n
!t1(
Case "四级标题" R:z
PU
LastTitle4No = LastTitle4No + 1 {R[FwB^7wJ
s hbPy
If Val(ttNo) <> LastTitle4No Then K!/"&RjW.
rText = "(" & LastTitle4No & "). " & ttString ,?Pn-aC+
ErrMsg.AddItem "四级标题编号错误:" & ParaText S<"M5e
oQgd]|v
End If q\Cg2[nn2
'四级标题段落设置 格式:(1). 标题内容 b #U
nE
.Paragraphs(paraCounter).Range.Text = rText WvG0hts=[
.Paragraphs(paraCounter).Style = "QLNU四级标题" Ri]7=.QI`
.Paragraphs(paraCounter).Range.Select 8spoDb.S
Selection.EndKey unit:=wdLine z?$F2+f&
tc = Replace(rText, vbCr, "") 2}Dd{kC-
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False =M"H~;f]
ncg5%(2
Case "表格标题" 0-H! \
IB
LastTableNo = LastTableNo + 1 *vn^
W
IUco
8
If ttNo <> CStr(LastTableNo) Then LG6VeYe|\X
rText = "表" & LastTableNo & ". " & ttString yT Pi/=G
ErrMsg.AddItem "表格编号错误:" & ParaText NET?Ep
^06f\7A
End If ~b+TkPU
8d9&LPv
'表格名称段落设置 格式:表1. 表格名称 8X=c
GYC#
.Paragraphs(paraCounter).Style = "QLNU表格标题" 8'Dp3x^W>
xe = Replace(rText, vbCr, "") /.<tC(
.Paragraphs(paraCounter).Range.Select B .p&,K
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 KlMrM% ;y
Selection.Range.Text = xe BIf E+L(
Selection.EndKey (~F{c0\C
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False y2k'^zE
BZy&;P
Case "表格首行" ]M
AB
.Paragraphs(paraCounter).Style = "QLNU表格首行" 'P{0K?{H-4
Case "图片标题" &fJ92v?%^S
LastFigureNo = LastFigureNo + 1 }Z
T{
{9sA'5
If ttNo <> CStr(LastFigureNo) Then `IQ01FuP
rText = "图" & LastFigureNo & ". " & ttString Jy)E
!{#x
ErrMsg.AddItem "表格编号错误:" & ParaText Ov1$7 r@
^|^ek
End If Ju3-ZFUS4
'图片名称段落设置 格式:图1. 图名称 "0o1M\6Z
.Paragraphs(paraCounter).Range.Text = rText uP<w rlW
.Paragraphs(paraCounter).Style = "QLNU图片标题" NvH9?Ek"
.Paragraphs(paraCounter).Range.Select L(a&,cdh
Selection.EndKey unit:=wdLine wjk-$p
xe = Replace(rText, vbCr, "") qd*3| O^
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False hzIP ?0^E
Case "正文" Rk2V[R.`S
'正文名称段落设置 zx"'WM
*
.Paragraphs(paraCounter).Style = "QLNU正文" h8;B +#f`
Case "文献条目" DA)+)PhY7K
With .Paragraphs(paraCounter) _jK
'.Range.Select * z|i{=W
F
'Selection.ClearFormatting 8<(qN>R
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” h&eu}aF
.Style = "QLNU参考文献" <
aeBhg
%
End With Bw-<xwD
Case "图表注解" dkTj
KV
With .Paragraphs(paraCounter) y+f@8]
.Range.Font.NameFarEast = "楷体" yX%T-/XJ
.Range.Font.NameAscii = "Times New Roman" <ijf':X=*
.Range.Font.Size = 9 '小5号字 oJC-?
KK;3<kX
.Alignment = wdAlignParagraphCenter 3V:{_~~
.LeftIndent = 0 su]CaHU
.RightIndent = 0 ~_WsjD0O
.FirstLineIndent = 0 j.Ro(0%
.LineSpacing = 12 GOJ*>GpS
.LineSpacingRule = wdLineSpaceExactly =;DmD?nZ
.LineUnitAfter = 0 [r'PGx
.LineUnitBefore = 0 }X{#=*$GQ
.OutlineLevel = wdOutlineLevelBodyText ,i>u>YNZ
.PageBreakBefore = False ,bT|:T@ny
.RightIndent = 0 x2p}0N
.WordWrap = True L3:dANG
.LineUnitAfter = 0.5
nU]n]gd
7'wt
/9
End With O+I\Q?
Case Else 2N_8ahc
'不作处理 :.kc1_veYS
End Select n:JWu0
,h
a1Q|su{H
'含有inlineshape的段落处理 ;h[p "
If ShapeHeight > 30 Then m1@ste;$W
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 N9LBji;nH
End If
32!jF}qpD
TWF6YAQm
If (ShapeWidth + ShapeHeight) > 150 Then ^'EeJN
.Paragraphs(paraCounter).Style = "QLNU图片段落" ~l$u~:4Ob
End If ^lVZW8
bJc<FL<E
'段落计数器递 [.\uHt
paraCounter = paraCounter + 1 n4Fh*d ixg
Me.lbCounter.Caption = "当前检测段落:" & paraCounter ySP1,xq
Me.txtStatus.Text = ParaText IC&x
L9
DoEvents Wyu$J
Loop g_lj/u]P
End With ylm*a74-X
?sQOz[ig;
msg = "" pG?AwB~@n
Y<('G5A
For i = 0 To Me.ErrMsg.ListCount - 1 %H=d_Nm{
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) b%`^KEvwfo
Next "Y(stRa
X`km\\*
:V1ttRW}52
MhMY"bx8
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg ^VsX9
Me.cmdCheck.Enabled = True _t<D~
Me.txtStatus.Visible = True dQ6:c7hp>D
Me.lbParaType.Visible = False C
Z8Fe$F
uq<kT [
bContinue = False z-<091,
End Sub P" +!mSe^~
>]N}3J}47g
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) /DOV/>@5%
Dim pTEXT As String ~hi \*W6jg
*A
g</g@ h
pTEXT = ChKRange.Text );T0n
.?7u'%6x?{
ParaType = "其它" }{>)2S
TitleString = pTEXT _ndc^OG
TitleNo = "N/A" O@;
;GJ
}*.S=M]y
$
shpCounter = ChKRange.InlineShapes.Count V<~.:G$3H
If shpCounter <> 0 Then Sa5+_TW
MaxShpHeight = 0: TotalShpWidth = 0 '<N^u@tF7
For i = 1 To shpCounter eELJDSd
BV
k = ChKRange.InlineShapes(i).Height ? b;_T,S[
l = ChKRange.InlineShapes(i).Width i#/,Q1yEn
If k > MaxShpHeight Then =O= 0 D
MaxShpHeight = k <CrNDY
End If Jt79M(Hp!
TotalShpWidth = TotalShpWidth + l oej5bAi
Next 8S2sNpLi-g
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then 0zrgK;9
Exit Sub MfNxd
6w
End If '6l4MR$j&m
End If *a_U2}N
VC%{qal;q
'空行 $4K(AEt[
If Len(pTEXT) <= 2 Then @Qw~z0PE<l
Exit Sub >B)&mC$$S
End If C9^[A4O@X!
hdky:2^3
#+)AIf
'是否为表格中的文字 -#0(Jm'
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then nY(>|!
ParaType = "表格内容" V~j:!=b%v
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) E6"+\-e
If k = 1 Then yWI30hW
ParaType = "表格首行" "`P/j+-rt
End If i}cqV
B?r
Exit Sub hV5Aw;7C
End If D$C
>ZF
k
I{)"
'例外情况:脚注 3vx5dUgl,
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then )!+M\fT
ParaType = "脚注" ks92-%;:
Exit Sub AF ,*bb
End If E(J@A'cX
v+a$Xh3Y~
'例外情况:尾注 RTN?[`
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then H4%2"w6|!
ParaType = "尾注" p=F!)TnJN
Exit Sub 5,/rh,?
End If `Y
HnL4
I'p
OB
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then Z05kn{<a8
ParaType = "页眉页脚" NfG<!
Exit Sub ~>C@n'\lv
End If ?f@g1jJP
,(d\! T/]'
32yGIRV
With regEX rG7E[kii
.Global = True ?y1']GAo
? yL3XB>
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" p,_,o3@~
If regEX.Test(pTEXT) Then }DH3_M!
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") !|!k9~v!
TitleString = regEX.Replace(pTEXT, "$3") V_b"^911r
TitleNo = regEX.Replace(pTEXT, "$1") WXJEAje
ParaType = "章" s"u6po.'
Exit Sub '@4Myg* b
End If RmF,x9
y $,K^f
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" S0,q@LV
If regEX.Test(pTEXT) Then 0#\K9
|.
ParaType = "一级标题" 0ws1S(pq
regEX.Execute (pTEXT) K%NNw7\A
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") cd_\?7
TitleString = regEX.Replace(pTEXT, "$3") gc~nT/lfK
TitleNo = regEX.Replace(pTEXT, "$1") YU
=Q`y[k
Exit Sub Y0nn
n
End If Ul"9zTH
P#^-{;Bu
'全角或半角括号中的数字 MBy0Ky
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" [ .]x y
If regEX.Test(pTEXT) Then ze* =7
ParaType = "二级标题" *nb `DR
regEX.Execute (pTEXT) 0,1x-
yD
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") tC;LA 4
TitleString = regEX.Replace(pTEXT, "$5") F@m]Imn5Dx
TitleNo = regEX.Replace(pTEXT, "$2") {wUbr ^
Exit Sub :H9\nU1
End If 7Mx F?
I
+ucj>g1(#
'阿拉伯数字 1. 2. >Z0
F n
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" pib i#
If regEX.Test(pTEXT) Then Y"Y%JJ.J
ParaType = "三级标题" ~Mk{2;x
regEX.Execute (pTEXT) GYvD*?uBc
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 zNAID-5K;
TitleString = regEX.Replace(pTEXT, "$3") F"p7&e\W|l
TitleNo = regEX.Replace(pTEXT, "$1") =;9
%Q{
Exit Sub )OjTn"
End If &BF97%
E2
?D 8<}~Do
'全角或半角括号中的阿拉伯数字
|tK_Bn
.Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" kV>[$6
If regEX.Test(pTEXT) Then M%(B6};J
ParaType = "四级标题"
b&q!uFP
regEX.Execute (pTEXT) MNC=r?
ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") m+66x {M2c
TitleString = regEX.Replace(pTEXT, "$5") N.\?"n
TitleNo = regEX.Replace(pTEXT, "$2") UZcsMMKH
Exit Sub E}^np[u7
End If e6?iQ0
>"LHr&;m&h
'表格名称 ^\<nOzU?
.Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" *\#/4_yB}
If regEX.Test(pTEXT) Then :P,g,
ParaType = "表格标题" JONfNb+
regEX.Execute (pTEXT) Uh6LU5
ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) 0L->e(Vf7u
TitleString = Trim(regEX.Replace(pTEXT, "$3")) Vq8 G( <77
TitleNo = Trim(regEX.Replace(pTEXT, "$1")) d|I_SI
1
strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换 }~W:3A{7;
Exit Sub YUGE>"{
End If :/rl \woA>
i}&&
rr
'图片名称 zN3[W`q+m
.Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" ibzcO,c
If regEX.Test(pTEXT) Then eBlWwUy*6f
ParaType = "图片标题" b/#SkxW#S
regEX.Execute (pTEXT) _H{6{!=y
ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3") _*&I[%I5
TitleString = regEX.Replace(pTEXT, "$3") Q{+*F8%8V<
TitleNo = regEX.Replace(pTEXT, "$1") p\;\hHai
Exit Sub rV{:'"=y-
End If hc"l^a!7ic
DIs
K+1
'参考文献 TJYup%q
.Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})" '[数字]、 { XI 0KiE
If regEX.Test(pTEXT) Then )FLDCer
ParaType = "文献条目" G909R>
'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4") F~bDA~
'TitleNo = regEX.Replace(pTEXT, "[$2] ") r4YiXss
Exit Sub pm2-F]
End If " V[=U13
HgGwV;W
prfx = Left(pTEXT, 2) BZJ\tPSR
If prfx = "注:" Or prfx = "注:" Then ?<F=*eS
ParaType = "图表注解" ko-3`hX`
Exit Sub o7gYj\
End If "0*yD[2
Za[?CA
QR+xPY~
ParaType = "正文" D.[h`Hkc
fyt ODsb>
End With I |PEC-(
End Sub C8{bqmlm@
tLH:'"{zx
Sub ConvertListToOrdinary() <x!q!;
Dim st As Paragraph t`M4@1S"'
With ActiveDocument RB\
Hl
For i = .Paragraphs.Count To 1 Step -1 GGM|B}U p
Set st = .Paragraphs(i) 8
x=J&d
lst = st.Range.ListFormat.ListString uez"{ _I
If lst <> "" Then _sp,,gz
st.Range.ListFormat.RemoveNumbers XAb%V'
st.Range.InsertBefore lst & " " vl`Qz"Xy
End If ]|JQH
Next }na0
End With ;C
^!T
Set st = Nothing
h.Y&_=
Gc
End Sub 9f#~RY|#m
M&Q