Dim bContinue As Boolean K%WG[p\Eu
VrnZrQj<
Dim regEX As New RegExp 0vrx5E!
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 g&?{^4t]
Y [%<s/
Dim LastTitle0String As String, LastTitle0No As Long eR>|1s%^
Dim LastTitle1String As String, LastTitle1No As Long QpiA~
4
Dim LastTitle2String As String, LastTitle2No As Long TWSx9ii!M:
Dim LastTitle3String As String, LastTitle3No As Long fOt?2Bh
Dim LastTitle4String As String, LastTitle4No As Long (svKq(X
Dim LastTitle5String As String, LastTitle5No As Long i.0.oy>
Dim LastTabelString As String, LastTableNo As Long vMeB2r<
Dim LastFigureString As String, LastFigureNo As Long /xw}]Fa5
kKz>]t"A
Dim strSeperator As String <7Ry"z6g;
nr- 32u
Sub ConvertWidth(fTEXT As String, rText As String) >h{)7Hv
Selection.Find.ClearFormatting W*
^_Ul|
Selection.Find.Replacement.ClearFormatting D&!c7_ ^
Selection.Find.Wrap = wdFindContinue D2 X~tl5<
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText JXF0}T)C
DoEvents [SU;U['7
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True _Z_R\
End Sub cN%@
nW0i
.0?A0D?sP
Sub ClearDomain() I T?~`vi
With Selection.Find _o'a|=Osx>
.ClearFormatting vX<^x2~9(
.Replacement.ClearFormatting s|!lw
.Wrap = wdFindContinue .njk^,N
Me.txtStatus.Text = "清除所有域代码" ,j
e
DoEvents YWF Hv@
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False |}isSCt
End With 1w'W)x
End Sub i>%A0.9
*1g3,NMA
Private Sub cmdCheck_Click() yz^4
TqJ
bContinue = True ]\
(Ho
Dim NoSeries1(1 To 16) As String XS=f>e1<W
Dim NoSeries2(1 To 16) As String SGK
5
Dim NoSeries5(1 To 16) As String AfvIzsT0
Dim NoSeriesRM(1 To 16) As String @|EWif|
Dim paraTotal As Long, ParaText As String #R*7y%cO
Dim ttString As String, ttNo As String sMgRpem;
jhH&}d9
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long
PM`iqn)@
ky@ZEp=
Me.txtStatus.Visible = True Wg\MaZ6Di
Me.lbParaType.Visible = True JiFB<Q\
Me.cmdCheck.Enabled = False 8'#L+$O &N
P`
AW8Y6o
<7_s'UAL!
EHk$,bM
~'w]%rh!
Dim ParaType As String, rText As String tui5?\
KtD
XB>
Selection.WholeStory UT_kw}1
o
Selection.NoProofing = True L'u*WHj|v
;.Y-e
Q,
tm1 = Now : 22)` ;0
/Csk"IfuO
ActiveWindow.View.Type = wdNormalView .,<w_=
YT'olk
NoSeries1(1) = "一" @K1'Q!S*
NoSeries1(2) = "二" *>E_lWW.
NoSeries1(3) = "三" uP$C2glyz
NoSeries1(4) = "四" 6 l7iX]
NoSeries1(5) = "五" d9q`IZqee
NoSeries1(6) = "六" /z`.- D(
NoSeries1(7) = "七" *=X
61`0
NoSeries1(8) = "八" KpC!C9
NoSeries1(9) = "九" sQBKzvFO3
NoSeries1(10) = "十" xq&r|el
NoSeries1(11) = "十一" ;e0-FF+
NoSeries1(12) = "十二" I+W:}}"j
NoSeries1(13) = "十三" d'@i8N["{
NoSeries1(14) = "十四" (Rh$0^)A
NoSeries1(15) = "十五" eL88lV]I
NoSeries1(16) = "十六" Q$b4\n?44
uSUog+i
NoSeries2(1) = "㈠" Hq#q4Y
NoSeries2(2) = "㈡" m,V"S(A
NoSeries2(3) = "㈢" W#kd[Wi
NoSeries2(4) = "㈣" Scfe6+\EW
NoSeries2(5) = "㈤" `PZcL2~E
NoSeries2(6) = "㈥" $g_|U:,
NoSeries2(7) = "㈦" E?S
NoSeries2(8) = "㈧" \hI|I!sDWy
NoSeries2(9) = "㈨" <FfmDR
NoSeries2(10) = "㈩"
*JF7 B
ng:B;;
m
NoSeries5(1) = "①" < b-OdOg
NoSeries5(1) = "②" pU1miA '
NoSeries5(3) = "③" sq{=TB{
NoSeries5(4) = "④" {$Z
S
27
NoSeries5(5) = "⑤" m
;yIFO
NoSeries5(6) = "⑥" }U|0F#0$
NoSeries5(7) = "⑦" SvQ!n4 $
NoSeries5(8) = "⑧" Q'rgh+6
NoSeries5(9) = "⑨" :QIf0*.O
NoSeries5(10) = "⑩" 8(g}/%1mt3
Og7^7))
+<bvh<]Od
NoSeriesRM(1) = "I" ';xp+,'}\
NoSeriesRM(2) = "II" a%r( F
NoSeriesRM(3) = "III" l'7'G$v
NoSeriesRM(4) = "IV" lofP$
NoSeriesRM(5) = "V" eI98J"h%?
NoSeriesRM(6) = "VI" eh}|Wd7J
NoSeriesRM(7) = "VII" z&yVU<;
NoSeriesRM(8) = "VIII" z||FmL{
NoSeriesRM(9) = "IX" ?-JW2 E"uT
NoSeriesRM(10) = "X" {9vMc
NoSeriesRM(11) = "XI" Qt>Bvu Q
NoSeriesRM(12) = "XII" OmlM9cXm^4
NoSeriesRM(13) = "XIII" Hi nJ}MF
NoSeriesRM(14) = "XIV" )v\ A8)[
NoSeriesRM(15) = "XV" -?w3j9kk>
NoSeriesRM(16) = "XVI" CbFO9q
NZz^* Ela
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) i?861Hu
sKC(xO@L;`
If i = vbNo Then -J>f,zA
Exit Sub (L`IL e*
End If gO#%*
W
o_a' <7\#i
If Me.chkSuper.Value Then o:`^1
Me.txtStatus.Text = "检查修改所有的上标格式" j{YIVX
pgPm0+N
CheckSuperScript PLq]\y
ogqKM_
End If 8>`8p0I$+
g%okYH?
If Me.chkStyle.Value Then AjJ/t4<
Me.txtStatus.Text = "设置样式,请稍候...." $B`ETI9g-N
DoEvents mFt\xGa
CeateOrModifyStyle |E&|6h1
End If cN`P5xP'
a fLE9
W@RD
bsc
IV~5Y{(l
ClearDomain qtuT%?wT@Z
gfiFRwC`v
V/tl-;W
dF7`V J2
If Me.chkLIST.Value Then Hi^Z`97c
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" vI]V@il
(_AU)
ConvertListToOrdinary Q-J} :U
End If p-*{x
NIHcX6Nw
6Ev+!!znu
Dim pType As String, trimpTEXT As String *onVG5<
If Me.chkNum.Value = True Then pnUL+UYeM
Me.txtStatus.Text = "转换全角数字形式为半角" hPuF:iiQ4
ConvertWidth "1", "1" .E;}.X
DoEvents ']N\y6=fn9
ConvertWidth "2", "2" zEh&@{u?
DoEvents `4wy
*!]
ConvertWidth "3", "3" )}u?ftu\
DoEvents b^
A7R{G7
ConvertWidth "4", "4" 5t|$Yt[
DoEvents n.Y45(@E
ConvertWidth "5", "5" Bf;<3k)5.
DoEvents <?%49
ConvertWidth "6", "6" m[v%Qe|~
DoEvents 8S5Q{[ !
ConvertWidth "7", "7" %4})_h?j
DoEvents -.K'rW
ConvertWidth "8", "8" k ~4
o`eA
DoEvents udPLWrPF\
ConvertWidth "9", "9" !-t"}^)
DoEvents .
LeS-
ConvertWidth "0", "0" f8-~&N/_R
DoEvents >M^:x-mib
ConvertWidth "a", "a" ?*6Q;.f<
DoEvents D;z!C
ys
ConvertWidth "b", "b" q#K0EAgC
DoEvents }(oWXwFb&W
ConvertWidth "c", "c" c3WF!~1r
DoEvents O"1HO[
ConvertWidth "d", "d" ,YRBYK:
DoEvents &%tW
ConvertWidth "e", "e" qB+OxyT&
DoEvents JsEnhE}]
ConvertWidth "f", "f" G=l:v
DoEvents \F)WUIK
ConvertWidth "g", "g" 4#W*f3d[@:
DoEvents t
?05
ConvertWidth "h", "h" %Vfr#j$=
DoEvents yq!peFu
ConvertWidth "i", "i" [AYJ(H/
DoEvents m~4ik1wq
ConvertWidth "j", "j" Gn4XVzB`O
DoEvents jQ8
T
ConvertWidth "k", "k" 5 BeU/
DoEvents tMXNi\Bj
ConvertWidth "l", "l" ^4xl4nbx
DoEvents TN<"X :x9
ConvertWidth "m", "m" +0%Y.O/{
DoEvents &{q<
ConvertWidth "n", "n" Jl|^^?
ConvertWidth "o", "o" EyHL&
ConvertWidth "p", "p" $ago
ConvertWidth "q", "q" *+(eH#_2/
ConvertWidth "r", "r" ]2{]TJ@B
ConvertWidth "s", "s" KN&|&51p}
ConvertWidth "t", "t" Mm!;+bM%
ConvertWidth "u", "u" >1HXC2 Y
ConvertWidth "v", "v" 8:2Vib$
ConvertWidth "w", "w" uQKo2B0
ConvertWidth "x", "x" I8|"h8\
ConvertWidth "y", "y" *VUJ);7k
ConvertWidth "z", "z" wbI1~/
ConvertWidth "A", "A" MRT<hB
ConvertWidth "B", "B"
IFW7MF9V
ConvertWidth "C", "C" J+wnrGoK
ConvertWidth "D", "D" FGeKhA 8jT
ConvertWidth "E", "E" b5?k gY
ConvertWidth "F", "F" X{ :3UTBR
ConvertWidth "G", "G" r.c:QY$
ConvertWidth "H", "H" v=cX.^L
ConvertWidth "I", "I" Hs6Kki1
ConvertWidth "J", "J" x6ayF
q=
ConvertWidth "K", "K"
zjSHa'9*
ConvertWidth "L", "L" dj}|EW4
ConvertWidth "M", "M" &da:{
ConvertWidth "N", "N" CZ>Ujw=&k
ConvertWidth "O", "O" =CO'LyG
ConvertWidth "P", "P" ]W5p\(1g
ConvertWidth "Q", "Q" ( X+2vN
ConvertWidth "R", "R" M"-.D;sa1
ConvertWidth "S", "S" dF5y'
R'
ConvertWidth "T", "T" ^1<i7u
ConvertWidth "U", "U" OGO\u#
ConvertWidth "V", "V" -Rx;"J.H
ConvertWidth "W", "W" ?!.J0q
ConvertWidth "X", "X" &8I*N6p:%/
ConvertWidth "Y", "Y" B~b
='jN
ConvertWidth "Z", "Z" lq a~ZF*
ConvertWidth "^l", "^p" 5W=Jn?y2
ConvertWidth "(", "(" mQ9shdvt-
ConvertWidth ")", ")" iiWpmE<,
#99 =wn
End If UID`3X
TD78&a#
With ActiveDocument w O6>jW
7
Dim tbl As Table QZ[S,
c^
For Each tbl In .Tables F+L%Ho;@P
tbl.Rows.Alignment = wdAlignRowCenter (iIzoEpb8W
tbl.Range.Font.NameFarEast = "楷体" &he:_p$x
tbl.Range.Font.NameAscii = "Times New Roman" }}bMq.Q'
tbl.Range.Font.Size = 10.5 c2L\m*^o
Next qnqS^K,':
Set tbl = Nothing 9W-1P}e,
End With dp4vybJ
(W }DMcuSd
|:,`dQfw
With ActiveDocument vP\6=7
1Y
G<]@nP{P
For i = 1 To .TablesOfContents.Count 4J?\JcGs
.TablesOfContents(i).Delete Z~[eG"6zI
Next "'/+}xM"5
8~T=p:z'
TX7dwmt)N
qn'TIE.
paraTotal = .Paragraphs.Count _xBh
Mu2f
paraCounter = 1 "<f?.l\+
F{_,IQ]U
LastTitle0No = 0 LBmXy8'T`
LastTitle1No = 0 [.w `r>kZI
LastTitle2No = 0 L[<CEk
LastTitle3No = 0 F!w|5,)
LastTitle4No = 0 TI\EkKu"
LastTableNo = 0 ^/#8 "
LastFigureNo = 0 GkI{7GD:z
U#<{RqY
Dim Sec As Long )1$H7|
Fc=6*.hy
Sec = InputBox("正文从第一节开始?", "节设置", 6) Nq|y\3]
If Sec = 0 Then K3h"oVn
Exit Sub <9T,J"y
End If Tt=;of{
?b93! Q1
k = 0 +;=>&XR0m
Do While (paraCounter < paraTotal) And bContinue @Vy Ne(U
k = k + 1 1&vR7z]*
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then o)$eIu}Wg
Exit Do Z,"YMUl'
End If Ocn@JOg
paraCounter = paraCounter + 1 0k4XVd+Nv
If k Mod 20 = 0 Then j`K0D65
Me.lbCounter.Caption = paraCounter P+C5
s
DoEvents w,
_LC)9
End If EQX<<x"
Loop AYfe_Dj
}:QoY Nq
x(p/9$.#
Do While (paraCounter < paraTotal) And bContinue BuUM~k&SY
G:
`So
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) `cIeqp
ShapeHeight = 0 e E(+
ShapeWidth = 0 _>r(T4}]
yU"#2 *C
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth =@q,/FR-
P*OT&q
Select Case ParaType 3,#v0 #
Case "【】表格内容" B\l 0kiNT
.Paragraphs(paraCounter).Style = "QLNU表格内容" 4vND ~9d
Case "章" /!y;h-
LastTitle0No = LastTitle0No + 1 "KSdC8MS
'新一章开始,复位其下属标题编号 5=}CZYWB
LastTitle1No = 0 lHHx D
LastTitle2No = 0 K<%8
.mZ7
LastTitle3No = 0 i6y=3k
LastTitle4No = 0 Kaaz,C.$^
fI'+4
)@x
k = Val(ttNo) q8,,[R_
If k = 0 Then '非数字编号章节 M
9NT%7Il
If ttNo <> NoSeries1(LastTitle0No) Then rq\<zx]au
rText = "第" & NoSeries1(LastTitle0No) & ttString cr?ZXu_
Me.ErrMsg.AddItem "章节编号错误:" & ParaText qT&zg@m
End If <I 0om(P
Else `tc
X[(`
If Val(ttNo) <> LastTitle0No Then wDW/?lT&
rText = "第" & LastTitle0No & ttString C~'.3Q6
Me.ErrMsg.AddItem "章节编号错误:" & ParaText hlz/TIP^N3
End If O1+yOef"k
d`%7Pk
End If ~QUN O~
JbMp /
'章段落设置 ;%cW[*Dw
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 UIU6rilB
.Paragraphs(paraCounter).Style = "QLNU章节" 9[DlJ@T}
.Paragraphs(paraCounter).Range.Select g@pK9R%wH<
Selection.EndKey unit:=wdLine \< a^5'
tc = Replace(rText, vbCr, "") 8i<]$
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False ?_v_*+b_
Case "一级标题" N9M",(WTt}
LastTitle1No = LastTitle1No + 1 jj]|}G
'新一级标题开始,复位其下属标题编号 51*[Ibx
LastTitle2No = 0 S,f#g?V
LastTitle3No = 0 N P5K1:
LastTitle4No = 0 /gex0w
)J
2UNIgN
If ttNo <> NoSeries1(LastTitle1No) Then ?FEh9l)d\
rText = NoSeries1(LastTitle1No) & "、" & ttString tV4wkS=R|
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText "
RIt
End If B}K<L\S
}_H\75Iv
*y$CDv
'一级标题段落设置 格式:一、标题内容 FMzG6nrdBN
.Paragraphs(paraCounter).Range.Text = rText Y{Lxo])e
.Paragraphs(paraCounter).Style = "QLNU一级标题" /zr)9LQY0
.Paragraphs(paraCounter).Range.Select e AaS }g
0
Selection.EndKey unit:=wdLine 0}|%pmY`
tc = Replace(rText, vbCr, "") NLUO{'uUW
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False w'7J`n:{]
Case "二级标题" 6E(..fo:"
LastTitle2No = LastTitle2No + 1 W7{^/s5r
'新二级标题开始,复位其下属标题编号 ] ;HCt=I~
LastTitle3No = 0 0%,?z`UY
LastTitle4No = 0 5KIhk`S
IGab~`c-[
If ttNo <> NoSeries1(LastTitle2No) Then ?sR(
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString l
)'*jZ
ErrMsg.AddItem "二级标题编号错误:" & ParaText 8o.|P8%
End If -Rr !J37
u
yE#EnsH
'二级标题段落设置 格式:(一)、标题内容 c>Ri6=C
.Paragraphs(paraCounter).Range.Text = rText LlVbY=EX7
.Paragraphs(paraCounter).Style = "QLNU二级标题" jM-5aj[K
Fq%NY8KNE
.Paragraphs(paraCounter).Range.Select
':DL
Selection.EndKey unit:=wdLine c `.BN(
tc = Replace(rText, vbCr, "")
KP$AT}D
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False <AP.m4N) _
U!E}(9
tb
Case "三级标题" A"R(?rQi=
LastTitle3No = LastTitle3No + 1 $Il
'新三级标题开始,复位其下属标题编号 ULs'oT)K;
LastTitle4No = 0 P\QbMj1U
fKtlf
QG
If Val(ttNo) <> LastTitle3No Then |$+/IxDP
rText = LastTitle3No & ". " & ttString <'BsQHI
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText a:4!z;2
|
tCA0H\';
End If d#W^S[[
'三级标题段落设置 格式:1. 标题内容 !1UZ<hq
.Paragraphs(paraCounter).Range.Text = rText Uv~|Xj4.
.Paragraphs(paraCounter).Style = "QLNU三级标题" s0Z)BR #
.Paragraphs(paraCounter).Range.Select 7(P4KvkI
Selection.EndKey unit:=wdLine +rhBC
V
tc = Replace(rText, vbCr, "") 'MNCJ;A@V
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False BxZ7Bk
Case "四级标题" K$r)^K=s
LastTitle4No = LastTitle4No + 1 s?4nR:ZC}
tZFpxyF
If Val(ttNo) <> LastTitle4No Then 73SH[f[g
rText = "(" & LastTitle4No & "). " & ttString $@L2zl1
ErrMsg.AddItem "四级标题编号错误:" & ParaText )5y"T0]
1s(i\&B
End If fvV"H{V,
'四级标题段落设置 格式:(1). 标题内容 T[c-E*{hR
.Paragraphs(paraCounter).Range.Text = rText \MPbG$ ^
.Paragraphs(paraCounter).Style = "QLNU四级标题" 8U7dd[
.Paragraphs(paraCounter).Range.Select Y^;izM}
Selection.EndKey unit:=wdLine tCPK_Wws?Z
tc = Replace(rText, vbCr, "") ~dP\0x0AB
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False -"^xg"
yJ6g{#X4K<
Case "表格标题" PzhC *" i}
LastTableNo = LastTableNo + 1 E}<i?;
'tU \~3k
If ttNo <> CStr(LastTableNo) Then C@<gCM j,"
rText = "表" & LastTableNo & ". " & ttString C}DIm&))
ErrMsg.AddItem "表格编号错误:" & ParaText `0MQL@B
] ;CJ6gM~
End If I[w5V;>*
'/AX'U8Y
'表格名称段落设置 格式:表1. 表格名称 koE]\B2A6
.Paragraphs(paraCounter).Style = "QLNU表格标题" *O\lR-z!k
xe = Replace(rText, vbCr, "") BN&}g}N
.Paragraphs(paraCounter).Range.Select >+>N/`BG
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 Q
("4R
Selection.Range.Text = xe 7W5Cm\
Selection.EndKey IYH
4@v/#
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False -lAY*2Jg
N[v=;&
Case "表格首行" 7KJ0>0~Et
.Paragraphs(paraCounter).Style = "QLNU表格首行" iM9^.
Case "图片标题" G)_Zls2;
LastFigureNo = LastFigureNo + 1 9`? M-U
EWv[Sp
If ttNo <> CStr(LastFigureNo) Then c~OvoTF,
rText = "图" & LastFigureNo & ". " & ttString PtzT><
ErrMsg.AddItem "表格编号错误:" & ParaText u0g"x_3
2iO{*cB
End If Pv3G?u=4
'图片名称段落设置 格式:图1. 图名称 :VLYF$|
.Paragraphs(paraCounter).Range.Text = rText u,N<U t
.Paragraphs(paraCounter).Style = "QLNU图片标题" @ `mke4>_
.Paragraphs(paraCounter).Range.Select 1+Ik\
Selection.EndKey unit:=wdLine Xs'qwL~{`
xe = Replace(rText, vbCr, "") Gvvw:]WgF
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False o|#F@L3i
Case "正文" [F(iV[n%
'正文名称段落设置 Cb.M
.Paragraphs(paraCounter).Style = "QLNU正文" /E i e5p
Case "文献条目" zE?dQD^OD
With .Paragraphs(paraCounter) w ykaf
'.Range.Select 'C#[iRG4
'Selection.ClearFormatting cqW(9A|8
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” FV,aQ#
.Style = "QLNU参考文献" y0/FyQs
End With (hIo0.
Case "图表注解" p{``a=
With .Paragraphs(paraCounter) ]&`=p{Z
.Range.Font.NameFarEast = "楷体" U;"J8
.Range.Font.NameAscii = "Times New Roman" _>?.MUPB
.Range.Font.Size = 9 '小5号字 M-q5Jfm
D(&WEmm\B
.Alignment = wdAlignParagraphCenter aygK$.wos
.LeftIndent = 0 t~) g)=>
.RightIndent = 0 Kc#1H|'2N
.FirstLineIndent = 0 S_RP&+!7
.LineSpacing = 12
o)DO[
.LineSpacingRule = wdLineSpaceExactly 2iOYC0`!
.LineUnitAfter = 0 ,e'"SVQc
.LineUnitBefore = 0 r6:e
423
.OutlineLevel = wdOutlineLevelBodyText NA`8 ^PZ
.PageBreakBefore = False ]<r.{EJ
.RightIndent = 0 W/CZ/Mc
.WordWrap = True ra_v+HR7
.LineUnitAfter = 0.5 h^''ue"
vb`aV<MhH
End With i
XGy*#>V
Case Else i&DUlmt)f
'不作处理 &2O~BIRE
End Select rR#wbDr5
N|ZGc{?
'含有inlineshape的段落处理 [nrD4
If ShapeHeight > 30 Then ?FV%e
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 } j;es(~D
End If jpTk@
RZ ?SiwE
If (ShapeWidth + ShapeHeight) > 150 Then m&be55M;
.Paragraphs(paraCounter).Style = "QLNU图片段落" !-
5z 1b)
End If ?C
!;hp
'段落计数器递 CVEo<Tz
paraCounter = paraCounter + 1 {y%@1q%"
Me.lbCounter.Caption = "当前检测段落:" & paraCounter XV`8Vb
Me.txtStatus.Text = ParaText up0=Y
o@
DoEvents "}H2dn2n
Loop yF|+oTp
End With 8s-X
H
-%{+\x2
msg = "" VwK7\jV
4T
v=sP
For i = 0 To Me.ErrMsg.ListCount - 1 =A$d)&
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i)
K\s<<dRa
Next oEj$
xm_}
q9a6s{,
^D9w=f#a
B7.&yXWgn
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg nNnfcA&W
Me.cmdCheck.Enabled = True <E^;RG
Me.txtStatus.Visible = True eX!yIqAR
Me.lbParaType.Visible = False _9Rj,
9-24c
bContinue = False #uICHt3
End Sub _5$L`&
LX=v
_}l
J
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) 036QV M$
Dim pTEXT As String Y4X`(\A
9|OOT[
pTEXT = ChKRange.Text HEhBOER?
fE3%$M[V7
ParaType = "其它" YQD/vc~8G
TitleString = pTEXT &n0Ag]$P
TitleNo = "N/A" o#BI_
#b
@l5GBsLK
shpCounter = ChKRange.InlineShapes.Count /g!Xe]S
s
If shpCounter <> 0 Then kf9]nIo
MaxShpHeight = 0: TotalShpWidth = 0 R|wS*xd ,
For i = 1 To shpCounter NVB#=!S
k = ChKRange.InlineShapes(i).Height Gm0}KU
l = ChKRange.InlineShapes(i).Width FT J{
If k > MaxShpHeight Then ;W FiMM\
MaxShpHeight = k
?.beN[X
End If 1F3Q^3+
TotalShpWidth = TotalShpWidth + l yMD0Tj5ZQ
Next kXlI*h
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then -7%dgY(
Exit Sub +V[;DOlll
End If HMmVfGp]
End If kX:1=+{xg
zG^$-L.n
'空行 EVA&By6_k
If Len(pTEXT) <= 2 Then `gJ$fTi&
Exit Sub UQ@szE
End If 5l%g3F
e#F3KLSL`
3v `@*
*
'是否为表格中的文字 uf:'"7V7
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then MIWc
@.i2
ParaType = "表格内容" ,^eOwWV
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) BqdpJIr
If k = 1 Then s|TO9N)pO
ParaType = "表格首行" %mzDmrzq
End If n1PvZ~^3
Exit Sub b' ~WS4xlD
End If 8qxZ7|Y@
bMv[.Z@v(
'例外情况:脚注 :QXKG8^
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then r>CBp$
ParaType = "脚注" S?OCy4dk:
Exit Sub ua_,c\iL
End If Xh/BVg7$
Q]VG6x
'例外情况:尾注 A0v@L6m-O
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then x(~V7L>"i
ParaType = "尾注" 6KD-nr{S
Exit Sub E]^n\bE%
End If \
(`
C*d
!:tr\L {
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then jJ,y+o
ParaType = "页眉页脚" _?$w8 S%
Exit Sub 0I2?fz)
End If hPCSAo!|
v!3Oq.ot
vmo!
With regEX 8+32hg@^F
.Global = True NdXC8
BJ
fBYH,M
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" U!JmSP
If regEX.Test(pTEXT) Then Wc;N;K52
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") Vh]=sd<F
TitleString = regEX.Replace(pTEXT, "$3") @3FQMs4
TitleNo = regEX.Replace(pTEXT, "$1") <yvo<R^30
ParaType = "章" 1|:;~9n<t
Exit Sub ?wn<F}UH
End If fGe"1MfU
lZ <D,&
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" 7| j
rk
If regEX.Test(pTEXT) Then %dhrXK5
ParaType = "一级标题" C 20VSwd
regEX.Execute (pTEXT) |tTcJ\bG
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") m#RMd,'X
TitleString = regEX.Replace(pTEXT, "$3") CoWT
TitleNo = regEX.Replace(pTEXT, "$1") `49!di[
Exit Sub ((^vsKT
End If ilZ5a&X;
^BW8zu@=O
'全角或半角括号中的数字 +$/NTUOP
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" #cb9g
If regEX.Test(pTEXT) Then ejbtdU8N<
ParaType = "二级标题" 8H8Q
regEX.Execute (pTEXT) r/HG{XH`
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") Kq+vAp).
TitleString = regEX.Replace(pTEXT, "$5") ?`6Mfpvj96
TitleNo = regEX.Replace(pTEXT, "$2") ;<xPzf
Exit Sub Vf=,@7
End If 'GO*6$/
u
bZ`Y$
'阿拉伯数字 1. 2. E33x)CP
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" Fx)><+-
If regEX.Test(pTEXT) Then mmCGIX
ParaType = "三级标题" )M(//jX
regEX.Execute (pTEXT) P\z1fscnK
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 g9d/nRX&
TitleString = regEX.Replace(pTEXT, "$3") ~*Y/#kPY
TitleNo = regEX.Replace(pTEXT, "$1") K
6,c||#<
Exit Sub o? K>ji!
End If \{ C
~B;=
8p1:dTI5Pb
'全角或半角括号中的阿拉伯数字 */$] kE
.Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" :R$v7{1
If regEX.Test(pTEXT) Then 5-S-r9
ParaType = "四级标题" t^%)d7$
regEX.Execute (pTEXT) {>TAnb?n
ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") w]N;HlU
TitleString = regEX.Replace(pTEXT, "$5") u^x<xw6f
TitleNo = regEX.Replace(pTEXT, "$2") .f!:@fX>=
Exit Sub 0}T56aD=!
End If ]@ Vp:RGMr
7; ?7q
'表格名称 &?}h)U#:
.Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" 2^U?Ztth6
If regEX.Test(pTEXT) Then RK)ikLgp
ParaType = "表格标题" (/t{z=
regEX.Execute (pTEXT) ~L>&p
ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) LJt5?zQKrW
TitleString = Trim(regEX.Replace(pTEXT, "$3")) h96<9L
TitleNo = Trim(regEX.Replace(pTEXT, "$1")) =eh!eZ9
strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换 <7/7+_y
Exit Sub BV\~Dm]"
End If N%
u4uLP5k
&b2@+/ F
'图片名称 2|`Mb~E;
.Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" w[)HQ1K
If regEX.Test(pTEXT) Then BrZ17
ParaType = "图片标题" C/ ]Bx
regEX.Execute (pTEXT) GpR,n2
ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3") `q1-yH0~4
TitleString = regEX.Replace(pTEXT, "$3") AU9:Gu@M/
TitleNo = regEX.Replace(pTEXT, "$1") vSH-hAk
Exit Sub %L-{4Z!"sI
End If n:H
|=SF{
Wv,?xm
'参考文献 -Q ];o~
.Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})" '[数字]、 N~S#(.}[
If regEX.Test(pTEXT) Then T/J1 b-
ParaType = "文献条目" 3jto$_3'w
'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4") A v;NQt8ut
'TitleNo = regEX.Replace(pTEXT, "[$2] ") F:.8O ,%u
Exit Sub <Oy2JjY
End If Y'R/|:YL@
*0r!eD
prfx = Left(pTEXT, 2) y'JJ#7O=
If prfx = "注:" Or prfx = "注:" Then k9VWyq__
ParaType = "图表注解" /^WawH6)6
Exit Sub ~uB@o KMru
End If 6k+tO%{~
D (e,R9hPU
m+ #G*
ParaType = "正文" (+BrC`
blaXAqe
End With G,(Xz"`,
End Sub vH E:TQo4
<N=ow"rD
Sub ConvertListToOrdinary() V_|HzYJJ5
Dim st As Paragraph eq9qE^[Z&
With ActiveDocument )_?H BTG
For i = .Paragraphs.Count To 1 Step -1 U-{3HHA
Set st = .Paragraphs(i) Dr}elR>~G=
lst = st.Range.ListFormat.ListString f&&Ao
If lst <> "" Then @]EdUzzKq
st.Range.ListFormat.RemoveNumbers \D#+0
st.Range.InsertBefore lst & " " -:b<~S[
End If yC!>7@m
Next =Fq{#sC>
End With 2{g&9
Set st = Nothing x'%vL",%
End Sub OXX D}-t
jX t5.9 t
Private Sub UserForm_Activate() !&v"+ K3lU
Me.lbTotal.Caption = "当前文章段落总数:" & ActiveDocument.Paragraphs.Count & " 共" & ActiveDocument.Sections.Count & "节" hWb
jA[a/
Me.lbTotal.Font.Bold = True i
9peQ61{
Me.txtStatus.Visible = False B\;fC's+
Me.cmdCheck.Enabled = True I6S>*V
4(,X.GVY/
End Sub ]a:T]x6'
q'X#F8v
F0kQ/x
Sub CheckSuperScript() j1
ap,<\.k
Selection.Find.ClearFormatting jo
0XOs
Selection.Find.Replacement.ClearFormatting *
$mb~k^R
With Selection.Find YC*`n3D|'
.Text = "[【\[[〖](*)[】\]〗]]" -}8r1jQH;
.Replacement.Text = "[\1]" ma`sv<f4-!
.Replacement.Font.Superscript = True 'w|N}
4
'.Replacement.Font.Color = wdColorBlue 7EL0!:P p3
.Forward = True SF[Z]|0gs
.Wrap = wdFindContinue s(MdjWw
.FORMAT = True ?b]f$
2
.MatchCase = False gDH|I;!
.MatchWholeWord = False cn9=wm\\
.MatchByte = False %fh-x(4v
.MatchAllWordForms = False ~4ijiw$
.MatchSoundsLike = False .wtYostv
.MatchWildcards = True LXR>M>a`
End With |(Xxi
Selection.Find.Execute Replace:=wdReplaceAll e)F_zX
End Sub oiz]Bd
Y`xAJ#=
,i
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) q1|@v#kH6
bContinue = False Z_T~2t
Set regEX = Nothing 4!?4Tc!X
End Sub u (`7F(R
a3He-76
Sub CeateOrModifyStyle() &kH7_Lz
' W,nn,%
' }MM:q R
Dim stl As Style Kf6D$}
4k6:
Options.Pagination = False fECm
ELd
UK[+I]I
p
On Error Resume Next |CBJ8],mT
For Each stl In ActiveDocument.Styles Yg1HvSw\
stl.Delete wFBSux$
Next hm1.UE
On Error GoTo 0 |Y(
B{V(g"dM
Set stl = Nothing #vPk
XcP
iX>)6)uJ
DoEvents 1}CJ&
On Error Resume Next w&&)v~Y_
u:^9ZQ+
ActiveDocument.Styles.Add Name:="BaseStyle", Type:=wdStyleTypeParagraph P>|sCF
) LBbA
ActiveDocument.Styles.Add Name:="QLNU论文题目", Type:=wdStyleTypeParagraph Maiy d
ActiveDocument.Styles.Add Name:="QLNU中文摘要", Type:=wdStyleTypeParagraph dmMrZ1u2
b1Ba}
ActiveDocument.Styles.Add Name:="QLNU英文标题", Type:=wdStyleTypeParagraph M%Q_;\?]
ActiveDocument.Styles.Add Name:="QLNU英文摘要", Type:=wdStyleTypeParagraph 3b<;y%
Jd33QL}Hj
ActiveDocument.Styles.Add Name:="QLNU目录项", Type:=wdStyleTypeParagraph ^4{{ +G)j
ActiveDocument.Styles.Add Name:="QLNU章节标题", Type:=wdStyleTypeParagraph n+Ng7
ActiveDocument.Styles.Add Name:="QLNU一级标题", Type:=wdStyleTypeParagraph H\|H]: CE
ActiveDocument.Styles.Add Name:="QLNU二级标题", Type:=wdStyleTypeParagraph hXx:D3h
ActiveDocument.Styles.Add Name:="QLNU三级标题", Type:=wdStyleTypeParagraph u$ ^r(.EV
ActiveDocument.Styles.Add Name:="QLNU四级标题", Type:=wdStyleTypeParagraph eHyIFoaC/
ActiveDocument.Styles.Add Name:="QLNU正文", Type:=wdStyleTypeParagraph g{m~TVm'
6%&w\<
(SG
ActiveDocument.Styles.Add Name:="QLNU表格标题", Type:=wdStyleTypeParagraph Vz y )jf
ActiveDocument.Styles.Add Name:="QLNU表格首行", Type:=wdStyleTypeParagraph j<L!(6B
ActiveDocument.Styles.Add Name:="QLNU表格内容", Type:=wdStyleTypeParagraph #Jfmt~ks'
ActiveDocument.Styles.Add Name:="QLNU图片标题", Type:=wdStyleTypeParagraph ;9uDV
-"
ActiveDocument.Styles.Add Name:="QLNU图片段落", Type:=wdStyleTypeParagraph G4uOY?0N
VB4ir\nF
ActiveDocument.Styles.Add Name:="QLNU参考文献", Type:=wdStyleTypeParagraph (IAR-957pN
On Error GoTo 0 ZYz8ul$E
DoEvents ~jC$C2A0
os+]ct
'BaseStyle k{^iv:
ActiveDocument.Styles("BaseStyle").AutomaticallyUpdate = False ZP.~Y;Ch;-
With ActiveDocument.Styles("BaseStyle").Font
w4UJXc
.NameFarEast = "宋体" \T;(k?28HN
.NameAscii = "Times New Roman" pq]>Ep
.NameOther = "宋体" "
_TAo
.Size = 10.5 '5 9{VA6h
.Bold = wdUndefined TZObjSm_v
.Italic = wdUndefined pEb/ yIT"
.Subscript = wdUndefined c>#3{}X|x%
.Subscript = wdUndefined Js9
EsN%
*o=( w5
.Underline = wdUnderlineNone *+
J`Yk7}
.UnderlineColor = wdColorAutomatic Wtflw>-
.StrikeThrough = False 2(Nf$?U@0
.DoubleStrikeThrough = False \Oe8h#%
IXR%Ig
gJA
.Outline = False ,B,0o*qc{K
.Emboss = False z*N%kcw"
.Shadow = False \YH*x`
.Hidden = False h-*h;Uyc
.SmallCaps = False !\q'{x5C
.AllCaps = False F[0w*i&u5
.Color = wdColorAutomatic P0-K/_g
.Engrave = False OX.g~M
ig|
.Scaling = 100 hOm0ND?;1
.Kerning = 1 F=;nWQ&
.Animation = wdAnimationNone In}~bNv?
.DisableCharacterSpaceGrid = False v=YI%{tx)
.EmphasisMark = wdEmphasisMarkNone "s\himoa
End With : Z3]Dk;y
With ActiveDocument.Styles("BaseStyle").ParagraphFormat XeAH.i<
.LeftIndent = 0 L
T/*y=
.RightIndent = 0 Qgl5Jr.
.SpaceBefore = 0 ,WS{O6O7
.SpaceBeforeAuto = False I"WmDC`1
.SpaceAfter = 0 U
H6
Jvt
.SpaceAfterAuto = False "u"?~
|eej}G(,m}
.LineSpacingRule = wdLineSpaceSingle sg_%=;
.Alignment = wdAlignParagraphJustify mFBuKp+0)h
t
SunO-\y
.WidowControl = False -.UUa
.KeepWithNext = False .gw6W0\F
.KeepTogether = False + Ui%}^ZZ
.PageBreakBefore = False u9ue>I/
.NoLineNumber = False 5>h#
hcL
VQ4rEO=t
.FirstLineIndent = CentimetersToPoints(0) OUm,;WNLf
.OutlineLevel = wdOutlineLevelBodyText W)u9VbPk[
.CharacterUnitLeftIndent = 0 4'L.I%#tZ
.CharacterUnitRightIndent = 0 f5#VU7=1F2
.CharacterUnitFirstLineIndent = 0 eXtlqU$
.LineUnitBefore = 0
h{e?Fl
.LineUnitAfter = 0 !7Z?VEZ
.AutoAdjustRightIndent = True [}"m4+
.DisableLineHeightGrid = True qB3=wFI
9:*a9xT,
.FarEastLineBreakControl = True x<
) T,c5Y
.WordWrap = True K`kWfPwp
.Hyphenation = False VCUsvhI
G5$YXNV
.HangingPunctuation = True nD{{/_"'
.HalfWidthPunctuationOnTopOfLine = True b*cVC^{Dy
.AddSpaceBetweenFarEastAndAlpha = True -$(2Z[
.AddSpaceBetweenFarEastAndDigit = True >uYGY{+j[
.BaseLineAlignment = wdBaselineAlignBaseline p@+D$
End With D (">bR)1
ActiveDocument.Styles("BaseStyle").NoSpaceBetweenParagraphsOfSameStyle = False RG`eNRTQ%
ActiveDocument.Styles("BaseStyle").ParagraphFormat.TabStops.ClearAll '\Uy;,tu /
ActiveDocument.Styles("BaseStyle").LanguageID = wdSimplifiedChinese }<H0CcG
ActiveDocument.Styles("BaseStyle").NoProofing = False kBrU%[0O
-qD
L':
'一级标题题样式 EA<x$O
ActiveDocument.Styles("QLNU一级标题").BaseStyle = ActiveDocument.Styles("BaseStyle") xGK"`\V
ActiveDocument.Styles("QLNU一级标题").NextParagraphStyle = "BaseStyle" p+:MZP -%(
ActiveDocument.Styles("QLNU一级标题").AutomaticallyUpdate = False w?M` gl8r
With ActiveDocument.Styles("QLNU一级标题").Font Xm^/t#
.NameFarEast = "黑体" sq}uq![?M
.NameAscii = "Arial Black" x)e(g}n
.NameOther = "黑体" iZ2nBiQ
.Name = "黑体" WNiM&iU
.Size = 16 '三号 qmbhx9V
.Bold = True #!]~E@;E
.Italic = wdUndefined }9Awv#+
.Subscript = wdUndefined PkDh[i9Z|
.Superscript = wdUndefined _z&H O
End With 3x
E^EXV
With ActiveDocument.Styles("QLNU一级标题").ParagraphFormat \l/<
[ZZ
??g
=
`yH
.LeftIndent = CentimetersToPoints(0) zR }vw{
.RightIndent = CentimetersToPoints(0) l gTw>r
.FirstLineIndent = CentimetersToPoints(0) 8fQaMn4V
ci{WyIh
.LineSpacingRule = wdLineSpaceSingle v^(J+d_>
.Alignment = wdAlignParagraphCenter 9I*`~il>{
O}q(2[*i
.WidowControl = True =}YaV@g<f
.KeepWithNext = True =
-n7/
.KeepTogether = True \%]!/&>{6
.OutlineLevel = wdOutlineLevelBodyText .Wvg{ S-
QhmOO-Z?
.LineUnitBefore = 0.5 0t
P{K
.LineUnitAfter = 0.5 -^= JKd&p
End With qJEtB;J'
ActiveDocument.Styles("QLNU一级标题").NoSpaceBetweenParagraphsOfSameStyle = False z irnur1
ActiveDocument.Styles("QLNU一级标题").ParagraphFormat.TabStops.ClearAll ,IQ%7*f;O_
ActiveDocument.Styles("QLNU一级标题").LanguageID = wdSimplifiedChinese [knwp$
ActiveDocument.Styles("QLNU一级标题").NoProofing = True 3("E5lI(g:
DoEvents ^h"F\vIpV
e><