Dim bContinue As Boolean
RQ;}+S
5_[we1$P
Dim regEX As New RegExp S7h?tR*u
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 FT
Ytf4t
1a
t Q9
Dim LastTitle0String As String, LastTitle0No As Long r
E&}B5PN=
Dim LastTitle1String As String, LastTitle1No As Long mIW
/x/I
Dim LastTitle2String As String, LastTitle2No As Long p
C/13|I
Dim LastTitle3String As String, LastTitle3No As Long mO0}Go8
Dim LastTitle4String As String, LastTitle4No As Long `6\u!#
Dim LastTitle5String As String, LastTitle5No As Long q^eLbivVE
Dim LastTabelString As String, LastTableNo As Long U.pGp]\Q)G
Dim LastFigureString As String, LastFigureNo As Long V|vXxWm/
:I(d-,C
Dim strSeperator As String k9!euj&
1'!%$D
Sub ConvertWidth(fTEXT As String, rText As String) Lk
]W?
Selection.Find.ClearFormatting 6FFM-9*|[
Selection.Find.Replacement.ClearFormatting f taa~h*
Selection.Find.Wrap = wdFindContinue fn,
YH
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText 71c(Nw~iQ
DoEvents 6){nu rDBG
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True ,FK.8c 6g
End Sub 7qLB 9r
PB;j4
Sub ClearDomain() #]*]qdQWV^
With Selection.Find NJmyp!8
.ClearFormatting >^GAfvW
.Replacement.ClearFormatting "V<WC"
.Wrap = wdFindContinue oIGF=x,e8
Me.txtStatus.Text = "清除所有域代码" 5 89P$2e1X
DoEvents t[p/65L>8
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False qkA8q@Y4|
End With Gx;
-1
End Sub Lt_A&
|e91KmiqJ
Private Sub cmdCheck_Click() jGEmf<q&u
bContinue = True 6T6UIq
Dim NoSeries1(1 To 16) As String ,*Z/3at}5M
Dim NoSeries2(1 To 16) As String d Z}|G-:
Dim NoSeries5(1 To 16) As String 4l@aga
Dim NoSeriesRM(1 To 16) As String J]5ZWo%
Dim paraTotal As Long, ParaText As String 4"s/T0C
Dim ttString As String, ttNo As String ke2}@|?t
3|(3jIa
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long 'iX y?l
|4!G@-2V:I
Me.txtStatus.Visible = True ltlnXjRUv
Me.lbParaType.Visible = True TGZr
[
Me.cmdCheck.Enabled = False +R',$YzD
v9 8s78
ss4YeZa
"h:#'y$V
XB<Q A>dLh
Dim ParaType As String, rText As String P=m
l;xp
NEt_UcC
Selection.WholeStory df{6!}/(
Selection.NoProofing = True *})Np0k
!X\aZ{}Q
tm1 = Now kd OIL2T
N>IkK*v
ActiveWindow.View.Type = wdNormalView v+W4wD
lmYyaui
NoSeries1(1) = "一" wPvYnhr|G-
NoSeries1(2) = "二" %']`t-N8
NoSeries1(3) = "三" NY/-9W5T4
NoSeries1(4) = "四" Uy<n7*H
NoSeries1(5) = "五" 1IN^,A]r2h
NoSeries1(6) = "六" )CD-c
z6n
NoSeries1(7) = "七" N~%~Q
NoSeries1(8) = "八" +8.1cDEH\
NoSeries1(9) = "九" %FJB9?9=|
NoSeries1(10) = "十" I+rLKGZC
NoSeries1(11) = "十一" H^JFPvEc
NoSeries1(12) = "十二" KeWIC,kq
NoSeries1(13) = "十三" ]Y3s5#n
NoSeries1(14) = "十四" hR,5U=+M7
NoSeries1(15) = "十五" |XJ|vQGU
NoSeries1(16) = "十六" 2XrYm"6w
m0N{%Mf-
NoSeries2(1) = "㈠" w01u~"E
NoSeries2(2) = "㈡" >NZJ-:t
NoSeries2(3) = "㈢" nTHCb>,vM
NoSeries2(4) = "㈣" ZOy^TR
NoSeries2(5) = "㈤" G|j8iV O
NoSeries2(6) = "㈥" Go
!{T
NoSeries2(7) = "㈦" X<d`!,bn@
NoSeries2(8) = "㈧" #zg"E<
NoSeries2(9) = "㈨" (H-
kWT
NoSeries2(10) = "㈩" S"%W^)mZ
\J6&Z13Q
NoSeries5(1) = "①" OE2r2ad
NoSeries5(1) = "②" )D"2Q:
NoSeries5(3) = "③" )PvB^n
NoSeries5(4) = "④" _ .xicov
NoSeries5(5) = "⑤" toel!+
NoSeries5(6) = "⑥" gp4@6HuUd
NoSeries5(7) = "⑦" ?&bB?mg\
NoSeries5(8) = "⑧" g:?p/L
NoSeries5(9) = "⑨" -*;JUSGh
NoSeries5(10) = "⑩" 5}:`CC2,S~
Jp(CBCG{F
}^azj>p5
NoSeriesRM(1) = "I"
d_ji
..T
NoSeriesRM(2) = "II" Rw|P$dbu
NoSeriesRM(3) = "III" +0M0g_sk
NoSeriesRM(4) = "IV" s,~g| I\
NoSeriesRM(5) = "V" "]B%V!@
NoSeriesRM(6) = "VI" fz<GPw
NoSeriesRM(7) = "VII" @"n]v)[4
NoSeriesRM(8) = "VIII" tHFBL
M
NoSeriesRM(9) = "IX" !Aw.)<teW
NoSeriesRM(10) = "X" #,;Q|)AD:e
NoSeriesRM(11) = "XI" SA{5A 1
NoSeriesRM(12) = "XII" ORhvo,.u
NoSeriesRM(13) = "XIII" vOU9[n
N[
NoSeriesRM(14) = "XIV" z0?IQzR^T
NoSeriesRM(15) = "XV" } ^WmCX2a
NoSeriesRM(16) = "XVI" Wo~;h(6
Zn6u6<O=
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) $j
"BHpN
4E@_Fn_#
If i = vbNo Then RU% 4~WC
Exit Sub pQk@
+r
End If U3|9a8^H
t>eeOWk3
If Me.chkSuper.Value Then ;]T;mb>
Me.txtStatus.Text = "检查修改所有的上标格式" !rff/0/x"
%jxeh.B3B
CheckSuperScript 5RR4jX]
"f>`ZFp^
End If n7L|XkaQ
N;*
wd<
If Me.chkStyle.Value Then Y,{pG]B$w
Me.txtStatus.Text = "设置样式,请稍候...." ,OBJ>_5
DoEvents MbXtmQ%C8
CeateOrModifyStyle 5?|yYQM0tK
End If e,T^8_>
i
lwI qj
@j=rSS
=$uSa7t#
ClearDomain %wN*Hu~E
nc;iJ/\4
R,m|+[sl
Y/y`c-VO
If Me.chkLIST.Value Then gq050Bl)
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" /#!1
'EG/)0t`
ConvertListToOrdinary t"X^|!hKIF
End If -(9TM*)O
(PSL[P
m=V69
a#
Dim pType As String, trimpTEXT As String
?fQ8Ff
If Me.chkNum.Value = True Then 13f'zx(AO
Me.txtStatus.Text = "转换全角数字形式为半角" b&*N
ConvertWidth "1", "1" K6N+0#
DoEvents a'?V:3 ]
ConvertWidth "2", "2" bCV_jR+
DoEvents v>sjS3
ConvertWidth "3", "3" L+_
JKc
DoEvents ~;0W
+
ConvertWidth "4", "4" a=M/0N{!
DoEvents UL`%Xx
ConvertWidth "5", "5" YA~`R~9d
DoEvents 5QZ}KNJ|t~
ConvertWidth "6", "6" t_id/
DoEvents kn}bb*eZ
ConvertWidth "7", "7" f s2}a
DoEvents HEF\TH9
ConvertWidth "8", "8" U$
LI~XZM
DoEvents d?)Ic1][
ConvertWidth "9", "9" h=dFSK?*D
DoEvents ,Gy2$mglB
ConvertWidth "0", "0" ebhV;Q.
DoEvents drS>~lSxB
ConvertWidth "a", "a" TsY
nsLQY
DoEvents $~NB
.SY
ConvertWidth "b", "b" X08[,P#I
DoEvents r)oR`\7
ConvertWidth "c", "c" #&ayWef
DoEvents K k|mV&3J
ConvertWidth "d", "d" -V=,x3Zew
DoEvents `IJTO_
ConvertWidth "e", "e" o>A']+`Eu
DoEvents smHQ'4x9
ConvertWidth "f", "f" vPD%5AJN
DoEvents {2LV0:k2
ConvertWidth "g", "g" pI(
H7 (
DoEvents
>)VWXv0
ConvertWidth "h", "h" [midNC +,
DoEvents iVA=D&eZ
ConvertWidth "i", "i" -lb%X3`
DoEvents d^I:{Ii'
ConvertWidth "j", "j" J9lG0
DoEvents na_Wp^;
ConvertWidth "k", "k" Z5,"KhB]
DoEvents fwv.^kx
ConvertWidth "l", "l" yQ| V7G
DoEvents x]vyt}oCmk
ConvertWidth "m", "m" x$.0:jP/s
DoEvents yHn8t]{
ConvertWidth "n", "n"
.7> g8
ConvertWidth "o", "o" IgPU^?sp
ConvertWidth "p", "p" G!7A]s>C
ConvertWidth "q", "q" tkW7wP;
ConvertWidth "r", "r" >f(M5v(D\
ConvertWidth "s", "s" '}F..w/
ConvertWidth "t", "t" "=yz}~,
ConvertWidth "u", "u" 9b)'vr*Hy7
ConvertWidth "v", "v" zA8Tp8(
ConvertWidth "w", "w" D;6C2>U~L
ConvertWidth "x", "x" jRhRw;
ConvertWidth "y", "y" _^`TG]F
ConvertWidth "z", "z" gQuU_dbXSB
ConvertWidth "A", "A" ESni r6HoU
ConvertWidth "B", "B" n,Q^M$mS0
ConvertWidth "C", "C" zin'&G>l
ConvertWidth "D", "D" 69N8COLB
ConvertWidth "E", "E" cpM]APF-
ConvertWidth "F", "F" fhmBKeFdV
ConvertWidth "G", "G" ~z7Fz"o<
ConvertWidth "H", "H" U3t)yr h
ConvertWidth "I", "I" s"x(i
ConvertWidth "J", "J" Pa"[&{ :
ConvertWidth "K", "K" h`4!Qv
ConvertWidth "L", "L" /@0
ConvertWidth "M", "M" M\r=i>(cu
ConvertWidth "N", "N" UD^=@?^7
ConvertWidth "O", "O" (>`S{L
C>s
ConvertWidth "P", "P" `h<>_zpjY
ConvertWidth "Q", "Q" [#+klP$
ConvertWidth "R", "R" LXm@h
ConvertWidth "S", "S" w$jq2?l
ConvertWidth "T", "T" cX|(/h,
W/
ConvertWidth "U", "U" )u]1j@Id
ConvertWidth "V", "V" c"zE
ConvertWidth "W", "W" ZV$!dHW/
ConvertWidth "X", "X" 60r0O5=|Fl
ConvertWidth "Y", "Y"
nKe|xP
ConvertWidth "Z", "Z" 6o~g3{Ow
ConvertWidth "^l", "^p" 8" (j_~;
ConvertWidth "(", "(" M>u84|`
ConvertWidth ")", ")" sn8r`59C
]Ryg}DOQ
End If yXBWu=w3`O
[S?`OF12
With ActiveDocument U[6
~ad
a
Dim tbl As Table tD6ukK1x
For Each tbl In .Tables `Wp y6o
tbl.Rows.Alignment = wdAlignRowCenter G4G<Ow)`
tbl.Range.Font.NameFarEast = "楷体" j){0>O.V
tbl.Range.Font.NameAscii = "Times New Roman" "MgTfUIiyD
tbl.Range.Font.Size = 10.5 tLM/STb6
Next U%KsD 4B
Set tbl = Nothing )npvy>C'(
End With O;m [
| v:fP;zc
9XX:_9|I
With ActiveDocument )zu m.6pT
a@m
64l)
For i = 1 To .TablesOfContents.Count I|_U|H!`
.TablesOfContents(i).Delete spTIhZ
Next GSVLZF'+
__[bKd.
7A{,)Y/w ^
Y/qs\c+
paraTotal = .Paragraphs.Count NUX$)c
paraCounter = 1 @Op7OF
Y%
SeBl*V
LastTitle0No = 0 u\u6<[>P
LastTitle1No = 0 3#Xv))w1
LastTitle2No = 0 Gg6<4T1
LastTitle3No = 0 '[Bok=$B)
LastTitle4No = 0 wSG!.Ejc7
LastTableNo = 0 WTUC\}#E\
LastFigureNo = 0 +d=8 /3O%
_A6e|(.ll
Dim Sec As Long )V9
wU1.
%QQJSake|
Sec = InputBox("正文从第一节开始?", "节设置", 6) Xe@:Aun
If Sec = 0 Then 5wbR}`8
Exit Sub i?6#>;f
End If 9HZR%s[J
Em/? 4&
k = 0 6d;RtCENo
Do While (paraCounter < paraTotal) And bContinue 'v%v*Ujf[
k = k + 1 !XT2'6nu
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then \6vr)1~N>
Exit Do -8z@FLUK-
End If UGQHwz
paraCounter = paraCounter + 1 !uAqY\Is
If k Mod 20 = 0 Then \8/$ZEom
Me.lbCounter.Caption = paraCounter HlXEU
$e
DoEvents :Kk+wp}f#
End If _o?[0E
Loop GyGF<%nq
eV(
h:4F?'W
Do While (paraCounter < paraTotal) And bContinue vd0uI#g%#
s \q
m
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) 5N$O
ShapeHeight = 0 c='uyx
ShapeWidth = 0 Z!I#Z2X
~U1M-<IX
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth jB3Rue:+g
t ]P^6jw'
Select Case ParaType 7a4h7/
Case "【】表格内容" N==Y]Z$G
.Paragraphs(paraCounter).Style = "QLNU表格内容" 2(25IYMS8
Case "章" $8fJ DN
LastTitle0No = LastTitle0No + 1 g.COKA
'新一章开始,复位其下属标题编号 =[YjIWr#o
LastTitle1No = 0 BZk0B?
LastTitle2No = 0 :F?L,I,K
LastTitle3No = 0 SFVqUg3"Z
LastTitle4No = 0 !%>(O@~"|
I?KGb:]|
k = Val(ttNo) ,XsBm+Q(
If k = 0 Then '非数字编号章节 }=s64O9j
If ttNo <> NoSeries1(LastTitle0No) Then +]0/:\(B
rText = "第" & NoSeries1(LastTitle0No) & ttString o| 9Mj71
Me.ErrMsg.AddItem "章节编号错误:" & ParaText Zn]!*}
End If InB'Ag"
Else y
hNy
If Val(ttNo) <> LastTitle0No Then oe{,-<yck
rText = "第" & LastTitle0No & ttString =
o_zsDv
Me.ErrMsg.AddItem "章节编号错误:" & ParaText Kk 6i
End If A8 j$c ~
YkI_i(
End If .CEl{fofj
? ;$f"Wl
'章段落设置 LteZ7e
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 II{"6YI>
.Paragraphs(paraCounter).Style = "QLNU章节" 5]Y?NN,GR
.Paragraphs(paraCounter).Range.Select q uiX"lV(
Selection.EndKey unit:=wdLine \' >d.'d
tc = Replace(rText, vbCr, "") #B
hcW"@
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False A (ZtA[G
Case "一级标题" !Er)|YP
LastTitle1No = LastTitle1No + 1 M6z$*?<
'新一级标题开始,复位其下属标题编号 @'JA3V}
LastTitle2No = 0 h&<>nK
LastTitle3No = 0 m-HBoN
LastTitle4No = 0 f|&,SI ?
U_@Dn[/:
If ttNo <> NoSeries1(LastTitle1No) Then ZW`wA2R0
rText = NoSeries1(LastTitle1No) & "、" & ttString P5oYv
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText r
WN%Tai-
End If C*Wyw]:r
xQ>T.nP}1
HD;l1W)
'一级标题段落设置 格式:一、标题内容 t`'5|
.Paragraphs(paraCounter).Range.Text = rText 4[
=C,5r
.Paragraphs(paraCounter).Style = "QLNU一级标题" Frum@n
.Paragraphs(paraCounter).Range.Select !.[H!-V.
Selection.EndKey unit:=wdLine =90)=Pxd
tc = Replace(rText, vbCr, "") RpU.v
`
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False PG3,MCf:
Case "二级标题" 2\9OT>
LastTitle2No = LastTitle2No + 1 vec4R )S
'新二级标题开始,复位其下属标题编号 +/!y#&C&*
LastTitle3No = 0 .t$1B5
LastTitle4No = 0 {@
Z%6%'9
`0Xs!f
If ttNo <> NoSeries1(LastTitle2No) Then [ Ru( H
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString g!!:o(k
ErrMsg.AddItem "二级标题编号错误:" & ParaText [*^rH:
End If BH2JH>'X
:KBy(}V
'二级标题段落设置 格式:(一)、标题内容 ETrL3W<
.Paragraphs(paraCounter).Range.Text = rText SVqKG+{My
.Paragraphs(paraCounter).Style = "QLNU二级标题" c>L#(D\\
N`NW*~
.Paragraphs(paraCounter).Range.Select @T&w
nk
Selection.EndKey unit:=wdLine #oxP,LR
tc = Replace(rText, vbCr, "") ~o8x3`CoF
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False <E\vc6n
X?n(
$z/{
Case "三级标题" jDCf]NvOPM
LastTitle3No = LastTitle3No + 1 q;9OqArq
'新三级标题开始,复位其下属标题编号 :zsMkdU
LastTitle4No = 0 T!QAcO
K'S\$
If Val(ttNo) <> LastTitle3No Then TQ25"bWi
rText = LastTitle3No & ". " & ttString O*m9qF<
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText }W5~89"
:p.f zL6X
End If 8eD/9PD=F
'三级标题段落设置 格式:1. 标题内容 P7
R}oO_n:
.Paragraphs(paraCounter).Range.Text = rText 7 MG<!U
.Paragraphs(paraCounter).Style = "QLNU三级标题" -Rj3cx
.Paragraphs(paraCounter).Range.Select e+Sq&H!@
Selection.EndKey unit:=wdLine betTAbF
tc = Replace(rText, vbCr, "") $im6v
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False TJz}
8-#t
Case "四级标题" </23* n]
LastTitle4No = LastTitle4No + 1 _!^2A3c<
+"JQ5~7
If Val(ttNo) <> LastTitle4No Then yI
. hN
rText = "(" & LastTitle4No & "). " & ttString M b(hdS90
ErrMsg.AddItem "四级标题编号错误:" & ParaText Hzojv<c
KKM!($A
End If (n4Uc308
'四级标题段落设置 格式:(1). 标题内容 y{J7^o(_~
.Paragraphs(paraCounter).Range.Text = rText {h~<!sEX
.Paragraphs(paraCounter).Style = "QLNU四级标题" -\V;Gw8mD
.Paragraphs(paraCounter).Range.Select jYnP)xX
;
Selection.EndKey unit:=wdLine tW"s^r=95
tc = Replace(rText, vbCr, "") QUz_2rN^
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False ]vZ}4Xno
=7Sw29u<
Case "表格标题" ![/ QW
LastTableNo = LastTableNo + 1 ew*;mQd
Hw%lT}[O
If ttNo <> CStr(LastTableNo) Then KBwY _
rText = "表" & LastTableNo & ". " & ttString n[
ErrMsg.AddItem "表格编号错误:" & ParaText x)-n[Fu
RKwuvVI
End If NU.YL1
i?|b:lcV
'表格名称段落设置 格式:表1. 表格名称 qWb 8"
.Paragraphs(paraCounter).Style = "QLNU表格标题" z i3gE$7
xe = Replace(rText, vbCr, "") AJ)N?s-=
.Paragraphs(paraCounter).Range.Select YbP}d&L
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 |#x]/AXa0/
Selection.Range.Text = xe 06>+loBG
Selection.EndKey
9[Xe|5?c
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False c{wob%!>
Rj~y#m
Case "表格首行" &ej|DM6
.Paragraphs(paraCounter).Style = "QLNU表格首行" 884 -\M"h
Case "图片标题" ts;C:.X
LastFigureNo = LastFigureNo + 1 4\(|V
fy
%^(} fu
If ttNo <> CStr(LastFigureNo) Then ;-!O+c
rText = "图" & LastFigureNo & ". " & ttString hXQo>t-$
ErrMsg.AddItem "表格编号错误:" & ParaText s
Vg89I&
wo_iCjmK
End If Lr<?eWdCwJ
'图片名称段落设置 格式:图1. 图名称 @S?D
}myD
.Paragraphs(paraCounter).Range.Text = rText vKTCS
.Paragraphs(paraCounter).Style = "QLNU图片标题" uEDvdd#V.
.Paragraphs(paraCounter).Range.Select d2tJ=.DI
Selection.EndKey unit:=wdLine !sav~dB)
xe = Replace(rText, vbCr, "") fx= %e
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False RbJbVFz8C
Case "正文" G33'Cgo:,
'正文名称段落设置 iK9#{1BpML
.Paragraphs(paraCounter).Style = "QLNU正文" f^ 6da6Z
Case "文献条目" T#D*B]oZ}
With .Paragraphs(paraCounter) yI8
/
m|
'.Range.Select 7` IO mTk
'Selection.ClearFormatting 4/E>k <MA
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” N A9ss
.Style = "QLNU参考文献" yrV]I(Xe
End With 'T*h0xX
Case "图表注解" 1eMaKT_=
With .Paragraphs(paraCounter) f}{Oj-:"CC
.Range.Font.NameFarEast = "楷体" m9Hdg^L
.Range.Font.NameAscii = "Times New Roman" m,#Us
.Range.Font.Size = 9 '小5号字 95oh}c
XMm(D!6
.Alignment = wdAlignParagraphCenter #4ii!ev
.LeftIndent = 0 y\}<N6
.RightIndent = 0 Y\
{&chuF
.FirstLineIndent = 0 ]hlYmT
.LineSpacing = 12 4Q^i"jT
.LineSpacingRule = wdLineSpaceExactly o&Sv2"2
.LineUnitAfter = 0 +V/m V7FK
.LineUnitBefore = 0 ,=y8[(h
.OutlineLevel = wdOutlineLevelBodyText &1ss
@-
.PageBreakBefore = False 'kk
B>g7B
.RightIndent = 0 |n\(I$
.WordWrap = True Gkz~xQy1T
.LineUnitAfter = 0.5 81Ityd-}
=pn(56
End With $jL+15^N0+
Case Else $iOkn|~<@W
'不作处理 0A.9<&Lod
End Select ~+O ws
VMV~K7%0
'含有inlineshape的段落处理 CU
a`#
If ShapeHeight > 30 Then bT c'E#
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 %y R~dt'
End If meR5E?Fm
zq4)Uab*
If (ShapeWidth + ShapeHeight) > 150 Then PZSi}j/
.Paragraphs(paraCounter).Style = "QLNU图片段落" 7"$9js 2
End If q%c"`u/v/
#(d
/A<
'段落计数器递 LKI2R_|n
paraCounter = paraCounter + 1 6Z68n
Me.lbCounter.Caption = "当前检测段落:" & paraCounter H"%SzU
Me.txtStatus.Text = ParaText ;
Ak 6*Sr
DoEvents L_ 2R3w
Loop H&=3rkX
End With ]|)M /U *
6+x>g
msg = "" c9axzg
UA
4dUr8]BkG
For i = 0 To Me.ErrMsg.ListCount - 1 >}>cJh6
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) 7g&<ZZo
Next !-Md+I_
v#Y9O6g]T
_:.'\d(
,: 4+hJ<q
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg aOTrng
Me.cmdCheck.Enabled = True _-bEnF+/0
Me.txtStatus.Visible = True R#33ACCX
Me.lbParaType.Visible = False \C;F5AO
$Y_v X
2
bContinue = False S9@)4|3C|p
End Sub J)a^3>
s14; \
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) n%}Vd
`c
Dim pTEXT As String 7s.vJdA]6
EPL"H:o5%<
pTEXT = ChKRange.Text ?)'+l
Q^\f,E\S
ParaType = "其它"
#dm"!I>g
TitleString = pTEXT \z)` pno
TitleNo = "N/A" }[8Nr+
y
iXFN|ml
shpCounter = ChKRange.InlineShapes.Count rdQ'#}Ix
If shpCounter <> 0 Then ^+q4* X6VB
MaxShpHeight = 0: TotalShpWidth = 0 .T }q"
For i = 1 To shpCounter _0=$ 2Y^
k = ChKRange.InlineShapes(i).Height zHW}A
`Rz
l = ChKRange.InlineShapes(i).Width l?swW+x\
If k > MaxShpHeight Then %[7<GcWl
MaxShpHeight = k rH5
'+x K
End If 7T-}oNaJA\
TotalShpWidth = TotalShpWidth + l ;+iw?"
Next L(i0d[F
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then |!?`KO{
Exit Sub a]8}zSUK
End If #\r5Q>
End If %<Te&6NU'
NlV,]
$L1T
'空行 fN{JLp
If Len(pTEXT) <= 2 Then pG9qD2Cf
Exit Sub \)mV2r!%
End If gCc::[}\Y
ejI nJ
g7nqe~
`{
'是否为表格中的文字 -p2 =?a
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then iH[ .u{h
ParaType = "表格内容" hp)k[|u;
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) b_xGCBC
If k = 1 Then $Hbd:1%i
{
ParaType = "表格首行" R=u!RcvR
End If +
c"$-Jr
Exit Sub TBp$S=_**
End If d
,!sZ&v
Wo8.tu-2
'例外情况:脚注 z'd*z[L~
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then 8ECBi(
ParaType = "脚注" @&LtIN#
Exit Sub l4`HuNR1
End If vaOCH*}h
O9(6 ?n
'例外情况:尾注 #K_E/~
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then zM*PN|/%sH
ParaType = "尾注" _|%l) KO
Exit Sub yM-3nwk
End If }m0hq+p^
<>|/U `
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then o?\v
8.n
ParaType = "页眉页脚" E3<~C(APW
Exit Sub {&Es3+{A
End If mbh;oX+
o$,Dh?l
ra*(.<&
With regEX ?g\SF}2
.Global = True 7o5~J)qIC
;]+p>p-#
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" V]I+>Zn| 7
If regEX.Test(pTEXT) Then )RE~=*?d
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") ui#K`.dn
TitleString = regEX.Replace(pTEXT, "$3") 3om4q2R
TitleNo = regEX.Replace(pTEXT, "$1") qwx{U
ParaType = "章" ZyQ+}rO
Exit Sub
c!})%{U
End If A
D/7k3:
E5U{.45
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" :VEy\ R>W
If regEX.Test(pTEXT) Then
=$t
ParaType = "一级标题" C-6m[W8S
regEX.Execute (pTEXT) &z"sT*3
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") 2%F!aeX
TitleString = regEX.Replace(pTEXT, "$3") ELWm>'Q#9
TitleNo = regEX.Replace(pTEXT, "$1") V0!.>sX9
Exit Sub o}4J|@Hi|4
End If !O-9W=NJ
Skn2-8;10
'全角或半角括号中的数字 -6./bB
g
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" 5o dtYI%L
If regEX.Test(pTEXT) Then +W-,74A
ParaType = "二级标题" jJfV_#'N'
regEX.Execute (pTEXT) g9F4nExo
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") v%%;Cp73
TitleString = regEX.Replace(pTEXT, "$5") MH8 Selnv
TitleNo = regEX.Replace(pTEXT, "$2") `aw5"ns^V
Exit Sub _x ;fTW0
End If nB+ e2e&
_g#v*7o2@
'阿拉伯数字 1. 2. 9q=\
_[\[
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" .oR_r1\y
If regEX.Test(pTEXT) Then JIobs*e0m
ParaType = "三级标题" |f.R]+cH
regEX.Execute (pTEXT) R?K[O
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 IhYTK%^96
TitleString = regEX.Replace(pTEXT, "$3") ,{_;q
:
TitleNo = regEX.Replace(pTEXT, "$1") Mkc|uiT
Exit Sub 6%&RDrn
End If O%n =n3
6q!smM
'全角或半角括号中的阿拉伯数字 %ut7T
!Jp
.Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" HLni
zE
If regEX.Test(pTEXT) Then yF#:*Vz>
ParaType = "四级标题" ~>]/1JFz
regEX.Execute (pTEXT) KASw3!.W
ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") PN&;3z Z
TitleString = regEX.Replace(pTEXT, "$5") gU^2;C
TitleNo = regEX.Replace(pTEXT, "$2") 0,x<@.pW
Exit Sub #
*|0WaC
End If |{8eoF
:',Q6
j( s
'表格名称 kj4t![o+
.Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" Vg+jF!\7
If regEX.Test(pTEXT) Then +UTs2*H/^
ParaType = "表格标题" 4}\Dr
%US
regEX.Execute (pTEXT)
@aC2]
ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) s{]2~Z^2od
TitleString = Trim(regEX.Replace(pTEXT, "$3")) B-
VhUS
TitleNo = Trim(regEX.Replace(pTEXT, "$1")) ~Uet)y<
strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换 1*>lYd8_
Exit Sub gqi|k6V/
End If xN a Dzu"
\?X'U:
'图片名称 QNzx(IV@
.Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" lN-[2vT<
If regEX.Test(pTEXT) Then D\H)uV`
ParaType = "图片标题" 8eVQnp*
regEX.Execute (pTEXT) X+*"FKm S.
ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3") &74*CO9B9
TitleString = regEX.Replace(pTEXT, "$3") C"We>!
TitleNo = regEX.Replace(pTEXT, "$1") w u
Exit Sub Q]u*Oels
End If Apfs&{Uy
=h{jF7
'参考文献 @9wug!,
.Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})" '[数字]、 I>jDM
If regEX.Test(pTEXT) Then @4Ox$M
ParaType = "文献条目" R3dCw:\O+Z
'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4") [MkXQw
Y
'TitleNo = regEX.Replace(pTEXT, "[$2] ") l]GUQcN=
Exit Sub k^ZcgHHgb
End If vV?=r5j
Rf~? u)h1
prfx = Left(pTEXT, 2) B[I
a8t
If prfx = "注:" Or prfx = "注:" Then dgIEc]#pH
ParaType = "图表注解" xqua>!mqS
Exit Sub )|` #BC
End If o1"-x
pM^r8kIH
!VfP#B6.
ParaType = "正文" +$YluGEJ
r^$4]@Wn
End With O\(0{qu
End Sub P}El#y#&
9Fkzt=(E~
Sub ConvertListToOrdinary() ?oc#$fcQ~
Dim st As Paragraph VZ:LK
With ActiveDocument nDhD"rc
For i = .Paragraphs.Count To 1 Step -1 >**7ck
Set st = .Paragraphs(i) fs=W(~"
lst = st.Range.ListFormat.ListString '{t&!M`
If lst <> "" Then |Ir&C[QS{y
st.Range.ListFormat.RemoveNumbers {'QA0K
st.Range.InsertBefore lst & " " q
i27:oJ
End If laQM*FLg
Next Z\`i~
End With QE.a2
}
Set st = Nothing h!"|Q"18
End Sub abVz/R/o
PJCRvs|X
Private Sub UserForm_Activate() -zq_W+)ks
Me.lbTotal.Caption = "当前文章段落总数:" & ActiveDocument.Paragraphs.Count & " 共" & ActiveDocument.Sections.Count & "节" f[bx|6
Me.lbTotal.Font.Bold = True i8tH0w/(M
Me.txtStatus.Visible = False ezC2E/#
Me.cmdCheck.Enabled = True cS'|c06
Xyr
f$R'
End Sub ?1f(@
KH<f=?b
n;eK2+}]
Sub CheckSuperScript() 2
P=c1;
Selection.Find.ClearFormatting f0^DsP
Selection.Find.Replacement.ClearFormatting Hz&.]yts2J
With Selection.Find z}" Xt=G?
.Text = "[【\[[〖](*)[】\]〗]]" B tZycI
.Replacement.Text = "[\1]" wd/"! A4(
.Replacement.Font.Superscript = True -I'@4\<
'.Replacement.Font.Color = wdColorBlue +])St3h
.Forward = True UqP
%S$9
.Wrap = wdFindContinue 16p$>a<6
.FORMAT = True $
+`
.MatchCase = False c%|18dV
.MatchWholeWord = False 6uU2+I
.MatchByte = False /puM3ZN
.MatchAllWordForms = False whzV7RT
.MatchSoundsLike = False \.R+|`{tf
.MatchWildcards = True B@Ae2_;
End With $YmD;
Selection.Find.Execute Replace:=wdReplaceAll AvN\^
&G
End Sub FTihxC?.L
(oYM}#Q
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) dh~+0FZ
{A
bContinue = False ~;f,Ad`Q
Set regEX = Nothing )T=cd
End Sub d +]Gw
"Zh6j)[o
Sub CeateOrModifyStyle() <oE(I)r4,
' ~[por
' %Q}T9%Mtj
Dim stl As Style !1:364
5F8sigr/h
Options.Pagination = False -qPYm?$
FK$?8Jp
On Error Resume Next 0 ;b%
@_E
For Each stl In ActiveDocument.Styles ZkyH<Aa
stl.Delete BtSl%(w
Next m|RA@sY%`
On Error GoTo 0 N*C"+2
X\I"%6$
Set stl = Nothing gX}(6RP_!
n
2k&yL+a
DoEvents Uv(T
HxVh
On Error Resume Next \9*,[mvC
y8$TU;
ActiveDocument.Styles.Add Name:="BaseStyle", Type:=wdStyleTypeParagraph H'L~8>
7,sslf2%K
ActiveDocument.Styles.Add Name:="QLNU论文题目", Type:=wdStyleTypeParagraph Sc<%$ Gd
ActiveDocument.Styles.Add Name:="QLNU中文摘要", Type:=wdStyleTypeParagraph r&G=}ZMO
O;NQJ$^bI
ActiveDocument.Styles.Add Name:="QLNU英文标题", Type:=wdStyleTypeParagraph w2!5Cb2
ActiveDocument.Styles.Add Name:="QLNU英文摘要", Type:=wdStyleTypeParagraph !;YmLJk;hN
v$O%U[e<
ActiveDocument.Styles.Add Name:="QLNU目录项", Type:=wdStyleTypeParagraph eQ}o;vJ
N
ActiveDocument.Styles.Add Name:="QLNU章节标题", Type:=wdStyleTypeParagraph O>=D1no*
ActiveDocument.Styles.Add Name:="QLNU一级标题", Type:=wdStyleTypeParagraph Kh!h_
ActiveDocument.Styles.Add Name:="QLNU二级标题", Type:=wdStyleTypeParagraph Zz\e:/
ActiveDocument.Styles.Add Name:="QLNU三级标题", Type:=wdStyleTypeParagraph -N')LY
ActiveDocument.Styles.Add Name:="QLNU四级标题", Type:=wdStyleTypeParagraph -m&