Dim bContinue As Boolean l P=I0A
-
[fT$# '6
Dim regEX As New RegExp #'>)?]tn
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 ^c}3o|1m(
0%L:jq{5
Dim LastTitle0String As String, LastTitle0No As Long |J:r]);@K
Dim LastTitle1String As String, LastTitle1No As Long PcT]
Dim LastTitle2String As String, LastTitle2No As Long =6:9y}~
Dim LastTitle3String As String, LastTitle3No As Long \rxjvV4fcZ
Dim LastTitle4String As String, LastTitle4No As Long \SQ4yc
Dim LastTitle5String As String, LastTitle5No As Long !\1)?&y9j
Dim LastTabelString As String, LastTableNo As Long G]k[A=dg
Dim LastFigureString As String, LastFigureNo As Long ([rn.b]
_,
(s
Dim strSeperator As String 25vjn 1$sW
=gJ{75tV3
Sub ConvertWidth(fTEXT As String, rText As String) ^VMCs/g6
Selection.Find.ClearFormatting w8Z#]kRv
Selection.Find.Replacement.ClearFormatting 62'9lriQ
Selection.Find.Wrap = wdFindContinue XPMUhozV
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText >}~[ew
DoEvents pA_u;*
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True ;K8}Yq9p9
End Sub >5kz#|@P
A~nqSe
Sub ClearDomain() JHm Pa
With Selection.Find H^S<bZ
.ClearFormatting uk$MQv*D
.Replacement.ClearFormatting }`QZV_
.Wrap = wdFindContinue ^1Fzs(#.
Me.txtStatus.Text = "清除所有域代码" 59j`Z^e
DoEvents BRY/[QRqZ
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False _p1!8*0]
End With +kYp!00
End Sub w{[^
WZ,k][~
Private Sub cmdCheck_Click() 3>L5TYa
bContinue = True srN7
Dim NoSeries1(1 To 16) As String }F.k,2
Dim NoSeries2(1 To 16) As String S{&%tj~U
Dim NoSeries5(1 To 16) As String )6p6<y
Dim NoSeriesRM(1 To 16) As String %
au>D
Dim paraTotal As Long, ParaText As String jG{?>^
Dim ttString As String, ttNo As String \7qj hA@
y_n4Y[4g
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long `!I/6d?A
e
}C,)
Me.txtStatus.Visible = True ?32~%?m
Me.lbParaType.Visible = True YV|_y:-
Me.cmdCheck.Enabled = False N]iarYc
*`w>\},su
|?^qsnB
,|VLOY^
J>T98y/))
Dim ParaType As String, rText As String
:^{KY(3
ub>:dNBN
Selection.WholeStory z)^.ai,: 0
Selection.NoProofing = True aLm~.@Q
H#YI7l2
tm1 = Now 'do2n/
T>(X`(
ActiveWindow.View.Type = wdNormalView 2Ul8<${c{
S{e3aqT#N
NoSeries1(1) = "一" vO9=CCxvq
NoSeries1(2) = "二" V~/@KU8cH
NoSeries1(3) = "三" dg#Pb@7a
NoSeries1(4) = "四" 4V,p\$;
NoSeries1(5) = "五" M"s:*
c_6
NoSeries1(6) = "六" JSju4TQ4
NoSeries1(7) = "七"
H6K8.
NoSeries1(8) = "八" ue7D'
UZL>
NoSeries1(9) = "九" W>+`e]z
NoSeries1(10) = "十" ju[y-am$/
NoSeries1(11) = "十一" U.~G{H`G,u
NoSeries1(12) = "十二" x!s=Nola
NoSeries1(13) = "十三" 4FYV]p8f
NoSeries1(14) = "十四" s=jH1^
NoSeries1(15) = "十五" 9QHj$)?k,
NoSeries1(16) = "十六" pl@K"PRE
4l*cX1!
NoSeries2(1) = "㈠" |gxP
uAXa)
NoSeries2(2) = "㈡" %Ul,9qG+
NoSeries2(3) = "㈢" f!YlYk5
NoSeries2(4) = "㈣" # =y)Wuo=
NoSeries2(5) = "㈤" ~ PyS;L}
NoSeries2(6) = "㈥" |+HJ>xA4I
NoSeries2(7) = "㈦" 'Y
,2CN
NoSeries2(8) = "㈧" 9fb
bJ"I+
NoSeries2(9) = "㈨" !'#
D~
NoSeries2(10) = "㈩" s92ol0`
N&
F.hi$_
NoSeries5(1) = "①" 3p HI+a
NoSeries5(1) = "②" @UdF6:T
NoSeries5(3) = "③" (fl$$$
NoSeries5(4) = "④" L58H)V3Pn
NoSeries5(5) = "⑤" ~Y~M}4
NoSeries5(6) = "⑥" +(:Qf+:
NoSeries5(7) = "⑦" d]|K%<+(
NoSeries5(8) = "⑧" }[!=O+gO
NoSeries5(9) = "⑨" S`b!sT-sD
NoSeries5(10) = "⑩" @,,G]4zZ!
A*+gWn,4Y_
dB#c$1
NoSeriesRM(1) = "I" kGnT4R*E
NoSeriesRM(2) = "II" 1CZO+MB&"$
NoSeriesRM(3) = "III" X0j> g^b8
NoSeriesRM(4) = "IV" N\tFK*U^I
NoSeriesRM(5) = "V" \/ri|fm6l#
NoSeriesRM(6) = "VI" ,jz~Np_2
NoSeriesRM(7) = "VII" j]%XY+e
NoSeriesRM(8) = "VIII" O[U`(A:
NoSeriesRM(9) = "IX" l}(HE+?
NoSeriesRM(10) = "X"
xa]yq%
NoSeriesRM(11) = "XI" X8*~Cf73u
NoSeriesRM(12) = "XII" lAo ~w
NoSeriesRM(13) = "XIII" Y[PC<-fyf
NoSeriesRM(14) = "XIV" l{^s4
NoSeriesRM(15) = "XV" Q
-$)
H;,
NoSeriesRM(16) = "XVI" {Z <`@\K3
6l4=
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) X)RgXl{
5o4KV?"
If i = vbNo Then 9wf"5c
Exit Sub <uFj5.
End If K>~YO~~
v\G
7V
If Me.chkSuper.Value Then n
ei0LAD
Me.txtStatus.Text = "检查修改所有的上标格式" ->;2CcpHB
-"H$&p~
CheckSuperScript k&5T-\ q
YhRy
C*b
End If Z VdQ$
K^"l.V#J
If Me.chkStyle.Value Then ,37<FXX,
Me.txtStatus.Text = "设置样式,请稍候...." p]y.N)
a
DoEvents kFkI[WKyZ
CeateOrModifyStyle JBc*m
End If G,<d;:
{y5 L
_(:$
:*@
!9r%d8!z
ClearDomain l SKq
"R)n1,0
fH9"sBiO
y?r`[{L(lA
If Me.chkLIST.Value Then 1]0;2THx
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" xuqG)HthRS
~AaEa,LQ
ConvertListToOrdinary KCZ<#ca^
End If #M!{D
MK
Sw
jbZ
TlG
Dim pType As String, trimpTEXT As String b[:m[^
If Me.chkNum.Value = True Then )Ac
evEHB
Me.txtStatus.Text = "转换全角数字形式为半角" )
5Ij
ConvertWidth "1", "1" CflyK@
DoEvents JURu>-i
ConvertWidth "2", "2" x.pg3mVd>
DoEvents +{;wOQ.
ConvertWidth "3", "3" s 8K.A~5 w
DoEvents $A,YQH+
ConvertWidth "4", "4" ps` j>vX*
DoEvents jp4-w(
ConvertWidth "5", "5" ^a
/q6{
DoEvents /L(}VJg-
ConvertWidth "6", "6" ,S(Z\[x0
DoEvents ()Wu_Q
ConvertWidth "7", "7" =Sr<d|\O
DoEvents c]U+6JH
ConvertWidth "8", "8" UB>BVBCt
DoEvents "B +F6
ConvertWidth "9", "9" 9o?\*{'KT
DoEvents o>+ mw| {
ConvertWidth "0", "0" QAo/d4
DoEvents ct,;V/Dx
ConvertWidth "a", "a" g<^A
(zM
DoEvents Oop6o$k
ConvertWidth "b", "b" x_-V{
k
DoEvents P =Q+VIP&
ConvertWidth "c", "c" Fo;J3<U)
DoEvents yoe@]c=
ConvertWidth "d", "d" nW\W<[O9
DoEvents N5K2Hv<"
ConvertWidth "e", "e" 2-UD^;0
DoEvents oXk6,b"
ConvertWidth "f", "f" {!?M!/d
DoEvents >;j&]]-&
ConvertWidth "g", "g" UB8
n,+R
DoEvents 0cfGI%
ConvertWidth "h", "h" |${ImP
DoEvents :6(@P1vA 6
ConvertWidth "i", "i" `) ],FE*:
DoEvents &'
Nzw2
ConvertWidth "j", "j" {=J:
DoEvents 6M_ W(
ConvertWidth "k", "k" Ax=)J{4v
DoEvents EAWBgOO8iC
ConvertWidth "l", "l" A{)pzV25
DoEvents &ZFHWI(P
ConvertWidth "m", "m" |9FrVO$M
DoEvents !or_CJ8%
ConvertWidth "n", "n" Vz-q7*o$S
ConvertWidth "o", "o" /7+b
.h])^
ConvertWidth "p", "p" dOaCdnd~
ConvertWidth "q", "q" ~W4SFp
ConvertWidth "r", "r" G[u6X_Q
ConvertWidth "s", "s" tZg)VJQys
ConvertWidth "t", "t" _e8v12s
ConvertWidth "u", "u" H13\8Te{
ConvertWidth "v", "v"
"u$XEA
ConvertWidth "w", "w"
)OQ<H.X
ConvertWidth "x", "x" <0~1
ConvertWidth "y", "y" s]A8C^;c
ConvertWidth "z", "z" GCr]x '
ConvertWidth "A", "A" LN$T.r+
ConvertWidth "B", "B" p
H3\X
cn
ConvertWidth "C", "C" ?5};ONjN
ConvertWidth "D", "D" aYc<C$:NC"
ConvertWidth "E", "E" WH7UJCQ
ConvertWidth "F", "F" KMqGWO*
ConvertWidth "G", "G" a\,V>}e
ConvertWidth "H", "H" };P=|t(r
ConvertWidth "I", "I" R@ Gll60
ConvertWidth "J", "J" ?D9iCP~~
ConvertWidth "K", "K" B2LXF3#/
ConvertWidth "L", "L" <
RC %<
ConvertWidth "M", "M" /ET+`=n
ConvertWidth "N", "N" ^ )!eiM
ConvertWidth "O", "O" WL,2<[)Ew
ConvertWidth "P", "P" #E\6:UnT
ConvertWidth "Q", "Q" (IjM
ConvertWidth "R", "R" D ZZRu8~
ConvertWidth "S", "S" N|"kuRN#
ConvertWidth "T", "T" -U_,RMw~
ConvertWidth "U", "U" .ej+?QYwC
ConvertWidth "V", "V" G*%U0OTi
ConvertWidth "W", "W" suWO:]FR
ConvertWidth "X", "X" jxhZO
LG
ConvertWidth "Y", "Y" _):@C:6
ConvertWidth "Z", "Z" HSU?4=Q
ConvertWidth "^l", "^p" pz/W#VN
ConvertWidth "(", "(" 0SIUp/.
ConvertWidth ")", ")" 7042?\\=
G8?Do+[
End If \WdSj
H4YA
With ActiveDocument #v~dhx=R
Dim tbl As Table br k*;
For Each tbl In .Tables Ii/{xVMD
tbl.Rows.Alignment = wdAlignRowCenter q;sZwp<
tbl.Range.Font.NameFarEast = "楷体" 1BEc"
tbl.Range.Font.NameAscii = "Times New Roman" 3'A0{(b
tbl.Range.Font.Size = 10.5 I
jz*wq\s;
Next QKVOc,Fp7i
Set tbl = Nothing Sj/v:
End With 6;!)^b
Z1$U[Tsd
-U9C{q?h
With ActiveDocument jRDvVV/-wr
~FXq%-J
For i = 1 To .TablesOfContents.Count o>yXEg
.TablesOfContents(i).Delete R/E6n &R
Next
S&[9Vb
fiU#\%uJg
{+{
p.
ij3W8i9'
paraTotal = .Paragraphs.Count %`lJA W[
paraCounter = 1 Q]K$yo
L+@X]OW8
LastTitle0No = 0 &{qKoI]
LastTitle1No = 0 nsV
=
LastTitle2No = 0 =^
{MyR7
LastTitle3No = 0 rADzJ#CU\
LastTitle4No = 0 s!MD8ia
LastTableNo = 0 p__N6a
LastFigureNo = 0 .EjR<UU
5X5UUdTM
Dim Sec As Long SGy2&{\Z
Kf$(7FT'`
Sec = InputBox("正文从第一节开始?", "节设置", 6) rHOhi|+
If Sec = 0 Then Pn@DHYP
Exit Sub AkO);4A;Jd
End If :Zob"*T
`pDTjJ
k = 0 /e|qyWs
Do While (paraCounter < paraTotal) And bContinue s0x/2z
k = k + 1 '+g[n
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then -lv(@7o~
Exit Do bd27])n(
End If %" l;
paraCounter = paraCounter + 1 gyh8
If k Mod 20 = 0 Then JqYa~6 C
Me.lbCounter.Caption = paraCounter 8)"lCIf
DoEvents |:2B )X
End If Tj<B;f!u
Loop 2cGiE{
tgl 4pAc
3a ZS1]/
Do While (paraCounter < paraTotal) And bContinue >O~V#1 H
+7_U(|gO
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) yFd942
ShapeHeight = 0 &^ s8V]^
ShapeWidth = 0 &U}8@;
SlT>S1`rnG
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth iG~&uEAJ
Z8Vof~
Select Case ParaType 9pS:#hg
Case "【】表格内容" nr}Ols
.Paragraphs(paraCounter).Style = "QLNU表格内容" )4:]gx#cr
Case "章" : vgn0IQ
LastTitle0No = LastTitle0No + 1 o"A)t=
'新一章开始,复位其下属标题编号 uKD
}5M?
{
LastTitle1No = 0 <X& fs*x&
LastTitle2No = 0 Ux= B*m1@{
LastTitle3No = 0 dmLx
$8
LastTitle4No = 0 :mf&,?
7ju38@+
k = Val(ttNo) w2('75$J
If k = 0 Then '非数字编号章节 oj'YDQ^uj
If ttNo <> NoSeries1(LastTitle0No) Then Y"s8j=1m
rText = "第" & NoSeries1(LastTitle0No) & ttString :kwDa
a
Me.ErrMsg.AddItem "章节编号错误:" & ParaText vfm Y>nr
End If gLZJQubz
6
Else $T7 qd
If Val(ttNo) <> LastTitle0No Then "f~OC<GdYs
rText = "第" & LastTitle0No & ttString 7&%#bMnw
Me.ErrMsg.AddItem "章节编号错误:" & ParaText >@4AxV\
End If vW? /:
}?+tX <j
End If 5e7\tBab
mU]^PC2[
'章段落设置 oZl%0Uy?9I
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 tc\ZYCFr
.Paragraphs(paraCounter).Style = "QLNU章节" = iDd{$
.Paragraphs(paraCounter).Range.Select t6\--lk_
Selection.EndKey unit:=wdLine yA_ly <
tc = Replace(rText, vbCr, "") R2 J A(Hn
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False m9&%A0
Case "一级标题" `f~$h?}3-@
LastTitle1No = LastTitle1No + 1 0E
(G1o'
'新一级标题开始,复位其下属标题编号 P7/Xh3
LastTitle2No = 0 q0vZR"y
LastTitle3No = 0 bF+j%=
LastTitle4No = 0 Y(?SE< 4R
UVgSO|Tg
If ttNo <> NoSeries1(LastTitle1No) Then xpwy%uo
rText = NoSeries1(LastTitle1No) & "、" & ttString E m +&I
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText oEFo7X`t
End If Odh r=Hs
&2q<#b
oJ"D5d,
'一级标题段落设置 格式:一、标题内容 Iu >4+6
.Paragraphs(paraCounter).Range.Text = rText
ZB/1I;l`c
.Paragraphs(paraCounter).Style = "QLNU一级标题" b+hN\/*]
.Paragraphs(paraCounter).Range.Select 8?: 2<
Selection.EndKey unit:=wdLine l]&x~K}
tc = Replace(rText, vbCr, "") XAtRA1.
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False ,]]IJ;:
w
Case "二级标题" &o1k_!25
LastTitle2No = LastTitle2No + 1 R1<$VR
'新二级标题开始,复位其下属标题编号 8HIX$OX>2
LastTitle3No = 0 WQD:~*C:
LastTitle4No = 0 ;<Gxo nIV
EdSUBoWF}
If ttNo <> NoSeries1(LastTitle2No) Then Z*h}E
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString C>,> _
ErrMsg.AddItem "二级标题编号错误:" & ParaText fy|I3
End If F8Mf,jnPs
R?- zJ ;
'二级标题段落设置 格式:(一)、标题内容 RQ^
\|+_
.Paragraphs(paraCounter).Range.Text = rText ]\L+]+u~
.Paragraphs(paraCounter).Style = "QLNU二级标题" C|3cQ{
b^ [ z'
.Paragraphs(paraCounter).Range.Select NZ6:ZzM
Selection.EndKey unit:=wdLine +Kg }R5+
tc = Replace(rText, vbCr, "") r=AA
/n<
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False dZb;`DjTH
('\sUZ+5
Case "三级标题" Q|S>C%4?
LastTitle3No = LastTitle3No + 1 /<(-lbq,
'新三级标题开始,复位其下属标题编号 =20
+(<
LastTitle4No = 0 du#f_|xG
734n1-F?I%
If Val(ttNo) <> LastTitle3No Then Vx>Q
rText = LastTitle3No & ". " & ttString <63TN`B
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText )N1iGJO)
s| Q1;%Tj
End If zfg+gd)Z
'三级标题段落设置 格式:1. 标题内容 . n)R@&9
.Paragraphs(paraCounter).Range.Text = rText N`N?1!fM<}
.Paragraphs(paraCounter).Style = "QLNU三级标题" PCV#O63[
.Paragraphs(paraCounter).Range.Select 3#>%_
@<
Selection.EndKey unit:=wdLine ~
L>M-D4o
tc = Replace(rText, vbCr, "") $\~cWpv
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False y
c 8h}`
Case "四级标题" R(cg`8
LastTitle4No = LastTitle4No + 1 X(3| (1;sV
{Ja (+NQ
If Val(ttNo) <> LastTitle4No Then d\JBjT1g
rText = "(" & LastTitle4No & "). " & ttString EIyFGCw|U
ErrMsg.AddItem "四级标题编号错误:" & ParaText ;)P=WS:=
imAOYEH7}
End If EYCZuJxv
'四级标题段落设置 格式:(1). 标题内容 Ck"db30.
.Paragraphs(paraCounter).Range.Text = rText 3Lq9pdM>2@
.Paragraphs(paraCounter).Style = "QLNU四级标题" D<<q5gG
.Paragraphs(paraCounter).Range.Select d&
f!\n_~
Selection.EndKey unit:=wdLine G#6Z@|kVw
tc = Replace(rText, vbCr, "") "Ehh9 m1&
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False vX}w_Jj>
T0)bnjm
Case "表格标题" l+hOD{F4pS
LastTableNo = LastTableNo + 1 8pftc) k
_VmXs&4
If ttNo <> CStr(LastTableNo) Then ]+B.=mO_
rText = "表" & LastTableNo & ". " & ttString #e,TS`"e
D
ErrMsg.AddItem "表格编号错误:" & ParaText M7 kWJ
twbxi{8e.
End If `ah|BV
"zCT S
'表格名称段落设置 格式:表1. 表格名称 7n+,!oJ
.Paragraphs(paraCounter).Style = "QLNU表格标题" SBDGms
xe = Replace(rText, vbCr, "") U[8F{LX
.Paragraphs(paraCounter).Range.Select `8Ych@f]
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 u4m8^fj+T
Selection.Range.Text = xe 6KXW]a `
Selection.EndKey
I;eo
y,
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False 6-J}ZfGj
1\Pjz
Lj
Case "表格首行" @7.7+blS"H
.Paragraphs(paraCounter).Style = "QLNU表格首行" Y
%- !%
|
Case "图片标题" ~kSOYvK$'
LastFigureNo = LastFigureNo + 1 ^3H:I8gRCl
Fav++ z
If ttNo <> CStr(LastFigureNo) Then UX<-jY#'V
rText = "图" & LastFigureNo & ". " & ttString ,Oy$q~.
ErrMsg.AddItem "表格编号错误:" & ParaText k_zn>aR$F
iSW<7pNq0
End If ^yq}>_
'图片名称段落设置 格式:图1. 图名称 U,61 3G
.Paragraphs(paraCounter).Range.Text = rText z,2*3Be6V
.Paragraphs(paraCounter).Style = "QLNU图片标题" y;<suGl
.Paragraphs(paraCounter).Range.Select a l6y=;\jZ
Selection.EndKey unit:=wdLine -/0\_z
q7
xe = Replace(rText, vbCr, "") [m6+I9
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False hN]l
$Ct
Case "正文" e#mqerpJ
'正文名称段落设置 &/)B d%
.Paragraphs(paraCounter).Style = "QLNU正文" {&B_b|g*fW
Case "文献条目" $|3zsi2
With .Paragraphs(paraCounter) HIvSpO
'.Range.Select 0( A ?&
'Selection.ClearFormatting ,9_O4O%
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” g`fMHU7
.Style = "QLNU参考文献" v-q-CI?B#
End With <p/2 hHfiD
Case "图表注解" Md~._@`|K
With .Paragraphs(paraCounter) )Ho
"b
.Range.Font.NameFarEast = "楷体" SBs! 52
.Range.Font.NameAscii = "Times New Roman" uozq^sy
.Range.Font.Size = 9 '小5号字 4>v O9q
Rt&5s)O'
.Alignment = wdAlignParagraphCenter |0}7/^
.LeftIndent = 0 ?_A[E]/H
.RightIndent = 0 J:&.[
.FirstLineIndent = 0 Th*}U&
.LineSpacing = 12 NqNU:_}
.LineSpacingRule = wdLineSpaceExactly +'MO$&6
.LineUnitAfter = 0 )cZHBG.0H
.LineUnitBefore = 0 }HmkTk
.OutlineLevel = wdOutlineLevelBodyText ']+!i a
.PageBreakBefore = False #=33TvprR2
.RightIndent = 0 yg*
#~,
.WordWrap = True 'g'RXC}D>
.LineUnitAfter = 0.5 "Y&
z/f._Z(
End With M"/Jn[
Case Else lBs-u h
'不作处理 |O oczYf
End Select \)wch P_0
"e8EA!Ipte
'含有inlineshape的段落处理 j u"?b2f
If ShapeHeight > 30 Then o9]32l
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 #W3H;'~/5
End If d
JJq]^|
r `n|fD.
If (ShapeWidth + ShapeHeight) > 150 Then G e]NA]<
.Paragraphs(paraCounter).Style = "QLNU图片段落" 6DK).|@$r
End If 5y\35kT'
vR2);ywX
'段落计数器递 {
Q_GJ
paraCounter = paraCounter + 1 rwP)TJh"
Me.lbCounter.Caption = "当前检测段落:" & paraCounter Pc< "qy
Me.txtStatus.Text = ParaText $;Iz7:#jN
DoEvents wQjYH!u,YZ
Loop c ^.^
5@
End With xU0iz{9
<g;,or#$
msg = "" \=im{(0h
h$6'9rL&i
For i = 0 To Me.ErrMsg.ListCount - 1
{f)aFGp
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) dzAumWoh
Next V&vG
.HAT
wCR! bZ w
\ERxr
M<*Tp^Y'
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg 8 sc2r
Me.cmdCheck.Enabled = True {B
k` Zlki
Me.txtStatus.Visible = True ytjZ7J['{
Me.lbParaType.Visible = False Q#Zazvk
t!6uz
bContinue = False RLF6Bc
End Sub @SiV3k
0a8\{(w
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) E QU@';~8
Dim pTEXT As String ]y=U"g
<jF&+[*iT
pTEXT = ChKRange.Text Qj_)^3`e
ort*Ux)
ParaType = "其它" bPP@
TitleString = pTEXT }5(_gYr
TitleNo = "N/A" KW[y+c u.#
A%F8w'8(
shpCounter = ChKRange.InlineShapes.Count h9<PP2.(
If shpCounter <> 0 Then "RK"Pn+
MaxShpHeight = 0: TotalShpWidth = 0 ly0L)L]\
For i = 1 To shpCounter CrL9|78
k = ChKRange.InlineShapes(i).Height C,W_0=!e
l = ChKRange.InlineShapes(i).Width U]vUa^nG
If k > MaxShpHeight Then n_RZ:<Gr
MaxShpHeight = k CLVT5pj='
End If Y9<[n)>+
TotalShpWidth = TotalShpWidth + l )j~{P
Next K{/i2^4
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then :.]EM*p?GV
Exit Sub -Pt E+R[A
End If "#7Q}d!x
End If z _\L@b
)xa
)$u
'空行 L/-SWid)
If Len(pTEXT) <= 2 Then 3ej237~F,L
Exit Sub FZ+2{wIV^
End If nAl
\9#M
8Nyz{T[
aY(s
&
'是否为表格中的文字 +pYwc0~
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then [ij) k@.
ParaType = "表格内容" F9K`N8wlu
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) 1t &_]q_
If k = 1 Then {nUmlP=mS
ParaType = "表格首行" ,&=7ir14>R
End If %%?}db1n
Exit Sub 2)|=+DN;
End If Ao` e{
|UWIV
'例外情况:脚注 jLI1Ed
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then Oy=0Hsh@x
ParaType = "脚注" /*Q3=Dse]
Exit Sub &&P9T/Zks
End If f>C+ l(
]w;t0Bk
'例外情况:尾注 (_@5V_U
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then r/a@ x9
ParaType = "尾注" tugIOA
Exit Sub 8~-TN1H
End If Tc||96%2
^
CkNR{?S
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then w`f66*@Q1
ParaType = "页眉页脚"
#iv4L
Exit Sub uKM` umE
End If t`|Rn9-
Ea<\a1Tl43
,
otXjz
With regEX 4_j_!QH87
.Global = True [qRww]g;P|
:'C?uk ?
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" V'W*'wo
If regEX.Test(pTEXT) Then .*njgAq7
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") U!o
TitleString = regEX.Replace(pTEXT, "$3") p.g> +7
TitleNo = regEX.Replace(pTEXT, "$1") $poIWJM c
ParaType = "章" 3MHpP5C
Exit Sub Qu=b-9
End If \9#f:8Q
sGtxqnX:J
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" h~Z &L2V
If regEX.Test(pTEXT) Then 1
V
t,5o5
ParaType = "一级标题" ?zutU w/m
regEX.Execute (pTEXT) KO#kIM-
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") yLfyLyO L
TitleString = regEX.Replace(pTEXT, "$3") a B MV6'
TitleNo = regEX.Replace(pTEXT, "$1") _[-MyU s
Exit Sub 9D=X3{be#
End If jFe8s
@7
hOZTD0
'全角或半角括号中的数字 ri59LY y=
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" Lv/}&'\(
If regEX.Test(pTEXT) Then 2SD
Z
ParaType = "二级标题" uchQv]VB
regEX.Execute (pTEXT) E.NfVeq
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") Tb?X KO,
TitleString = regEX.Replace(pTEXT, "$5") UV}:3c6 ZX
TitleNo = regEX.Replace(pTEXT, "$2") [9Rh" H;h
Exit Sub ineSo8| @
End If HP[B%
r`6f
'阿拉伯数字 1. 2. wk8fa
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" @^ YXE
,
If regEX.Test(pTEXT) Then gsM$VaF(
ParaType = "三级标题" FO^6c
regEX.Execute (pTEXT) ;r"r1'a+@
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 iZdl0;16[
TitleString = regEX.Replace(pTEXT, "$3") %pOz%v~
TitleNo = regEX.Replace(pTEXT, "$1") [j@i^B &
Exit Sub >\pF5a`
End If OQ_<V xz
6 *S
/frE
'全角或半角括号中的阿拉伯数字 F#<:ZByjJ@
.Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" YB 7A5
If regEX.Test(pTEXT) Then qtZzJ>Y
ParaType = "四级标题" ]] 0 M
regEX.Execute (pTEXT) J9NuqV3
ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") |&MoQxw@
TitleString = regEX.Replace(pTEXT, "$5") ?r
&~(<^z
TitleNo = regEX.Replace(pTEXT, "$2") R,PN?aj
Exit Sub (VN'1a (
End If M\CzV$\y
w2'z~\dG8
'表格名称 ~Uv#)
.Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" z5iCQ4C<
If regEX.Test(pTEXT) Then rqN+0CT
ParaType = "表格标题" 44P [P{y
regEX.Execute (pTEXT) kDmuj>D
ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) 5 cQ]vb
TitleString = Trim(regEX.Replace(pTEXT, "$3")) ,=Wj*S)~
TitleNo = Trim(regEX.Replace(pTEXT, "$1")) $+4
4US
strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换 p7`9
d1n
Exit Sub Zh;}Q(w
End If Y]`=cR`/"
&0Y
|pY
'图片名称 > _sSni
.Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" _('
@'r
If regEX.Test(pTEXT) Then -YQS\@?
ParaType = "图片标题" =#9#unvE!
regEX.Execute (pTEXT) ,.*Df)+
ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3") PZV>A!7C8n
TitleString = regEX.Replace(pTEXT, "$3") e> 9
X
TitleNo = regEX.Replace(pTEXT, "$1") -th.(eAx
Exit Sub }6%\/d1~ 6
End If
0.R3(O
Sft
vN-
'参考文献 ]Bf1p
.Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})" '[数字]、 1=IOio4U
If regEX.Test(pTEXT) Then 2RNee@!JJP
ParaType = "文献条目" VM<0_R24z
'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4") 2oahQ:
}B
'TitleNo = regEX.Replace(pTEXT, "[$2] ") Hn)?
xw]x
Exit Sub ZR3,dW6S
End If k CGb~+
['\R4H!x
prfx = Left(pTEXT, 2) [T7&)p
If prfx = "注:" Or prfx = "注:" Then uQ[,^Ee&/
ParaType = "图表注解" K*Ba;"Ugeg
Exit Sub lc5(^~
End If vD9.X}l]
{4vWSb
b1IAp >*2l
ParaType = "正文" jA:'P~`Hj
GOA
dhh-
End With jsgDJ}
End Sub vS5}OV
_7:Bxx4B
Sub ConvertListToOrdinary() aDX&j2/
Dim st As Paragraph (_}q>3
With ActiveDocument LNk :PD0m
For i = .Paragraphs.Count To 1 Step -1
~x'8T!M{
Set st = .Paragraphs(i) Y9#dAI[Gce
lst = st.Range.ListFormat.ListString tk'&-v
'h
If lst <> "" Then ~1*37 w~
st.Range.ListFormat.RemoveNumbers wo(O+L/w
st.Range.InsertBefore lst & " " xV14Y9
End If BWYv.&