Dim bContinue As Boolean b\H~Ot[i
Mx[tE?!2
Dim regEX As New RegExp &eyFApM[Z
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 KJJ8P`Kx
(;cb
gHo%}
Dim LastTitle0String As String, LastTitle0No As Long [+>$'Du
Dim LastTitle1String As String, LastTitle1No As Long ,I'Y)SLx
Dim LastTitle2String As String, LastTitle2No As Long !d%OoRSU'
Dim LastTitle3String As String, LastTitle3No As Long oZP:}= F
Dim LastTitle4String As String, LastTitle4No As Long N\ GBjr-d
Dim LastTitle5String As String, LastTitle5No As Long /.Gx
n0
Dim LastTabelString As String, LastTableNo As Long CEZ*a 0}=
Dim LastFigureString As String, LastFigureNo As Long 7&OU!gp
!P#lTyz
Dim strSeperator As String 8tLkJOu
RIb<
7
Sub ConvertWidth(fTEXT As String, rText As String) $wC]S4C
Selection.Find.ClearFormatting }_XKO\
Selection.Find.Replacement.ClearFormatting &vd9\Pp
Selection.Find.Wrap = wdFindContinue .(nq"&u-*
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText 'szkn0
DoEvents d\xh>o
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True 4*d_2:|u
End Sub @ttcFX1:W
Cv~ t~
Sub ClearDomain() sd.:PE <
With Selection.Find Q!|. ,?V
.ClearFormatting 9A)(
K,
.Replacement.ClearFormatting ow%s_yV]R
.Wrap = wdFindContinue c\"oj&>A
Me.txtStatus.Text = "清除所有域代码" rVFAwbR
DoEvents 8`9!ocrM
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False j{S\X'?
End With xlS
t
End Sub swe6AQ-
,8EeSnI
Private Sub cmdCheck_Click() a)[t kjU
bContinue = True W<v?D6dFq
Dim NoSeries1(1 To 16) As String ka*VQXk*
Dim NoSeries2(1 To 16) As String lvcX}{>\
Dim NoSeries5(1 To 16) As String v"=^?5B
Dim NoSeriesRM(1 To 16) As String q<.^DO~$L
Dim paraTotal As Long, ParaText As String )T
3y ,*
Dim ttString As String, ttNo As String !dSY?1>U<
"k5 C? ~
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long HrWXPac
A
a!xKS8-S==
Me.txtStatus.Visible = True ) Q]kUG#`
Me.lbParaType.Visible = True aW$7:<A{
Me.cmdCheck.Enabled = False &+JV\
nBZqhtr
GS
\-
*>zr'Tt,W
'<$(*
Dim ParaType As String, rText As String GP[;+xMBh
S\s1}`pNm
Selection.WholeStory 7@|(z:uw
Selection.NoProofing = True l% K9Ke
o+q4Vg9&
tm1 = Now e,|"9OK
vQYd!DSh
ActiveWindow.View.Type = wdNormalView %GjF;dJ
d),@&MSN
NoSeries1(1) = "一" rsy'ZVLUj
NoSeries1(2) = "二" `N
;!=7y7Y
NoSeries1(3) = "三" .\LWV=B
NoSeries1(4) = "四" NTls64AS.
NoSeries1(5) = "五" V'\4sPt
NoSeries1(6) = "六" qEX59v
NoSeries1(7) = "七" N{
;
{<C9Z
NoSeries1(8) = "八" P[aB}<1f0
NoSeries1(9) = "九" hH`yQG
Z
NoSeries1(10) = "十" 1,9RfY V
NoSeries1(11) = "十一" ~Og'IRf
NoSeries1(12) = "十二" <fWho%eOK
NoSeries1(13) = "十三" +2MsyA?6_
NoSeries1(14) = "十四" :n{rVn}G
NoSeries1(15) = "十五" {#0B~Zr
NoSeries1(16) = "十六" NNb17=q_v
sw8Ic\vT
NoSeries2(1) = "㈠" +TA(crD
NoSeries2(2) = "㈡" ,HY z-sK.
NoSeries2(3) = "㈢" __'Z0?.4#
NoSeries2(4) = "㈣" %\%1EZQ%
NoSeries2(5) = "㈤" Xq+7l5LP
NoSeries2(6) = "㈥" *cq#>rN
NoSeries2(7) = "㈦" qdvGBdF
NoSeries2(8) = "㈧" sm4@ywd>
NoSeries2(9) = "㈨" FL"I PX;S
NoSeries2(10) = "㈩" Ui'~d(F
Fu!:8Wp!(
NoSeries5(1) = "①" <`~]P$
NoSeries5(1) = "②" pBh[F5
NoSeries5(3) = "③" c;BQ$je}
NoSeries5(4) = "④" h$4V5
V
NoSeries5(5) = "⑤" :G,GHU'/78
NoSeries5(6) = "⑥" #](ML:!
NoSeries5(7) = "⑦" E+UOuf*(
NoSeries5(8) = "⑧" zxTm`Dh;[
NoSeries5(9) = "⑨" el5F>)
NoSeries5(10) = "⑩" &3S;5{7_e
9F ).i
bP(V#6IJ8
NoSeriesRM(1) = "I" OA&N WAm4
NoSeriesRM(2) = "II" oI/@w
NoSeriesRM(3) = "III" ]oXd|[G
NoSeriesRM(4) = "IV" `Nc3I\tCM
NoSeriesRM(5) = "V" ?r2Im5N
NoSeriesRM(6) = "VI" 31<hn+pE&
NoSeriesRM(7) = "VII" l4v)tV~
NoSeriesRM(8) = "VIII" E&GUg/d
NoSeriesRM(9) = "IX" ,TeDJ\k
NoSeriesRM(10) = "X" yV=hi?f-[V
NoSeriesRM(11) = "XI" J rYpZ.Nh
NoSeriesRM(12) = "XII" !fyE
Hk
NoSeriesRM(13) = "XIII" ^7~=+0cF]
NoSeriesRM(14) = "XIV" ;x|4Tm
NoSeriesRM(15) = "XV" JxNjyw
NoSeriesRM(16) = "XVI" A\.k['!
l?Bv9k.^?
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) ZLxe$.V_
JwxI8Pi*y
If i = vbNo Then ir3iW*5k
Exit Sub C7eaioW$
End If a}El!7RO0
Pg|q{fc
If Me.chkSuper.Value Then ^kt#
[N
Me.txtStatus.Text = "检查修改所有的上标格式" X7Cou6r
VS1gg4tCv
CheckSuperScript [&3G `8hY
@X
End If laKMQLtv
#^%Rk'W
If Me.chkStyle.Value Then _f{'&YhUU
Me.txtStatus.Text = "设置样式,请稍候...." ezC55nm
DoEvents ?)5}v4b
CeateOrModifyStyle ]J?5qR:xCy
End If %ktU 51o
q yQPR
nu4GK}xI
ukzXQe;l1
ClearDomain /!d,f4n
>x(^g~i
bXC
;6xZV
x{5I
If Me.chkLIST.Value Then Q3_ia5 `O
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" FV!
U_Emp[
ConvertListToOrdinary FzFY2h;n]B
End If @fPiGu`L
&.K=,+0_R/
I `p44}D3
Dim pType As String, trimpTEXT As String *
.n9D
If Me.chkNum.Value = True Then 8!S="_
Me.txtStatus.Text = "转换全角数字形式为半角" (:vY:-\ bO
ConvertWidth "1", "1" #oJ9BgDry
DoEvents ZsNUT4
ConvertWidth "2", "2" 3Akb|r
DoEvents N;;!ObVHnP
ConvertWidth "3", "3" ;'p X1T
DoEvents 2gg5:9
ConvertWidth "4", "4" d+[hB4!l2
DoEvents >=r094<
ConvertWidth "5", "5" nke
[}Hqf
DoEvents W(a=ev2sa
ConvertWidth "6", "6" ) l0=jb
DoEvents /XtxgO\T.
ConvertWidth "7", "7" M I/9?B
DoEvents 2Q-kD?PO,
ConvertWidth "8", "8" *`=V"nXw$|
DoEvents ]ZHC*r2i
ConvertWidth "9", "9" Bn-%).-ED
DoEvents .'L@$]!G
ConvertWidth "0", "0" ?N&"WL^|
DoEvents SN\;&(?G
ConvertWidth "a", "a" b?h"a<7
DoEvents [
{f{E
ConvertWidth "b", "b" P;mmK&&
DoEvents i,$*+2Z
ConvertWidth "c", "c" y85GKysT
DoEvents f)?s.DvUB
ConvertWidth "d", "d" u` R
DoEvents s
<Ag8U8
ConvertWidth "e", "e" cQS}pQyYN
DoEvents D.)R8X
ConvertWidth "f", "f" rM_8piD
DoEvents V)_mo/D!D
ConvertWidth "g", "g" D9 ,~Fc
DoEvents : ,LX3,
ConvertWidth "h", "h" {*yhiE ,
DoEvents L`yS'
ConvertWidth "i", "i" wNcf7/ky
DoEvents *"q ~z
ConvertWidth "j", "j" 3
#^xxEu
DoEvents $ [M8G
ConvertWidth "k", "k" QR\qGhQ
~
DoEvents .' 3;Z'%"g
ConvertWidth "l", "l" <?2[]h:wp
DoEvents Go+f0aig
ConvertWidth "m", "m" f
L
'
42
DoEvents Y]^[|e8
ConvertWidth "n", "n" | t3_E
ConvertWidth "o", "o" +Y'(,J
ConvertWidth "p", "p" "72
_Sw
ConvertWidth "q", "q" US@ak4Y6Z
ConvertWidth "r", "r" ~~&8I!r e
ConvertWidth "s", "s"
QU8?/
ConvertWidth "t", "t" .2Y"=|NdA
ConvertWidth "u", "u" ^Me__Y
ConvertWidth "v", "v" ZYc)_Og
ConvertWidth "w", "w" $*`fn{2
ConvertWidth "x", "x" RVlC8uJ;P
ConvertWidth "y", "y" li$(oA2
ConvertWidth "z", "z" W29@`93
ConvertWidth "A", "A" oypX.nye_
ConvertWidth "B", "B" CQ"5bnR
ConvertWidth "C", "C" :&9#p%/
ConvertWidth "D", "D" pV<18CaJ
ConvertWidth "E", "E" [gqV}Y"Md
ConvertWidth "F", "F" maXQG&.F
ConvertWidth "G", "G" ppmDmi~X
ConvertWidth "H", "H" !xA;(<K[^
ConvertWidth "I", "I" =uMoX
-
ConvertWidth "J", "J" `hY%<L sI
ConvertWidth "K", "K" !C&}e8M|eX
ConvertWidth "L", "L" E{(7]Wri
ConvertWidth "M", "M" 1g^N7YF
ConvertWidth "N", "N" ]*
':
ConvertWidth "O", "O" xzAyE5GL>
ConvertWidth "P", "P" nhiCV>@y
ConvertWidth "Q", "Q" p/4GOU5g
ConvertWidth "R", "R" &5~bJ]P
ConvertWidth "S", "S" svHs&v
ConvertWidth "T", "T" +p>tO\mo
ConvertWidth "U", "U" !1-:1Whz8
ConvertWidth "V", "V" G %Wjtrpj
ConvertWidth "W", "W" AW%^Xt
ConvertWidth "X", "X" FJ}/g
?
ConvertWidth "Y", "Y" {6 C!^ 5
ConvertWidth "Z", "Z" z;2kKQZm
ConvertWidth "^l", "^p"
LmseY(i
N
ConvertWidth "(", "(" BQ2DQ7q
ConvertWidth ")", ")" bTb|@
q: ?6
End If &,3.V+Sz
j@&F[ r
With ActiveDocument gR?=z}`@p
Dim tbl As Table cQA;Y!Q#
For Each tbl In .Tables tb"UGa
tbl.Rows.Alignment = wdAlignRowCenter jaFBz&P/#
tbl.Range.Font.NameFarEast = "楷体" .ie \3q)
tbl.Range.Font.NameAscii = "Times New Roman" "b|qyT* Sl
tbl.Range.Font.Size = 10.5 W7_X=>l
Next qMmh2a&
Set tbl = Nothing .
/rNq!*a
End With A)/_:
OF2*zU7M
m';:):
With ActiveDocument ? R#-gvX%
h/QZcA
For i = 1 To .TablesOfContents.Count ,4)zn6tC
.TablesOfContents(i).Delete !%_}Rv!JT
Next *)T},|Gc
_@ev(B
l)4KX{Rz{A
'>@evrG
paraTotal = .Paragraphs.Count z|<
6y~5,
paraCounter = 1 ")i4w{_y
TMT65X!
LastTitle0No = 0 7??+8T#n*
LastTitle1No = 0 j_j~BXhIS
LastTitle2No = 0 >E^sZmY[f-
LastTitle3No = 0 -'*B%yy
LastTitle4No = 0 /MosE,7l
LastTableNo = 0 Oz-X}eM
LastFigureNo = 0 K*d+pImrV
L|u\3.:
Dim Sec As Long Dc}-wnga
Pz:,q~
Sec = InputBox("正文从第一节开始?", "节设置", 6) ^R!
qxSj
If Sec = 0 Then !Hr~B.f7
Exit Sub 9V9K3xWn
End If dE%rQE7'
HX7"w
k = 0 zL+jlUkE
Do While (paraCounter < paraTotal) And bContinue +YI/(ko=
k = k + 1 W{*U#:Jx1
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then ~Yb5FYE
Exit Do j[F\f>
End If &) T5V
paraCounter = paraCounter + 1 `DUMTFcMX
If k Mod 20 = 0 Then Z[[qW
f
Me.lbCounter.Caption = paraCounter l*e*jA_>:7
DoEvents x32hO;
End If s%1 O}X$c
Loop 5.q2<a :
)4toBDg"
^"(CZvq
Do While (paraCounter < paraTotal) And bContinue to|O]h2*U2
a{GPAzO+
ParaText = Trim(.Paragraphs(paraCounter).Range.Text)
|'aGj
ShapeHeight = 0 `gDpb.=Y
ShapeWidth = 0 N!
}p
v1oq[+
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth SRRqIQz
b>er 'U
Select Case ParaType iT227v!s
Case "【】表格内容" ^yb3L1y
.Paragraphs(paraCounter).Style = "QLNU表格内容" nxS|]
Case "章" bzF>Efza
LastTitle0No = LastTitle0No + 1 5N
@k9x
'新一章开始,复位其下属标题编号 B8:G1r5G/
LastTitle1No = 0 8Mf6*G#Y
LastTitle2No = 0 NhU~'k
LastTitle3No = 0 ~a^mLnY@
LastTitle4No = 0 J NPEyC
1I{vBeMj
k = Val(ttNo) F w
)#[
If k = 0 Then '非数字编号章节 zn@<>o8hU
If ttNo <> NoSeries1(LastTitle0No) Then -r@fLkwg
rText = "第" & NoSeries1(LastTitle0No) & ttString }~DlOvsq
Me.ErrMsg.AddItem "章节编号错误:" & ParaText #.'0DWT\-
End If )+OI}
Else ^<}9#q/rt
If Val(ttNo) <> LastTitle0No Then wqk D
rText = "第" & LastTitle0No & ttString {P&{+`sov
Me.ErrMsg.AddItem "章节编号错误:" & ParaText G%jgr"]\z
End If @@-n/9>vs
iVu
End If !KKkw4
MX2]Q
'章段落设置 YC8wo1;Y!
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 V|gW%Z,j
.Paragraphs(paraCounter).Style = "QLNU章节" :k*'MU}
.Paragraphs(paraCounter).Range.Select lmi,P-Q
Selection.EndKey unit:=wdLine PzMJ^H{
tc = Replace(rText, vbCr, "") &)zNu
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False u!hY
bCB
Case "一级标题" o^&u?F9
LastTitle1No = LastTitle1No + 1 p.A_,iE
'新一级标题开始,复位其下属标题编号 O3/][\
LastTitle2No = 0 MxQhkY-=
LastTitle3No = 0 ]w`)"{j5m
LastTitle4No = 0 ;4
>YPH
WYSqnmi
If ttNo <> NoSeries1(LastTitle1No) Then #>iBu:\J
rText = NoSeries1(LastTitle1No) & "、" & ttString ;|}N\[fk%]
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText Ti$G2dBO
End If
c@7d4Jz
2Tec#eYe
PV$)k>H-
'一级标题段落设置 格式:一、标题内容 )CJXkzOX
.Paragraphs(paraCounter).Range.Text = rText bA!n;
.Paragraphs(paraCounter).Style = "QLNU一级标题" LmWZ43Z"@
.Paragraphs(paraCounter).Range.Select /99S<U2ej
Selection.EndKey unit:=wdLine 8Wqh 8$
tc = Replace(rText, vbCr, "") m!Cvd9X=
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False mvgsf(a*'
Case "二级标题" Q3[MzIk 4
LastTitle2No = LastTitle2No + 1 rofj&{w
'新二级标题开始,复位其下属标题编号 Y3=5J\d!a
LastTitle3No = 0 )S@e&a|
LastTitle4No = 0 ABb,]
%
lR5[UKr
If ttNo <> NoSeries1(LastTitle2No) Then b
5<&hN4g
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString b+Vfi9<
ErrMsg.AddItem "二级标题编号错误:" & ParaText <`rmQ`(}s
End If c!*yxzs\
CT1@J-np
'二级标题段落设置 格式:(一)、标题内容 .ZQD`SRrI
.Paragraphs(paraCounter).Range.Text = rText T$rhz)_q
.Paragraphs(paraCounter).Style = "QLNU二级标题" uatY:GSR
Q6)Wh6Cm
.Paragraphs(paraCounter).Range.Select M(8dKj1+
Selection.EndKey unit:=wdLine M15Ce)oB1(
tc = Replace(rText, vbCr, "") : fMQ,S0
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False Zgy~Y0Di
Heh.CD)Q
Case "三级标题" E6JfSH#
LastTitle3No = LastTitle3No + 1 =z^2KH
'新三级标题开始,复位其下属标题编号 @+Yql
LastTitle4No = 0 -<H\VT%98
!xk`oW
If Val(ttNo) <> LastTitle3No Then ~tx|C3A`d
rText = LastTitle3No & ". " & ttString Fn
xPM`Zx
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText `yF6-F
J=7.-R|t
End If [$M=+YRHMW
'三级标题段落设置 格式:1. 标题内容 iZY4+
X
.Paragraphs(paraCounter).Range.Text = rText (KxI*
.Paragraphs(paraCounter).Style = "QLNU三级标题" -Pt.
.Paragraphs(paraCounter).Range.Select G5*"P!@6
Selection.EndKey unit:=wdLine M$_E:u&D
tc = Replace(rText, vbCr, "") *U>"_h T0
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False 6Cw+
Case "四级标题" kb3>q($
LastTitle4No = LastTitle4No + 1 -UY5T@as
yC \dM1X
If Val(ttNo) <> LastTitle4No Then Voy1
rText = "(" & LastTitle4No & "). " & ttString V6Z~#=EQ
ErrMsg.AddItem "四级标题编号错误:" & ParaText /JsA[}.6
#O 2g]YH
End If >x?x3 #SX
'四级标题段落设置 格式:(1). 标题内容 4fauI%kc
.Paragraphs(paraCounter).Range.Text = rText y_mTO4\C2
.Paragraphs(paraCounter).Style = "QLNU四级标题" K|L&mL&8
.Paragraphs(paraCounter).Range.Select " GRR,7A
Selection.EndKey unit:=wdLine PWci D '!
tc = Replace(rText, vbCr, "") ;>
hRj!
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False ;QO3^P}
J([Y4Em5
Case "表格标题" rebnV&-
LastTableNo = LastTableNo + 1 ,5V w^@F
{=K);z
If ttNo <> CStr(LastTableNo) Then <<'%2q5
rText = "表" & LastTableNo & ". " & ttString MrjgV+P}[
ErrMsg.AddItem "表格编号错误:" & ParaText abMB-
+FomAs1*f
End If GdN9bA&,
\
SCi\j/a(
'表格名称段落设置 格式:表1. 表格名称 xmVW6 ,<?
.Paragraphs(paraCounter).Style = "QLNU表格标题" %#t*3[
xe = Replace(rText, vbCr, "") dCA| )
.Paragraphs(paraCounter).Range.Select 'h}(> %
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 Lb]!TOl
Selection.Range.Text = xe .`p,pt;
Selection.EndKey ~:FF"T>
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False d?:KEi-<7
K@%o$S?>z_
Case "表格首行" 3JYhF)G
.Paragraphs(paraCounter).Style = "QLNU表格首行" mrmm@?
Case "图片标题" OSoIH`tA
LastFigureNo = LastFigureNo + 1 B(|*u
uA-1VwW+N
If ttNo <> CStr(LastFigureNo) Then |7%has3"
rText = "图" & LastFigureNo & ". " & ttString u,RR|/@
ErrMsg.AddItem "表格编号错误:" & ParaText O06 2c)vIY
.*}!XKp0j
End If Cv[_
N%3[
'图片名称段落设置 格式:图1. 图名称 ,3XlX(P
.Paragraphs(paraCounter).Range.Text = rText R?{f:,3R
.Paragraphs(paraCounter).Style = "QLNU图片标题" AQ%B&Q(V1
.Paragraphs(paraCounter).Range.Select =/5^/vwg
Y
Selection.EndKey unit:=wdLine elJ?g
&"
xe = Replace(rText, vbCr, "") <+y%k~("
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False 5Ve`j,`=<
Case "正文" ^4/
'正文名称段落设置 uB=DC'lkg
.Paragraphs(paraCounter).Style = "QLNU正文" eI,'7u4q
Case "文献条目" TWSqn'<E
With .Paragraphs(paraCounter) 8k{KnH
'.Range.Select E)3Ah!
'Selection.ClearFormatting ygK@\JHn
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” =kzuU1s
.Style = "QLNU参考文献"
5ENU}0W
End With rEHlo[7^
Case "图表注解" <)$&V*\
With .Paragraphs(paraCounter) .;\uh$c
.Range.Font.NameFarEast = "楷体" UuS6y9@v
.Range.Font.NameAscii = "Times New Roman" F(O"S@
.Range.Font.Size = 9 '小5号字 MO^Q 8v
joz0D!-"#
.Alignment = wdAlignParagraphCenter Ztl?*zL
.LeftIndent = 0
&x?m5%^l
.RightIndent = 0 M^ZEAZi
.FirstLineIndent = 0 knn9s0'Q
.LineSpacing = 12 CdZ. T/x
.LineSpacingRule = wdLineSpaceExactly h+rW%`B
.LineUnitAfter = 0 2Tp@;[!3
.LineUnitBefore = 0 gV}c4>v(
.OutlineLevel = wdOutlineLevelBodyText Nl]_Ie6
.PageBreakBefore = False FEH+ PKSc
.RightIndent = 0 ~P7zg!p/q
.WordWrap = True (H^)wDb
.LineUnitAfter = 0.5 0Q7|2{
E"%dO
End With shgZru
Case Else ZH)Jq^^RI
'不作处理 {x,d9I
End Select A)#w~ X4
n\ 'PNB
'含有inlineshape的段落处理 |.*nq
If ShapeHeight > 30 Then sU(<L0
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 Rp+Lu
End If ARUzEo
gcf
DD5cUlOSu
If (ShapeWidth + ShapeHeight) > 150 Then _Z>ny&
.Paragraphs(paraCounter).Style = "QLNU图片段落" u>ZH-nw O
End If +~K)
~
Qz4eQlWhp
'段落计数器递 ,ZI#p6
paraCounter = paraCounter + 1 B?%e-xV-
Me.lbCounter.Caption = "当前检测段落:" & paraCounter R
X N0v@V
Me.txtStatus.Text = ParaText j/t)=c
DoEvents IayF<y,8
Loop Tnv,$KOhs
End With :F8h}\a*
s%QCdU ]
msg = "" 1%$t;R
|.z4 VJi4
For i = 0 To Me.ErrMsg.ListCount - 1 oeYUsnsbi
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) W7W(jMH
Next qTrM*/m:]L
w=_q<1a
5BJn_<
.],:pL9d
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg .[r1Qz7G
Me.cmdCheck.Enabled = True vA"LV+@
Me.txtStatus.Visible = True ){LU>MW{&
Me.lbParaType.Visible = False +H:}1sT;n
gy1R.SN
bContinue = False ;il+C!6zpf
End Sub ;V?3Hwl
LC7%Bfn!
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) {SF'YbY
Dim pTEXT As String CwM1
_3cE
-x{@D{Q%
pTEXT = ChKRange.Text g@'2 :'\
?8qN8rk^+
ParaType = "其它" C2CR#b=)i
TitleString = pTEXT }Ug$d>\
TitleNo = "N/A" Nwj M=GG
Up1n0
shpCounter = ChKRange.InlineShapes.Count
G#Kw6
If shpCounter <> 0 Then b@S~
=
MaxShpHeight = 0: TotalShpWidth = 0 x4i&;S
P
0
For i = 1 To shpCounter !hFzIp
k = ChKRange.InlineShapes(i).Height j#~ S"t
l = ChKRange.InlineShapes(i).Width pocXQEg$]
If k > MaxShpHeight Then IyEfisOK?
MaxShpHeight = k O7]kcA
End If 2:RFPK
TotalShpWidth = TotalShpWidth + l shD4";8*@
Next U3jnH
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then Aj8zFt]
Exit Sub Quwq_.DU
End If 63(XCO
End If 4T6: C?V
i#NtiZ.t=
'空行 Kv)Kn8df
If Len(pTEXT) <= 2 Then 5yyc0UG
Exit Sub :N!s@6
End If 5)Z:J
;}lsD1S:
O5MV&Zb(
'是否为表格中的文字 Wf3{z
D~
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then 1#3eY?Nb
ParaType = "表格内容" 0Bt>JbGs4
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) [!C!R$AMa
If k = 1 Then b")O#v.
ParaType = "表格首行" $O&N
End If _?]W%R|
Exit Sub m
7S`u
End If nA(5p?D+YB
DUSQh+C
'例外情况:脚注 l_s#7 .9$
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then ~g9~D}48k'
ParaType = "脚注" v^J']
p
Exit Sub DS+BX`i%#p
End If p"7]zq]'
^6gEL~m|]
'例外情况:尾注 OHwH(}H?
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then 6i;q=N$'
ParaType = "尾注" n%;4Fm?
Exit Sub ~W-l|-eogz
End If LSR0yCU
`z`=!1
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then f8\D AN
ParaType = "页眉页脚" K8/jfm
Exit Sub VnqcpJ
End If 'C=(?H)M
1+"d-`'Z2O
Scug
wSB
With regEX U'^ G-@
.Global = True X(O:y^sX}
r0wAh/J|
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" Ng1bjq}E2
If regEX.Test(pTEXT) Then *0
vRVlYf
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") <isU D6TC
TitleString = regEX.Replace(pTEXT, "$3") @
EURp
TitleNo = regEX.Replace(pTEXT, "$1") Hh%"
ParaType = "章" m70AWG
Exit Sub g*Pn_Yo[.
End If Z`f?7/"B
odDVdVx0
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" j<QK1d17
If regEX.Test(pTEXT) Then uaYI3w@^
ParaType = "一级标题" '[HBKn$`
regEX.Execute (pTEXT) 6-~ZOMlV
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") Wv%F^(R7
TitleString = regEX.Replace(pTEXT, "$3") Ci 'V
TitleNo = regEX.Replace(pTEXT, "$1") <00nu'Ex1v
Exit Sub $VjMd f
End If :]4s
;q:m
QL @SE@"
'全角或半角括号中的数字 /oZvm
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" k&M~yb
If regEX.Test(pTEXT) Then 1h|qxYO
ParaType = "二级标题" b'C#]DorE
regEX.Execute (pTEXT) <I*N=;7
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") p(-EtxP
TitleString = regEX.Replace(pTEXT, "$5") V*r/0|vd
TitleNo = regEX.Replace(pTEXT, "$2") m7`S@qG
Exit Sub *ZV3]ig2$
End If Ga+Cb2$
Lxn-M5RPQ
'阿拉伯数字 1. 2. qfdL *D
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" @#*{*
S8
If regEX.Test(pTEXT) Then S'`G7ht
ParaType = "三级标题" PdEPDyFk h
regEX.Execute (pTEXT) pI.~j]*:{
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 z}iz~WZ
TitleString = regEX.Replace(pTEXT, "$3") :`K2?;DC8
TitleNo = regEX.Replace(pTEXT, "$1") G*=&yx."E
Exit Sub M1]w0~G
End If Xq_hC"s
i03=Af3
'全角或半角括号中的阿拉伯数字 P^ht$)Y
.Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" GDs/U1[*
If regEX.Test(pTEXT) Then uP$i2Cy
ParaType = "四级标题" 7Le-f
regEX.Execute (pTEXT) tJ*/5k
&
ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") d04gmc&*
TitleString = regEX.Replace(pTEXT, "$5") \[|X^8j
TitleNo = regEX.Replace(pTEXT, "$2") Xgl
%2'
Exit Sub 0$NzRPbH
End If x?]fHin_
Y
O|hwhe_
'表格名称 P
T~F^8,)
.Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" mML B?I
If regEX.Test(pTEXT) Then Lp3pJE
ParaType = "表格标题" cuI&Q?+c}
regEX.Execute (pTEXT) w#_7,*6]
ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) )y6
TitleString = Trim(regEX.Replace(pTEXT, "$3")) [VL
q/lg*
TitleNo = Trim(regEX.Replace(pTEXT, "$1")) W4qnXD1n
strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换
;1s;"
Exit Sub ~.6% %1?
End If }8ESp3~e_
T
*S)U ;
'图片名称 g6x
QQ,q=l
.Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" mKE'l'9A_
If regEX.Test(pTEXT) Then lfG',hlI;
ParaType = "图片标题" m<LzgX
regEX.Execute (pTEXT) EiP N44(
ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3") xnJ#}-.7
TitleString = regEX.Replace(pTEXT, "$3") |9F-ZH~6
TitleNo = regEX.Replace(pTEXT, "$1") oCLM'\
Exit Sub K47.zu
End If aK(e%Ed t"
vXZP>
'参考文献 [vz2< genn
.Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})" '[数字]、 QpiDBJCL
If regEX.Test(pTEXT) Then 3g:P>(
ParaType = "文献条目" Sj:c {jyJd
'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4") ,$aqF<+;
'TitleNo = regEX.Replace(pTEXT, "[$2] ") 5z_Kkf?o
Exit Sub xOr"3;^
End If 1NG[
xSO5?eR"u
prfx = Left(pTEXT, 2) +3M1^:
If prfx = "注:" Or prfx = "注:" Then DZ $O%
ParaType = "图表注解" 6mIeV0Q'
Exit Sub OlptO60{ ]
End If Y9
Bk$$#\
l^%52m@{
_RS
CyV
ParaType = "正文" /XA*:8~!
hhhxsGyv
End With \ [M4[Qlq
End Sub 4#t=%}
6(7dr?^eGT
Sub ConvertListToOrdinary() ,&s"f4Mft
Dim st As Paragraph o.Bbb=*rZ
With ActiveDocument r[^O 7
For i = .Paragraphs.Count To 1 Step -1 [z*1#lj S
Set st = .Paragraphs(i) t8; nP[`
lst = st.Range.ListFormat.ListString _mQ
j=
If lst <> "" Then @*uZ+$
st.Range.ListFormat.RemoveNumbers +;*4.}
st.Range.InsertBefore lst & " " E(z|LS*3
End If &h.?~Ri
Next "Er8RUJA
End With /!.]Y8yEH
Set st = Nothing FW)~e*@8=
End Sub =EH/~NGk
In;P33'p
Private Sub UserForm_Activate() I)9,
Me.lbTotal.Caption = "当前文章段落总数:" & ActiveDocument.Paragraphs.Count & " 共" & ActiveDocument.Sections.Count & "节" a<]vHC7
Me.lbTotal.Font.Bold = True ar S@l<79
Me.txtStatus.Visible = False t\PSB
Me.cmdCheck.Enabled = True 6OJhF7\0&
3[?;s}61
End Sub {iCX?Sb
n
4cos
0W_u"UY$c
Sub CheckSuperScript() Qs?p)3qp
Selection.Find.ClearFormatting =s*4y$%I
Selection.Find.Replacement.ClearFormatting w_;$ahsu~
With Selection.Find W6r3v)~
.Text = "[【\[[〖](*)[】\]〗]]" +VJyGbOcC
.Replacement.Text = "[\1]" (=Oo=8\
.Replacement.Font.Superscript = True ynf!1!4
'.Replacement.Font.Color = wdColorBlue fN21[Jv3
.Forward = True (]VY==t~
.Wrap = wdFindContinue _PQk<QZ
.FORMAT = True ay`R jT
.MatchCase = False Au{ b1n
.MatchWholeWord = False [ \%a7ji#
.MatchByte = False <u1`o`|-
.MatchAllWordForms = False R:ecLbC
.MatchSoundsLike = False ;TK$?hrv*1
.MatchWildcards = True '|*e4n
End With JV8*;n%}-
Selection.Find.Execute Replace:=wdReplaceAll V}~',o<m
End Sub J l{My^I5
sPl3JP&s
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) %sPq*w.
bContinue = False x8C
*
Set regEX = Nothing h0A%KL
End Sub *.VNyay
\/nSRAk
Sub CeateOrModifyStyle() 91nB?8ZE6,
' `Tk~?aY
' ]r%fAmj
Dim stl As Style *y` (^kyS
jLY$P<u?%P
Options.Pagination = False Ls3r( Tf
3<[q>7X
On Error Resume Next d+5v[x~'
For Each stl In ActiveDocument.Styles S\GxLW@x
stl.Delete 'geN
dx
Next ka{!' ^
On Error GoTo 0 5`lVC$cP
c+O:n:L
Set stl = Nothing (^_INy*
O%aHQL%Sz
DoEvents tO D}&
On Error Resume Next r gi4>
9+8N-LZ
ActiveDocument.Styles.Add Name:="BaseStyle", Type:=wdStyleTypeParagraph *+00
k!x`cp
ActiveDocument.Styles.Add Name:="QLNU论文题目", Type:=wdStyleTypeParagraph f]C^{Uk#
ActiveDocument.Styles.Add Name:="QLNU中文摘要", Type:=wdStyleTypeParagraph +tG'
M"msLz
ActiveDocument.Styles.Add Name:="QLNU英文标题", Type:=wdStyleTypeParagraph T-x9IoE
ActiveDocument.Styles.Add Name:="QLNU英文摘要", Type:=wdStyleTypeParagraph 1=z\,~b
aZ|S$-}
ActiveDocument.Styles.Add Name:="QLNU目录项", Type:=wdStyleTypeParagraph x^cJ~e2
ActiveDocument.Styles.Add Name:="QLNU章节标题", Type:=wdStyleTypeParagraph L$"pk{'
ActiveDocument.Styles.Add Name:="QLNU一级标题", Type:=wdStyleTypeParagraph K$s{e0
79
ActiveDocument.Styles.Add Name:="QLNU二级标题", Type:=wdStyleTypeParagraph 3Tc90p l*t
ActiveDocument.Styles.Add Name:="QLNU三级标题", Type:=wdStyleTypeParagraph ytV[x
ActiveDocument.Styles.Add Name:="QLNU四级标题", Type:=wdStyleTypeParagraph
83aWMmA(1
ActiveDocument.Styles.Add Name:="QLNU正文", Type:=wdStyleTypeParagraph !
t{
79k+R9m
ActiveDocument.Styles.Add Name:="QLNU表格标题", Type:=wdStyleTypeParagraph !9.\A:G
ActiveDocument.Styles.Add Name:="QLNU表格首行", Type:=wdStyleTypeParagraph <^W5UU#Pg
ActiveDocument.Styles.Add Name:="QLNU表格内容", Type:=wdStyleTypeParagraph {Q`Q2'@
ActiveDocument.Styles.Add Name:="QLNU图片标题", Type:=wdStyleTypeParagraph A
6E~GJa
ActiveDocument.Styles.Add Name:="QLNU图片段落", Type:=wdStyleTypeParagraph [By|3bI
H|MAbx
7
ActiveDocument.Styles.Add Name:="QLNU参考文献", Type:=wdStyleTypeParagraph G,1g~h%I$
On Error GoTo 0 _Kh8
<$h
DoEvents t1$pl6&,
v-"nyy-&Z
'BaseStyle IJ:JH=8
ActiveDocument.Styles("BaseStyle").AutomaticallyUpdate = False r
Cz,XYV
With ActiveDocument.Styles("BaseStyle").Font cFq2 6(
e
.NameFarEast = "宋体" >7cDfv"
.NameAscii = "Times New Roman" 6(Ntt
.NameOther = "宋体" H
=&K_
.Size = 10.5 KFa
Yn
.Bold = wdUndefined LY#V)f
.Italic = wdUndefined m%.[|sZ3EM
.Subscript = wdUndefined ICc:k%wE7
.Subscript = wdUndefined %WX^']p
uu>R)iTQ%S
.Underline = wdUnderlineNone o,?h}@
.UnderlineColor = wdColorAutomatic ;
0M"T[c
.StrikeThrough = False ?+%bEZ`
.DoubleStrikeThrough = False 7xO~v23oe
znIS2{p/`
.Outline = False 3;!!`R>e
.Emboss = False ^ ]+vtk
.Shadow = False w6-<HPW<S
.Hidden = False F[)tg#}@G
.SmallCaps = False myd:"u,}9
.AllCaps = False F ^m;xy
.Color = wdColorAutomatic tbfwgK
.Engrave = False ZXIz.GFy+
.Scaling = 100 M!%|IKw
.Kerning = 1 I=
cayR
.Animation = wdAnimationNone Sogt?]HB$
.DisableCharacterSpaceGrid = False FJ{&R Ld
.EmphasisMark = wdEmphasisMarkNone ^V]IPGV
End With f|3LeOyz
With ActiveDocument.Styles("BaseStyle").ParagraphFormat X+N8r^&
.LeftIndent = 0 }KNBqPo4B
.RightIndent = 0 ^7t1'A8e<
.SpaceBefore = 0 6['o^>\}f
.SpaceBeforeAuto = False ()n2 KT
.SpaceAfter = 0 YOA)paq+
.SpaceAfterAuto = False #>sIXY
U]9k,#
.LineSpacingRule = wdLineSpaceSingle 6!;D],,"#.
.Alignment = wdAlignParagraphJustify 6.[3N~pq
b?,=|H
.WidowControl = False ?N@[R];
.KeepWithNext = False 1F+JyZK}w
.KeepTogether = False K*p3#iB
.PageBreakBefore = False
5{v uN)K3
.NoLineNumber = False glBS|b$\:
CAN1~
.FirstLineIndent = CentimetersToPoints(0) [F{P0({%?
.OutlineLevel = wdOutlineLevelBodyText m9-=Y{&/
.CharacterUnitLeftIndent = 0 Wdga(8t
.CharacterUnitRightIndent = 0 g+(Y)9h&
.CharacterUnitFirstLineIndent = 0 {K:
]dO
.LineUnitBefore = 0 8,e%=7h_e
.LineUnitAfter = 0 x`2du/
C
.AutoAdjustRightIndent = True K `A8N
.DisableLineHeightGrid = True I\Cg-&e
s3K!~v\L]
.FarEastLineBreakControl = True Fr (;C>
.WordWrap = True O.8k [Ht
.Hyphenation = False k/BlkjlNE
VtGZB3
.HangingPunctuation = True 8]bLp
.HalfWidthPunctuationOnTopOfLine = True "3_GFq
.AddSpaceBetweenFarEastAndAlpha = True K
<5 0>uG
.AddSpaceBetweenFarEastAndDigit = True k[f_7lJ2
.BaseLineAlignment = wdBaselineAlignBaseline WYkh'sv >
End With XPnHi@x
ActiveDocument.Styles("BaseStyle").NoSpaceBetweenParagraphsOfSameStyle = False O]j<