Dim bContinue As Boolean E'iE#He
Om3Ayk}
Dim regEX As New RegExp hBgE%#`s
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 r@G*Fx8Z
jIh1)*]054
Dim LastTitle0String As String, LastTitle0No As Long F^,:p.ihm<
Dim LastTitle1String As String, LastTitle1No As Long ?sfqg gi
Dim LastTitle2String As String, LastTitle2No As Long g*k)ws
Dim LastTitle3String As String, LastTitle3No As Long :!gNOR6Lh
Dim LastTitle4String As String, LastTitle4No As Long &raqrY|V
Dim LastTitle5String As String, LastTitle5No As Long /t5)&
Dim LastTabelString As String, LastTableNo As Long
'g#%>
Dim LastFigureString As String, LastFigureNo As Long T(|'.&a
OB>Hiy
Dim strSeperator As String \JLGw1F
RpdUR*K9x
Sub ConvertWidth(fTEXT As String, rText As String) *-VRkS-G
Selection.Find.ClearFormatting y r (g/0
Selection.Find.Replacement.ClearFormatting q4RO
uE|d
Selection.Find.Wrap = wdFindContinue {C |R@S
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText .?}M(mL
DoEvents 5xH=w:
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True +C~h(
End Sub 0U42QEG2
6w.E Sm
Sub ClearDomain() q,v<:sS9T
With Selection.Find $8^Hkxy
.ClearFormatting 3%v)!dTa<^
.Replacement.ClearFormatting 8/e-?2l
.Wrap = wdFindContinue bY_'B5$.^2
Me.txtStatus.Text = "清除所有域代码" :Cq73:1\B
DoEvents <G})$f'x2
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False _^ hg7&dF
End With Dfs^W{YA
End Sub zB
.cOMx
-^&=I3bp
Private Sub cmdCheck_Click() I}f`iBG
bContinue = True SYJO3cY
Dim NoSeries1(1 To 16) As String :{u`qi
Dim NoSeries2(1 To 16) As String IDct!53~
Dim NoSeries5(1 To 16) As String c~0kZA6
Dim NoSeriesRM(1 To 16) As String VL%. maj
Dim paraTotal As Long, ParaText As String .Fb#j+Lq
Dim ttString As String, ttNo As String <k
B:`&X<\
<4r8H-(%
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long ~yv7[`+Tgg
fCt|8,-H
Me.txtStatus.Visible = True %;`Kd}CO
Me.lbParaType.Visible = True Xhe& "rM
Me.cmdCheck.Enabled = False ljFq ;!I5
@SX%q&-
*)m:u :
ki1(b]rf
;|Cdq
Dim ParaType As String, rText As String Dka,v
P&`%VW3E
Selection.WholeStory c4z&HQd
Selection.NoProofing = True +p 6Ty2rz
Ejug2q
tm1 = Now ]r`;89:s>
(p]FI# y
ActiveWindow.View.Type = wdNormalView *-0s
`rC
"vGh/sXW
NoSeries1(1) = "一" N{J
1C6
NoSeries1(2) = "二" Q2
q~m8(
NoSeries1(3) = "三" i/:L^SQAq
NoSeries1(4) = "四" la[
pA
NoSeries1(5) = "五" \, R;
NoSeries1(6) = "六" U[C>Aoze
NoSeries1(7) = "七" _a09;C
NoSeries1(8) = "八" 20Zxv!
NoSeries1(9) = "九" %
/:1eE`!S
NoSeries1(10) = "十" ^'QO!{7f
NoSeries1(11) = "十一" M}]
*j
NoSeries1(12) = "十二" MQ,K%_m8
NoSeries1(13) = "十三" [@@{z9c
NoSeries1(14) = "十四" Yp\n=#$[
NoSeries1(15) = "十五" }M4dze
NoSeries1(16) = "十六" EP:`l
A6(Do]M
NoSeries2(1) = "㈠" O_QDjxj^rZ
NoSeries2(2) = "㈡" N+&uR!:.C
NoSeries2(3) = "㈢" o30C\
NoSeries2(4) = "㈣" z'l$;9(y
NoSeries2(5) = "㈤" Q68~D.V%r
NoSeries2(6) = "㈥" t:wBh'K~R8
NoSeries2(7) = "㈦" r1!1u7dr
t
NoSeries2(8) = "㈧" 1UP
{j`-K|
NoSeries2(9) = "㈨" yr\ClIU
NoSeries2(10) = "㈩" l7`{ O/hN
h<9vm[ .
NoSeries5(1) = "①" Jn+ -G4h$
NoSeries5(1) = "②" [?K>s>it
NoSeries5(3) = "③" n#!c!EfG
NoSeries5(4) = "④" w=KfkdAJ*/
NoSeries5(5) = "⑤" 77\+V 0cF
NoSeries5(6) = "⑥" 8}n<3_
NoSeries5(7) = "⑦" -
2)k!5X=
NoSeries5(8) = "⑧" 1$
Hou
NoSeries5(9) = "⑨" |5u~L#P
NoSeries5(10) = "⑩" <]Td7-n
oh5'Isb$
yD"]:ts3
NoSeriesRM(1) = "I" 99yWUC,
NoSeriesRM(2) = "II" } c
G)$E
NoSeriesRM(3) = "III" rKgl:sj+
NoSeriesRM(4) = "IV" t/|0"\ p
NoSeriesRM(5) = "V" |>Q>d8|k
NoSeriesRM(6) = "VI" 9'MGv*Ho
NoSeriesRM(7) = "VII" aM5]cc%
NoSeriesRM(8) = "VIII" h@RpS8!Bi
NoSeriesRM(9) = "IX" n)yDep]$G
NoSeriesRM(10) = "X" E/cV59
NoSeriesRM(11) = "XI" fcq8aW/z_
NoSeriesRM(12) = "XII" bjVk9XvH6
NoSeriesRM(13) = "XIII" ky2]%cw
NoSeriesRM(14) = "XIV" I\*6
>
NoSeriesRM(15) = "XV" UL[,A+X8D
NoSeriesRM(16) = "XVI" =lAjQt
SkuR~!
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) !Z_+H<fi+I
=g+}4P
If i = vbNo Then ('x]@
Exit Sub !wp1Df[
End If $RDlM
x3n9|Uud
If Me.chkSuper.Value Then suE K;Bk9
Me.txtStatus.Text = "检查修改所有的上标格式" |WB-N g
>0HH#JW
CheckSuperScript &S4*x|-C&
/&Q{B f
End If .\_):j*
;nS
F\X(;{
If Me.chkStyle.Value Then |z)s9B;:#i
Me.txtStatus.Text = "设置样式,请稍候...." p]L]=-(qI
DoEvents Kx9u|fp5
CeateOrModifyStyle 2^[dy>[y0
End If |r~ u7U\
!!\}-r^y%
h,c*:
izP)t
ClearDomain #mV2VIX#Jv
puPI^6y%
q>_<\|?%x
jG>W+lq
If Me.chkLIST.Value Then L[<#>/NPy
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" O9daeIF0#
k;\gYb%L
ConvertListToOrdinary s)Y1%#
End If ^ ]9K>}
oC`F1!SfOO
Pn!~U] A$%
Dim pType As String, trimpTEXT As String $0$sM/
%
If Me.chkNum.Value = True Then 7y$\|WG?!r
Me.txtStatus.Text = "转换全角数字形式为半角" !E$$FvL
ConvertWidth "1", "1" 0AHQ(+Ap
DoEvents
^kfqw0!
ConvertWidth "2", "2" Wt/;iq"
DoEvents }y6)d.
ConvertWidth "3", "3" Kk^*#vR
DoEvents *2
Pr1U
ConvertWidth "4", "4" <,
CrE5Pl
DoEvents biHacm
ConvertWidth "5", "5" ||hQ*X<m>
DoEvents t7by OMC
ConvertWidth "6", "6" prZ
,4\
DoEvents M5{#!d}^D
ConvertWidth "7", "7" mx^Ga=:
?
DoEvents "Not /
8J
ConvertWidth "8", "8" w_{tS\
DoEvents ^QNc!{`
ConvertWidth "9", "9" +q&Hj|;8r
DoEvents s4bV0k
ConvertWidth "0", "0" I|rb"bG
DoEvents ?^voA.Bv<
ConvertWidth "a", "a" i"&FW&W
DoEvents #*bmwb*i
ConvertWidth "b", "b" |Gic79b
DoEvents 4Ly>x>b<
ConvertWidth "c", "c" )$] lf }
DoEvents vRe{B7}p;
ConvertWidth "d", "d" uZ
6krI
DoEvents o2
ng
ConvertWidth "e", "e" lpG%rN!
DoEvents _mSefPl
ConvertWidth "f", "f" Z3]I^i
FI
DoEvents ",,# q
ConvertWidth "g", "g"
GK/Po51
DoEvents m!7%5=Fc
ConvertWidth "h", "h" H,} &=SCk
DoEvents C*mVM!D);!
ConvertWidth "i", "i" )-
W1Wtom
DoEvents F! !HwI
ConvertWidth "j", "j" u"h/ERCa
DoEvents 6*i**
ConvertWidth "k", "k" Cd*h4Q]S
DoEvents t5{P'v9J
ConvertWidth "l", "l" c)#P}Ai
DoEvents t@!n?j
I
ConvertWidth "m", "m" EHUx~Q
DoEvents JmCMFqB9
ConvertWidth "n", "n" Oc L7] b0
ConvertWidth "o", "o" vH+g*A0S<
ConvertWidth "p", "p" gsL=_#
?
ConvertWidth "q", "q" {KgA
V
ConvertWidth "r", "r" :|;@FkQ
ConvertWidth "s", "s" w(@r-2D"
ConvertWidth "t", "t" Ay(p~U;gN*
ConvertWidth "u", "u" >._d2.Q'
ConvertWidth "v", "v" @` KYgjjH
ConvertWidth "w", "w" i}vJI}S.$
ConvertWidth "x", "x" -leX|U}k
ConvertWidth "y", "y" l@);U%\pS
ConvertWidth "z", "z" B@F@,?K4%
ConvertWidth "A", "A" r *K
ConvertWidth "B", "B" ;TL.QN/l
ConvertWidth "C", "C" @jn&Wf?
ConvertWidth "D", "D" Cu7{>"
ConvertWidth "E", "E" H*0Y_H=
ConvertWidth "F", "F" BAQ-1kSz
ConvertWidth "G", "G" = Pv_,%
ConvertWidth "H", "H" 6U{A6hH]
ConvertWidth "I", "I" hC2Fup1 @
ConvertWidth "J", "J" y?OP- 27y
ConvertWidth "K", "K" dJR[9T_OF
ConvertWidth "L", "L" Z1 Nep!
ConvertWidth "M", "M" irQ'Rm[
ConvertWidth "N", "N" wqo:gW_
ConvertWidth "O", "O" r,;ca6>5H
ConvertWidth "P", "P" ~/G)z?+E
ConvertWidth "Q", "Q"
ZPZh6^cc
ConvertWidth "R", "R" +Kk1[fh-
ConvertWidth "S", "S" 8 #4K@nm5
ConvertWidth "T", "T" Vg'R=+Wb
ConvertWidth "U", "U" poBeEpbs
ConvertWidth "V", "V" uo`R
ConvertWidth "W", "W" m|q,ixg
ConvertWidth "X", "X" WJq>%<#
ConvertWidth "Y", "Y" I/7!5Z*
ConvertWidth "Z", "Z" 9w-\
K]
ConvertWidth "^l", "^p" G[KjK$.Ts?
ConvertWidth "(", "(" E !!,JnU
ConvertWidth ")", ")" [Vs\r&qL
x^K4&'</
End If jz8u'y[n7
%}@iz(*}>
With ActiveDocument {VAih-y
Dim tbl As Table P3"R2-
For Each tbl In .Tables ?W'z5'|
tbl.Rows.Alignment = wdAlignRowCenter @bg9
}Z%\h
tbl.Range.Font.NameFarEast = "楷体" vX:}tir[
tbl.Range.Font.NameAscii = "Times New Roman" k o@ej
^
tbl.Range.Font.Size = 10.5 h~>1-T8
Next m[}P
Set tbl = Nothing `N\ ^JAGW
End With akvi^]x
P}4&J ^
g`pq*D
With ActiveDocument
^xHKoOTj[
h,{Q%sqO
For i = 1 To .TablesOfContents.Count ZxvH1qx8
.TablesOfContents(i).Delete YF{MXK}
Next C&z!="hMhR
8$NVVw]2,
_ ^FC9
b~zSsws.
paraTotal = .Paragraphs.Count S1$^ _S
=
paraCounter = 1 W'4/cO
S#]]h/
LastTitle0No = 0 %"`p&aE:
LastTitle1No = 0 ^BF}wQb:j
LastTitle2No = 0 8Qg{@#Wr
LastTitle3No = 0 xJ3C^b%H
LastTitle4No = 0 8xB-cE
LastTableNo = 0 jC&fnt,O
LastFigureNo = 0 ]ogifnwv
t/[lA=0 )2
Dim Sec As Long WX4sTxJK
*duG/?>P
Sec = InputBox("正文从第一节开始?", "节设置", 6) uq3pk3
)W9
If Sec = 0 Then J2qsZ
Exit Sub k>ErDv8
End If ndD>Oc}"3
]({-vG\m
k = 0 `Moo WG
Do While (paraCounter < paraTotal) And bContinue u
8o!
k = k + 1 b^HDN(v
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then RQE]=N
Exit Do <);q,|eh2
End If ]1++$Ej
paraCounter = paraCounter + 1 +;W%v7%<
If k Mod 20 = 0 Then -jJhiaJ$<
Me.lbCounter.Caption = paraCounter d7^
`
DoEvents =n,;S W
End If ^{"i eVn
Loop q=3>ij{v
U =J5lo
ZSu.0|0#
Do While (paraCounter < paraTotal) And bContinue Mqr]e#"o
]+:yfDtZd
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) P3Ql[2
ShapeHeight = 0 EA~xxKq
ShapeWidth = 0 :-{"9cgFR
-H%v6E%yh
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth
}sxs-
O_;BZzT
Select Case ParaType (
}b~}X9
Case "【】表格内容" N|i>|2EB
.Paragraphs(paraCounter).Style = "QLNU表格内容" UC+Qn
Case "章" 0~U0s3
LastTitle0No = LastTitle0No + 1 [WDzaRzd
'新一章开始,复位其下属标题编号 i\CA6I
LastTitle1No = 0 s*GZOz
LastTitle2No = 0 ^ = C>
LastTitle3No = 0 wm@j(h4
LastTitle4No = 0 ]~;*9`:
J#`7!
k = Val(ttNo) 3#t9pI4
If k = 0 Then '非数字编号章节 k^}[+IFJ
If ttNo <> NoSeries1(LastTitle0No) Then |*?N#0s5h
rText = "第" & NoSeries1(LastTitle0No) & ttString p8,=K<
Me.ErrMsg.AddItem "章节编号错误:" & ParaText 2BC!,e$Z
End If [bnu
DS
Else Ubu&$4a
If Val(ttNo) <> LastTitle0No Then ~DD
_n
rText = "第" & LastTitle0No & ttString s:_hsmc"
Me.ErrMsg.AddItem "章节编号错误:" & ParaText
]\yB,
End If W|2^yO,dX
IBNg2Y
End If *fm?"0M5
Fizrsr 6%
'章段落设置 JA4Zg*7I
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 437Wy+Q|e
.Paragraphs(paraCounter).Style = "QLNU章节" wKpGJ&
{
.Paragraphs(paraCounter).Range.Select !sX$?P%U
Selection.EndKey unit:=wdLine eP2Q2C8g
tc = Replace(rText, vbCr, "") |V5BL<4
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False >Cr"q*
Case "一级标题" -o+t
&m
LastTitle1No = LastTitle1No + 1 <4TI;yy6?
'新一级标题开始,复位其下属标题编号 <~mqb=qA$
LastTitle2No = 0 XEiVs\) G
LastTitle3No = 0 0'd@8]|H
LastTitle4No = 0 uL)MbM]
()6%1zCO
If ttNo <> NoSeries1(LastTitle1No) Then [6TI_U~
rText = NoSeries1(LastTitle1No) & "、" & ttString ~ n<|f
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText <qR$ `mLN
End If ]L~z9)
a>GA=r
6Y2,fW8i,
'一级标题段落设置 格式:一、标题内容 ^x&x|ckR!
.Paragraphs(paraCounter).Range.Text = rText | +;ZC y
.Paragraphs(paraCounter).Style = "QLNU一级标题" c^=
q(V
.Paragraphs(paraCounter).Range.Select %ZoJu
Selection.EndKey unit:=wdLine {APfSD_4
tc = Replace(rText, vbCr, "") SGl|{+(A
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False '`upSJ;e
Case "二级标题" R"OT&:0/
LastTitle2No = LastTitle2No + 1 b]]k\b
'新二级标题开始,复位其下属标题编号 4&NB xe
LastTitle3No = 0 Q%O9DCi
LastTitle4No = 0 a >fA-@
,P<I<QYu
If ttNo <> NoSeries1(LastTitle2No) Then .Vt|;
P}
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString ?`TJ0("z"
ErrMsg.AddItem "二级标题编号错误:" & ParaText I~l_ky|a !
End If 2- L-=0
L@\t]
~
'二级标题段落设置 格式:(一)、标题内容 |6d:k~p
.Paragraphs(paraCounter).Range.Text = rText #w L(<nE
.Paragraphs(paraCounter).Style = "QLNU二级标题" W^elzN(
bpsyO>lx/
.Paragraphs(paraCounter).Range.Select 0c>>:w20D
Selection.EndKey unit:=wdLine b#I,Z+0ry
tc = Replace(rText, vbCr, "") Lx-%y'P
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False &3/`cl[+
4Ah
FE@
Case "三级标题" Wqv7
LastTitle3No = LastTitle3No + 1 $MasYi
'新三级标题开始,复位其下属标题编号 `G ":y[Q
LastTitle4No = 0 >IQ&*Bb
m LajiZ Bf
If Val(ttNo) <> LastTitle3No Then ^:?z7m
rText = LastTitle3No & ". " & ttString !&OdbRHM
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText ScJ:F-@>
iY>xx~V
End If ( &m1*
'三级标题段落设置 格式:1. 标题内容 cPIyD?c
.Paragraphs(paraCounter).Range.Text = rText wp:$Tq a$
.Paragraphs(paraCounter).Style = "QLNU三级标题" xLIyh7$t
.Paragraphs(paraCounter).Range.Select !}c D e12
Selection.EndKey unit:=wdLine pW ~;B*hF
tc = Replace(rText, vbCr, "") pXNhU88
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False KdR\a&[MA
Case "四级标题" ub 2'|CYw
LastTitle4No = LastTitle4No + 1 n^QDMyC;I
~6#mVP5sU)
If Val(ttNo) <> LastTitle4No Then {Q/@ Y.~<
rText = "(" & LastTitle4No & "). " & ttString fp||<B
ErrMsg.AddItem "四级标题编号错误:" & ParaText
!& c%!
*
9>+>s ?IgK
End If =x w:@(]{
'四级标题段落设置 格式:(1). 标题内容 t>]W+Lx#
.Paragraphs(paraCounter).Range.Text = rText `T[yyOL/
.Paragraphs(paraCounter).Style = "QLNU四级标题" T2-x 1Sw_
.Paragraphs(paraCounter).Range.Select 1%M^MT%&
Selection.EndKey unit:=wdLine mV]~}7*Y;
tc = Replace(rText, vbCr, "") Yaq0mef0
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False x75;-q
,dba:D=l
Case "表格标题" 5%S5*c6BD
LastTableNo = LastTableNo + 1 3Dc^lfn
b5g^{bzwu
If ttNo <> CStr(LastTableNo) Then {;bec%pq0
rText = "表" & LastTableNo & ". " & ttString vasw@Uto)
ErrMsg.AddItem "表格编号错误:" & ParaText W{IP}mM
])pX)(a
End If ~b8.]Z^
E2
'Al6^C
'表格名称段落设置 格式:表1. 表格名称 G%gdI3h1Z
.Paragraphs(paraCounter).Style = "QLNU表格标题" |\B\IPs{%'
xe = Replace(rText, vbCr, "") Nj6Np^@sH
.Paragraphs(paraCounter).Range.Select ~(m6dPm$}m
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 aJm5`az)
Selection.Range.Text = xe ZHen:
Selection.EndKey sUF5Yq:9
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False N+SA$wG
b c
.Vy
Case "表格首行" >`30 ib
.Paragraphs(paraCounter).Style = "QLNU表格首行" *QW.#y>"j
Case "图片标题" yq3"VFh3d
LastFigureNo = LastFigureNo + 1 >ptI!\i}
A f?&VD4K
If ttNo <> CStr(LastFigureNo) Then ,hK
=x
rText = "图" & LastFigureNo & ". " & ttString xG~-.
ErrMsg.AddItem "表格编号错误:" & ParaText JBQ>"X^
7TAoWD3
End If .f!'>_
'图片名称段落设置 格式:图1. 图名称 IwFf8?
3
.Paragraphs(paraCounter).Range.Text = rText FIn)O-<
.Paragraphs(paraCounter).Style = "QLNU图片标题" JF&$'
.Paragraphs(paraCounter).Range.Select >VjtKSN
Selection.EndKey unit:=wdLine Y\!:/h]E&
xe = Replace(rText, vbCr, "") lItr*,A]
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False nb5%a
Case "正文" 0T3r#zQ
'正文名称段落设置 BvlY\^
.Paragraphs(paraCounter).Style = "QLNU正文" ^R\5'9K!
Case "文献条目" Zo-Au
With .Paragraphs(paraCounter) unL1/JY z
'.Range.Select yPbOiA*lHz
'Selection.ClearFormatting J
mF`
5
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” T5~Qfl?Y
.Style = "QLNU参考文献" avS9 "e
End With oi3Ix7
Case "图表注解" -NG9?sI\U
With .Paragraphs(paraCounter) jbOzbxR?
.Range.Font.NameFarEast = "楷体" -eSI"To L<
.Range.Font.NameAscii = "Times New Roman" "z.!h(Eq
.Range.Font.Size = 9 '小5号字 \l6mXIn=>
p*P0<01Z
.Alignment = wdAlignParagraphCenter :\#]uDT2=
.LeftIndent = 0 W6B o\UK
.RightIndent = 0 YVY(uq)d
.FirstLineIndent = 0 [t^%d9@t
.LineSpacing = 12 t
ORDtMM9+
.LineSpacingRule = wdLineSpaceExactly x2i`$iNhmP
.LineUnitAfter = 0 VAxk?P0j6
.LineUnitBefore = 0 t[%=[pJHW
.OutlineLevel = wdOutlineLevelBodyText [-[|4|CnOm
.PageBreakBefore = False RkdAzv!Y7
.RightIndent = 0 RAyR&p
.WordWrap = True /7*qa G
.LineUnitAfter = 0.5 cNN_KA
1?+)T%"
End With 9DX
u*}
Case Else RmN\;G?}
'不作处理 ,Ur~DXY
End Select
d@|j>Z
)fZ5.W8UE]
'含有inlineshape的段落处理 HSl$ U0
If ShapeHeight > 30 Then s|!b: Ms`
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 qfY=!|O
End If uuhvd h=
_ )^n[_E
If (ShapeWidth + ShapeHeight) > 150 Then ;LT#/t)}<
.Paragraphs(paraCounter).Style = "QLNU图片段落" DA4!-\bt@
End If a7NX~9g
U|h@Pw z
'段落计数器递 Pb D|7IM
paraCounter = paraCounter + 1 Q!%CU8!`&
Me.lbCounter.Caption = "当前检测段落:" & paraCounter r52,f%nlm
Me.txtStatus.Text = ParaText E{9{%J
DoEvents $PbN=@
Loop [/t/694
End With 4d'tK
^X
"ZVBn!
msg = "" S4~;bsSx
ZoC?9=k
For i = 0 To Me.ErrMsg.ListCount - 1 ^_Z Qf
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) nuv$B >
Next Vo2frWF$
.uagD[${
Z@i MG
]*;+ U6/?
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg B<'V7#L_
Me.cmdCheck.Enabled = True fs]Zw mA^
Me.txtStatus.Visible = True 4sK|l|W
Me.lbParaType.Visible = False HNoh B4vt
~pSD| WX
bContinue = False DPtyC
gH
End Sub e$(i!G)
+FVcrL@
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) eEe8T=mD
Dim pTEXT As String >Q\H1|?
H"?
-&>V-
pTEXT = ChKRange.Text ?t.?f`(|
J=]w$e ?.P
ParaType = "其它" cfe[6N
TitleString = pTEXT L{CHAVkV
TitleNo = "N/A" FkECY
1J*wW#
e
shpCounter = ChKRange.InlineShapes.Count >|I3h5\M
If shpCounter <> 0 Then !r!Mq~X<=
MaxShpHeight = 0: TotalShpWidth = 0 zsRN\U
For i = 1 To shpCounter j'0*|f ^z
k = ChKRange.InlineShapes(i).Height `TsfscN
l = ChKRange.InlineShapes(i).Width
vrW9<{
If k > MaxShpHeight Then v
DOeBw
=
MaxShpHeight = k 7#|NQ=yd
End If !xqG-rd
'
TotalShpWidth = TotalShpWidth + l 8UL:C?eY
Next &FvNz
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then GrQAho
Exit Sub 8QZk0
O
End If ?y45#Tk]
End If t_VHw'~"
SS~Txt75m
'空行 +Vf|YLbhJ
If Len(pTEXT) <= 2 Then C1rCKKh
Exit Sub =v5(*$"pd"
End If iii$)4V
r@<;
(U dDp"/
'是否为表格中的文字 s9GPDfZ
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then w)8@Tu:Q
ParaType = "表格内容" o_*|`E
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) $BBfsaJPT
If k = 1 Then ~ pdf'
ParaType = "表格首行" |)JoxqR
End If \
T]"pE+8l
Exit Sub .y2<2eW
End If zB]T5]
Z/RUrYeb
'例外情况:脚注 (&hX8
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then '}YXpB
ParaType = "脚注" Iq}h}Wd
Exit Sub >a-+7{};
End If
u#UeJuO
ng<`2XgU
'例外情况:尾注 ez5`B$$
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then ta 6WZu
ParaType = "尾注" 'IW+"o
Exit Sub 246lFxG.
End If w./EJkKI
rqh,BkQ0t
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then Oc'z?6axWv
ParaType = "页眉页脚" zXf+ie o
Exit Sub &{=~)>h
End If o%9>elOju
%Z5k8
m[7:p{
With regEX Gf]s?J^a
.Global = True X9gC2iSs]
Sf'5/9<DW+
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" EIEq[`h
If regEX.Test(pTEXT) Then O.}gG6u5
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") YXg
uw7%\
TitleString = regEX.Replace(pTEXT, "$3") CC-:dNb
TitleNo = regEX.Replace(pTEXT, "$1") \+~4t
ParaType = "章" ?Ru`ma\;
Exit Sub v!U# C[a^
End If i:8^:(i
aQmL=9
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" @>:07]Dxo
If regEX.Test(pTEXT) Then DVcu*UVw
ParaType = "一级标题" A7RX2
regEX.Execute (pTEXT) l?1!h2z%
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") v#+w<gRq
TitleString = regEX.Replace(pTEXT, "$3") 9G8QzIac
TitleNo = regEX.Replace(pTEXT, "$1") xR&,QrjQG
Exit Sub
;VFr5.*x
End If XP^6*}H.*
hCvn(f
'全角或半角括号中的数字 pz
IMj_
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" -pGt;
If regEX.Test(pTEXT) Then *f#4S_ws`
ParaType = "二级标题"
k"7eHSy,
regEX.Execute (pTEXT) *_wef/==
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") @
:4Kk
4g1
TitleString = regEX.Replace(pTEXT, "$5")
Y)*lw
TitleNo = regEX.Replace(pTEXT, "$2") rlIEch^wZ
Exit Sub .-Lqo=o\
End If U?lu@5 ^Z
7h0'R k
'阿拉伯数字 1. 2. Wkk Nyg,
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" #rr-4$w+
If regEX.Test(pTEXT) Then fDqXM;a"
ParaType = "三级标题" 2!otVz!Mh
regEX.Execute (pTEXT) 2*L/c-
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 $B?7u@>,
TitleString = regEX.Replace(pTEXT, "$3") rWs5s!l,
TitleNo = regEX.Replace(pTEXT, "$1") ge oN4
Exit Sub VfcQibm
End If FVmg&[
.
66 Xt=US
'全角或半角括号中的阿拉伯数字 D)sEAfvX
.Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" 85{vz|(':
If regEX.Test(pTEXT) Then %UJ4wm
ParaType = "四级标题" u.=;A#
regEX.Execute (pTEXT) _z 5C
plO
ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") l.W:6",w
TitleString = regEX.Replace(pTEXT, "$5") yrs3`/
TitleNo = regEX.Replace(pTEXT, "$2") L K~,
Exit Sub KUyJ"q<W
End If ZtLn*M
&P3vcB
'表格名称 h^*{chm]
.Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" ibc/x v2
If regEX.Test(pTEXT) Then w;$+7
ParaType = "表格标题" RM+E
regEX.Execute (pTEXT) ,6S8s
ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) ui{_w @o
TitleString = Trim(regEX.Replace(pTEXT, "$3")) U.F65KaKF
TitleNo = Trim(regEX.Replace(pTEXT, "$1")) M<srJ8|'
strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换 bN&da
[K
Exit Sub g\)z!DQ]
End If MX0B$yc$
nu<!/O
'图片名称 7:<Ed"rdE
.Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" RGLA}|
If regEX.Test(pTEXT) Then _D4}[`
ParaType = "图片标题" %S#"pKE6R
regEX.Execute (pTEXT) R*0F)M
ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3") 7dJaWD:&
TitleString = regEX.Replace(pTEXT, "$3") "y0A<-
~
TitleNo = regEX.Replace(pTEXT, "$1") !v L:P2
Exit Sub y)E2=JQA/
End If 8W>l(w9M
!gf3%!%
'参考文献 :GYv9OG
.Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})" '[数字]、 //@=Q!MW
If regEX.Test(pTEXT) Then VC(|t} L4
ParaType = "文献条目" ~&:R\
'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4") [AzN&yACE
'TitleNo = regEX.Replace(pTEXT, "[$2] ") Z :+#3.4$3
Exit Sub vrv*k
End If %4Zy1{yKs_
B,Brmn
prfx = Left(pTEXT, 2) y21uvp'
If prfx = "注:" Or prfx = "注:" Then $\!;*SSj
ParaType = "图表注解" 5UjQLB
Exit Sub i|^6s87"N2
End If uP]o39b;V
vNSf:5H$
1W[(+TZ&s
ParaType = "正文" FO=1P7
w0Y%}7
End With Y%l3SB,5L
End Sub OP}p;(
?&m]du#6
Sub ConvertListToOrdinary() 5,ahKB8
Dim st As Paragraph <R>ZG"m {
With ActiveDocument vB*oI~<
For i = .Paragraphs.Count To 1 Step -1 6{X>9hD
Set st = .Paragraphs(i) K:@=W1
lst = st.Range.ListFormat.ListString y}HC\A77uD
If lst <> "" Then }2,#[mM
st.Range.ListFormat.RemoveNumbers @EZONKT
st.Range.InsertBefore lst & " " p ri{vveN@
End If q*nz4QTOE
Next Zwns|23n
End With p d3&AsU
Set st = Nothing UJ$:5*S=u
End Sub n^02@Aw
RAI&;"
Private Sub UserForm_Activate() p&mtKLv
Me.lbTotal.Caption = "当前文章段落总数:" & ActiveDocument.Paragraphs.Count & " 共" & ActiveDocument.Sections.Count & "节" tlgvBRH>
Me.lbTotal.Font.Bold = True 30E v"
Me.txtStatus.Visible = False 3]es$ Jy
Me.cmdCheck.Enabled = True Sg>0P*K@
+yH~G9u(
End Sub 7~nCK
j]"xck
u/c3omY"#
Sub CheckSuperScript() 9 lJj/
Selection.Find.ClearFormatting CHit
Selection.Find.Replacement.ClearFormatting "\r~,S{:
With Selection.Find ^(*O$N*#
.Text = "[【\[[〖](*)[】\]〗]]" /*^|5>-`i1
.Replacement.Text = "[\1]" SqF.DB~
.Replacement.Font.Superscript = True 9/(c cj
'.Replacement.Font.Color = wdColorBlue a&"*U
Jk<?
.Forward = True 2] G$6H
.Wrap = wdFindContinue (v:ek_
.FORMAT = True u/'sdt
.MatchCase = False Wb)l8[=
.MatchWholeWord = False qjzW9yV+
.MatchByte = False i(iP}:3
.MatchAllWordForms = False D])YP0|}
.MatchSoundsLike = False :&)/v
q
.MatchWildcards = True a
BH1J]_
End With /+`<X%^U
Selection.Find.Execute Replace:=wdReplaceAll 'a^tL[rLP1
End Sub jY+S,lD
/t)c fFM
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 8I0Tu
bContinue = False b|o!&9Yyr
Set regEX = Nothing ~!9Px j*
End Sub zN)\2
.<^YE%
Sub CeateOrModifyStyle() .{a2z*o
' S!W/K!wf
' ]\,uF8gg)
Dim stl As Style r Ob"S*
T}Vpy`
Options.Pagination = False {FY[|:Cp
AWXpA1(
On Error Resume Next +JS/Z5dl+}
For Each stl In ActiveDocument.Styles xe
vP2pYG:
stl.Delete M2Fj)w2
Next fbTw6Fde$
On Error GoTo 0 /8t+d.r;/
S} Cp&}G{P
Set stl = Nothing 3,L3C9V'
H&Y{jqua
DoEvents X/K)kIi
On Error Resume Next cNlY=L
>-5Gt
ActiveDocument.Styles.Add Name:="BaseStyle", Type:=wdStyleTypeParagraph -Dxhq&
}Y
##FNq#F
ActiveDocument.Styles.Add Name:="QLNU论文题目", Type:=wdStyleTypeParagraph /NX7Vev
ActiveDocument.Styles.Add Name:="QLNU中文摘要", Type:=wdStyleTypeParagraph tlLn
,nB3c5X)|
ActiveDocument.Styles.Add Name:="QLNU英文标题", Type:=wdStyleTypeParagraph Guw|00w,Q$
ActiveDocument.Styles.Add Name:="QLNU英文摘要", Type:=wdStyleTypeParagraph 33'lZubV
8{SU?MHQLE
ActiveDocument.Styles.Add Name:="QLNU目录项", Type:=wdStyleTypeParagraph UW[{d/.wC
ActiveDocument.Styles.Add Name:="QLNU章节标题", Type:=wdStyleTypeParagraph q,+kPhHEgy
ActiveDocument.Styles.Add Name:="QLNU一级标题", Type:=wdStyleTypeParagraph g)?g7{&?>?
ActiveDocument.Styles.Add Name:="QLNU二级标题", Type:=wdStyleTypeParagraph ~!:S p_y
ActiveDocument.Styles.Add Name:="QLNU三级标题", Type:=wdStyleTypeParagraph E+ 3yN\X(
ActiveDocument.Styles.Add Name:="QLNU四级标题", Type:=wdStyleTypeParagraph ;GFB@I@
ActiveDocument.Styles.Add Name:="QLNU正文", Type:=wdStyleTypeParagraph auTTvJ
=/JF-#n/MA
ActiveDocument.Styles.Add Name:="QLNU表格标题", Type:=wdStyleTypeParagraph !aw#',r8m
ActiveDocument.Styles.Add Name:="QLNU表格首行", Type:=wdStyleTypeParagraph |EV\a[
ActiveDocument.Styles.Add Name:="QLNU表格内容", Type:=wdStyleTypeParagraph =Z .V+ 4+
ActiveDocument.Styles.Add Name:="QLNU图片标题", Type:=wdStyleTypeParagraph l()MYuLNV
ActiveDocument.Styles.Add Name:="QLNU图片段落", Type:=wdStyleTypeParagraph "=\_++
L\wpS1L(
ActiveDocument.Styles.Add Name:="QLNU参考文献", Type:=wdStyleTypeParagraph /dJ)TW(Ir
On Error GoTo 0 =l
2Dm
DoEvents x3 6 #x
]ZzG!7
'BaseStyle G h[`q7B
Q
ActiveDocument.Styles("BaseStyle").AutomaticallyUpdate = False AYA&&