Dim bContinue As Boolean dd6%3L{cn
p"7[heExw
Dim regEX As New RegExp gLY15v4?
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 sgnc$x"
i9
V,
Dim LastTitle0String As String, LastTitle0No As Long 6Eus_aP
Dim LastTitle1String As String, LastTitle1No As Long sy-#E
o#3
Dim LastTitle2String As String, LastTitle2No As Long mN>(n+ly
Dim LastTitle3String As String, LastTitle3No As Long ~1aM5Ba{
Dim LastTitle4String As String, LastTitle4No As Long 4;@L#Pzt
Dim LastTitle5String As String, LastTitle5No As Long x0%yz+i{:
Dim LastTabelString As String, LastTableNo As Long r i)`e
Dim LastFigureString As String, LastFigureNo As Long <EdNF&S-
pFV~
1W:
Dim strSeperator As String #
2FrP5rC
2R
^6L@fw
Sub ConvertWidth(fTEXT As String, rText As String) |Qb@.
Selection.Find.ClearFormatting -knP5"TB
Selection.Find.Replacement.ClearFormatting k)[c!\a[i
Selection.Find.Wrap = wdFindContinue *K&
$9fah
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText 6y "]2UgQk
DoEvents GHo
mk##0E
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True %eh.@8GL`
End Sub .|Yn[?(
B~M6l7^?
Sub ClearDomain() y2mSPLw
With Selection.Find I0><IaFy
.ClearFormatting XL9-N?(@
.Replacement.ClearFormatting
sCmN|Q
.Wrap = wdFindContinue tv
Zq):c
Me.txtStatus.Text = "清除所有域代码" hd,O/-m#
DoEvents sl
"H!cwF
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False ;Wa&Dg/5`
End With yu@Pd3
End Sub [>U2!4=$M
x<OVtAUB
Private Sub cmdCheck_Click() |WpJen*?Y
bContinue = True j/F
('r~L
Dim NoSeries1(1 To 16) As String ;)SWwhQ
Dim NoSeries2(1 To 16) As String Sx (E'?]
Dim NoSeries5(1 To 16) As String +md"X@k5*
Dim NoSeriesRM(1 To 16) As String :6Tv4ZUvcG
Dim paraTotal As Long, ParaText As String f@$kK?c?
Dim ttString As String, ttNo As String FUZuS!sJ
u.*}'C>^^v
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long |DP
q~l(d
mi7~(V>
Me.txtStatus.Visible = True ~3&hvm[IQ
Me.lbParaType.Visible = True 6!USSipn
Me.cmdCheck.Enabled = False v T
@25
xZM4CR9]*C
]vPdj"7
:."6 g)T
g_!xD;0
Dim ParaType As String, rText As String %mD{rG9
sl(go^
Selection.WholeStory /{
P-WRz>
Selection.NoProofing = True K r<UPr
]rNxvFN*j
tm1 = Now Dd,i^,4Gj
d{7)_Sbky
ActiveWindow.View.Type = wdNormalView
t@a&&
AX'-}5T=
NoSeries1(1) = "一" /"8|26
NoSeries1(2) = "二" th<>%e}5c
NoSeries1(3) = "三" X<pNc6
NoSeries1(4) = "四" !N_eZPU.v
NoSeries1(5) = "五" d(@ ov^e-
NoSeries1(6) = "六" =;F7h
@:
NoSeries1(7) = "七" BjfTt:kY
NoSeries1(8) = "八" _3NH"o
d
NoSeries1(9) = "九" s,pg4nst56
NoSeries1(10) = "十" 9]lyV
NoSeries1(11) = "十一" OF)*kiJ
NoSeries1(12) = "十二" 3lEP:Jp
NoSeries1(13) = "十三" {t.S_|IE
NoSeries1(14) = "十四" 3xmPY.
NoSeries1(15) = "十五" /d/]#T[Z9
NoSeries1(16) = "十六" &Nw|(z&$
P2 qC[1hYH
NoSeries2(1) = "㈠" ImD&~^-_<
NoSeries2(2) = "㈡" .TDg`O24c,
NoSeries2(3) = "㈢" kY6_n4
NoSeries2(4) = "㈣" VR%*8=
NoSeries2(5) = "㈤" Zz]/4 4t
NoSeries2(6) = "㈥" ;j[:tt\k
NoSeries2(7) = "㈦" 3OY(L`
NoSeries2(8) = "㈧" O(9*VoD
NoSeries2(9) = "㈨" 0%Y}CDn_
NoSeries2(10) = "㈩" @?;)x&<8?3
?<5KLvG v
NoSeries5(1) = "①" lDF7~N9J_
NoSeries5(1) = "②" :Bu)cy#/[
NoSeries5(3) = "③" 1_]%,
NoSeries5(4) = "④" $9xp@8b\_
NoSeries5(5) = "⑤" :7 JP(j2
NoSeries5(6) = "⑥" vA[7i*D{w
NoSeries5(7) = "⑦" (d*||"
NoSeries5(8) = "⑧" !,rF(pz
NoSeries5(9) = "⑨" 94]i|2qj*
NoSeries5(10) = "⑩"
!4<A|$mQ
5*Qzw[[=
cM4{ e^
NoSeriesRM(1) = "I" *
UXa.kT@
NoSeriesRM(2) = "II" k7L4~W
NoSeriesRM(3) = "III" %o0 H#7'
NoSeriesRM(4) = "IV" ,H<nNBv3M
NoSeriesRM(5) = "V" ${}9/(x/^
NoSeriesRM(6) = "VI" c,M"a
NoSeriesRM(7) = "VII" .u=|h3&
NoSeriesRM(8) = "VIII" B@*!>R
NoSeriesRM(9) = "IX" 3+
2&9mm
NoSeriesRM(10) = "X" hN\sC9a1
NoSeriesRM(11) = "XI" Iz;^D!
NoSeriesRM(12) = "XII" Twr,O;*u=
NoSeriesRM(13) = "XIII" jxt]Z3a ~0
NoSeriesRM(14) = "XIV" `*`ZgTV
NoSeriesRM(15) = "XV" VVpJ +
NoSeriesRM(16) = "XVI" {*r!oD!'
OECVExb@eH
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) \3%3=:
=vriraV"
If i = vbNo Then J!dv"Ww"
Exit Sub Ul'H(eH.v
End If A:(qF.Tm
Fu\#:+5\
If Me.chkSuper.Value Then 52,'8`
]
Me.txtStatus.Text = "检查修改所有的上标格式" tA'5ufj*:
fY #Y n
CheckSuperScript -^;,m=4{3
lz1cLl
m
End If }jU)s{>fb
NR-<2
e3
If Me.chkStyle.Value Then opu)9]`z
Me.txtStatus.Text = "设置样式,请稍候...." P"t Dq&
DoEvents Bn=YGEvz
CeateOrModifyStyle eNM"e-
End If t]iKU@3
.3@Pz]\M#>
{sj{3I u
Z!jJ93A"
ClearDomain vQy<%[QO
='C;^
Bk
{yEL$8MC
{ot6ssT=D
If Me.chkLIST.Value Then gS`Z>+V5!c
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" $fT#Wva-\d
"(kiMog-
ConvertListToOrdinary cWo__EE
End If -mo4`F
tL1\q Qg
u6IM~kk>5
Dim pType As String, trimpTEXT As String ac966<#
If Me.chkNum.Value = True Then /TIt-c
Me.txtStatus.Text = "转换全角数字形式为半角" gQ%mVJB{(
ConvertWidth "1", "1" 4cJ/XgX
DoEvents '?fGI3b~/
ConvertWidth "2", "2" o]&P0 b
DoEvents gw%L M7yQR
ConvertWidth "3", "3" C7}iwklcsa
DoEvents Y%@;\
ConvertWidth "4", "4" HCe/!2Y/%
DoEvents twK 3
ConvertWidth "5", "5" BQeg-M
DoEvents 0dI7{o;<|
ConvertWidth "6", "6" ~Ga{=OM??
DoEvents 'aEN(Mdz1e
ConvertWidth "7", "7" 4!-R&<TLve
DoEvents 5~(nHCf>
ConvertWidth "8", "8" BO6XY90(
DoEvents `Hv"^o
ConvertWidth "9", "9" `krVfE;_
O
DoEvents D~`RLPMk
ConvertWidth "0", "0" r(_Fr#
Qn
DoEvents 78<fbN5}r
ConvertWidth "a", "a" /^I!)|At
DoEvents /OMgj7olD
ConvertWidth "b", "b" ;TwqZw[.
DoEvents jHA(mU)b
ConvertWidth "c", "c" /[Rp~YzW
DoEvents kGakdLl
ConvertWidth "d", "d" olXfR-2>1
DoEvents Qv;b$by3
ConvertWidth "e", "e" i=pfjC
DoEvents 9 }42s +
ConvertWidth "f", "f" MBU4Awj
DoEvents JS<w43/j
ConvertWidth "g", "g"
fD8GAav
DoEvents dldS7Q
ConvertWidth "h", "h" $?VYHkX
DoEvents :O?3lj)
ConvertWidth "i", "i" 322-'S3<
DoEvents #SjCKQ~
ConvertWidth "j", "j" \yLFV9P}EL
DoEvents ed3wj3@
ConvertWidth "k", "k" -lq`EB+
DoEvents w
!<-e>
ConvertWidth "l", "l" }g|9P SbJ
DoEvents HzuG- V
ConvertWidth "m", "m" 9
(_n8br1
DoEvents
O`N,aYo
ConvertWidth "n", "n"
ycvgF6Me<
ConvertWidth "o", "o" Y`6<:8[?
ConvertWidth "p", "p" [D?d~pB
ConvertWidth "q", "q" :Dtm+EQ
ConvertWidth "r", "r" g?Rq .py]!
ConvertWidth "s", "s" g0s4ZI+T
ConvertWidth "t", "t" jYBiC DD
ConvertWidth "u", "u" hgwS_L
ConvertWidth "v", "v" LcNI$g;}Yf
ConvertWidth "w", "w"
5Fq+^
ConvertWidth "x", "x" 'dv(
ConvertWidth "y", "y" Nd@/U
c
ConvertWidth "z", "z" P=y1qq
C
ConvertWidth "A", "A" vkM_a}%<
ConvertWidth "B", "B" c|(Q[=
ConvertWidth "C", "C" 6{g&9~V
ConvertWidth "D", "D" >%n6n! "
ConvertWidth "E", "E" wsc=6/#u
ConvertWidth "F", "F" WU.eeiX
ConvertWidth "G", "G" A8AeM`
ConvertWidth "H", "H" MI.OOoP3a
ConvertWidth "I", "I" z U*Mk
ConvertWidth "J", "J" /len8FRf
ConvertWidth "K", "K" d>r ]xXB6
ConvertWidth "L", "L" - ku8n%u
ConvertWidth "M", "M" D$
w?
ConvertWidth "N", "N" *TCV}=V G
ConvertWidth "O", "O" o"A?
Aq
ConvertWidth "P", "P" hQNUA|Q=%
ConvertWidth "Q", "Q" { Q!Xxe>6
ConvertWidth "R", "R" o>m*e7l,
ConvertWidth "S", "S" &Wk:>9]Jrb
ConvertWidth "T", "T" Z-" NLwt[
ConvertWidth "U", "U" *7#5pT~
ConvertWidth "V", "V" o4
LVG
ConvertWidth "W", "W" rsw=a_S
ConvertWidth "X", "X" L&]{GNw
ConvertWidth "Y", "Y" vNZ"x)?
ConvertWidth "Z", "Z" w^7[4u4
ConvertWidth "^l", "^p" 8|+@A1)&4
ConvertWidth "(", "(" Z7?\ >4V
ConvertWidth ")", ")" _6]CT0
kK0zb{
End If rTJ;s
,ZO?D|M1
With ActiveDocument J%!vhQ
Dim tbl As Table R?}%rP+^e
For Each tbl In .Tables 4s"x}c">F
tbl.Rows.Alignment = wdAlignRowCenter jxYze/I
tbl.Range.Font.NameFarEast = "楷体" \Il?$Kb/
tbl.Range.Font.NameAscii = "Times New Roman" NpbZt;%t
tbl.Range.Font.Size = 10.5 cA|
n*A-j<
Next /N./l4D1K-
Set tbl = Nothing R4zOiBi'B
End With c{x:'@%/s'
BE0Xg
`>lY$EBG@[
With ActiveDocument 60D6UW
T)eUo
For i = 1 To .TablesOfContents.Count 9OlJC[
.TablesOfContents(i).Delete !2/o]_K@+
Next 0j}@lOt(
8k.#4}fP
^(BE_<~
4CS$%Cu\?w
paraTotal = .Paragraphs.Count r $ YEq5
paraCounter = 1 3u
s^\w#
?f!
&M
LastTitle0No = 0 R[m+s=+
LastTitle1No = 0 qK%#$JgqA
LastTitle2No = 0 zcio\P=^|B
LastTitle3No = 0 (S6>^:;=~
LastTitle4No = 0 ldRq:M5z
LastTableNo = 0 5B3sRF}
LastFigureNo = 0 V
~Jt
&k`lbkq
Dim Sec As Long i.FdZN{
e#WASHZN
Sec = InputBox("正文从第一节开始?", "节设置", 6) v`@N R06
If Sec = 0 Then V,?])=Ax
Exit Sub {"r
L3Lk
End If /
IHF
GK3
cQw
k = 0 6J cXhlB`
Do While (paraCounter < paraTotal) And bContinue G1I<B
k = k + 1 @Yw42`>!s
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then SWT)M1O2
Exit Do
Mi}k>5VT
End If tCu.Fc@
paraCounter = paraCounter + 1 f>Tn#OW
If k Mod 20 = 0 Then |F qujZz
Me.lbCounter.Caption = paraCounter 1.Ne
g|
DoEvents -f?,%6(1
End If |ss4pN0X
Loop ItZ*$I1<
3S%/>)k
9w1`_r[J
Do While (paraCounter < paraTotal) And bContinue SR<W3a\
p>+Q6o9O
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) uE..1N&*
ShapeHeight = 0 Oz"_KMz
ShapeWidth = 0 [3x*47o "z
"od2i\
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth )L_@l5l
r*FAUb`bG
Select Case ParaType 7dR]$~+*e
Case "【】表格内容" #;;A~d:V
.Paragraphs(paraCounter).Style = "QLNU表格内容" ^^YP kh6sS
Case "章" "wxyY
^"
LastTitle0No = LastTitle0No + 1 P"[{s^mb
'新一章开始,复位其下属标题编号 'HL.W](
LastTitle1No = 0 SI=7$8T5=5
LastTitle2No = 0 S&Hgr_/}c
LastTitle3No = 0 )t2 eg1a:
LastTitle4No = 0 ITz+O=I4R]
Ac}5,
k = Val(ttNo) Lg-!,Y
If k = 0 Then '非数字编号章节 ~Ds3-#mMy
If ttNo <> NoSeries1(LastTitle0No) Then ]7q|) S\
rText = "第" & NoSeries1(LastTitle0No) & ttString }1.'2.<Y
Me.ErrMsg.AddItem "章节编号错误:" & ParaText X3~@U7DU
End If [LV>z
Else
/7ykmW
If Val(ttNo) <> LastTitle0No Then "DX2Mu=
rText = "第" & LastTitle0No & ttString fOP3`G^\
Me.ErrMsg.AddItem "章节编号错误:" & ParaText m;U_oxb
End If )vY )Mg
<uo@k'
End If F8\JL %
UH((d*HX4
'章段落设置 }z2[w@M
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 @R`Ao9n9V
.Paragraphs(paraCounter).Style = "QLNU章节" AyOy&]g
.Paragraphs(paraCounter).Range.Select /U0,%
Selection.EndKey unit:=wdLine jFI`CA6P
tc = Replace(rText, vbCr, "") u!t<2`:h
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False Xs~IoU
Case "一级标题" :8]y*j
LastTitle1No = LastTitle1No + 1 wb39s^n
'新一级标题开始,复位其下属标题编号 |>wGl
LastTitle2No = 0 7IrH(~Fo
LastTitle3No = 0 02YmV%
LastTitle4No = 0 I`x[1%y2 F
xgvwH?<
If ttNo <> NoSeries1(LastTitle1No) Then D&DbxTi
rText = NoSeries1(LastTitle1No) & "、" & ttString m.lzkS]P
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText o;OEb
End If sdN1BV2
Ve xxdg
|!CAxE0d$B
'一级标题段落设置 格式:一、标题内容 .
\8"f]~
.Paragraphs(paraCounter).Range.Text = rText |:L}/onK
.Paragraphs(paraCounter).Style = "QLNU一级标题" f7;<jj;w7
.Paragraphs(paraCounter).Range.Select TrQUhmS/!
Selection.EndKey unit:=wdLine vLGn
Lpt
tc = Replace(rText, vbCr, "") ku#WQL
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False 0u
+_D8G
Case "二级标题" BP1<:T'.q`
LastTitle2No = LastTitle2No + 1 ezS@`_pR;
'新二级标题开始,复位其下属标题编号 xX.{(er
LastTitle3No = 0 t"vkd
LastTitle4No = 0 J"XZnb)E=
7s Gf_`Z
If ttNo <> NoSeries1(LastTitle2No) Then mgb+HNH%q\
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString (N9g6V
ErrMsg.AddItem "二级标题编号错误:" & ParaText .kB!',v\
End If YU\k D
l;
B
'二级标题段落设置 格式:(一)、标题内容 E9'
2_e
.Paragraphs(paraCounter).Range.Text = rText I2,AT+O<
.Paragraphs(paraCounter).Style = "QLNU二级标题" '*<I<? z;
YhP+{Y8t
.Paragraphs(paraCounter).Range.Select x]IJ;
Selection.EndKey unit:=wdLine
nW
oh(a
tc = Replace(rText, vbCr, "") p@oz[017/J
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False :*YnH&
:4r*Jju<V
Case "三级标题" k[y^7,r
LastTitle3No = LastTitle3No + 1 \Qf2:[-V0
'新三级标题开始,复位其下属标题编号 ;R$2+9
LastTitle4No = 0 /E:BEm!
s?
2ikJq
If Val(ttNo) <> LastTitle3No Then X, }(MW
rText = LastTitle3No & ". " & ttString bas1(/|S
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText WS%yV|e
Zb:Z,O(vn
End If aYc^ 9*7
'三级标题段落设置 格式:1. 标题内容 ^zfs8]QSf
.Paragraphs(paraCounter).Range.Text = rText $KP;9
.Paragraphs(paraCounter).Style = "QLNU三级标题" K{ntl-D&y
.Paragraphs(paraCounter).Range.Select F!-%v5.y
Selection.EndKey unit:=wdLine I^[[*Bh*C
tc = Replace(rText, vbCr, "") dfh 1^Go
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False K87yQOjPv
Case "四级标题" FbXur- et^
LastTitle4No = LastTitle4No + 1 YdN]Tqc
_ne
r
If Val(ttNo) <> LastTitle4No Then 3u<
ntx ><
rText = "(" & LastTitle4No & "). " & ttString *JZlG%z
ErrMsg.AddItem "四级标题编号错误:" & ParaText BKYyc6iE
F
1l8jB\
End If 7;pQ'FmZJ
'四级标题段落设置 格式:(1). 标题内容 `v)ZOw9&
.Paragraphs(paraCounter).Range.Text = rText _ER. AKY
.Paragraphs(paraCounter).Style = "QLNU四级标题" \m=k~Cf:f
.Paragraphs(paraCounter).Range.Select bV+2U
Selection.EndKey unit:=wdLine x0lAJaG
tc = Replace(rText, vbCr, "") &q#.
>
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False PZI6{KOis
Lb{.}
Case "表格标题" RrdLh z2N
LastTableNo = LastTableNo + 1 NCgKWyRR
NPDMv
|4
If ttNo <> CStr(LastTableNo) Then kM(m$Oo.
rText = "表" & LastTableNo & ". " & ttString 5<P6PHdY
ErrMsg.AddItem "表格编号错误:" & ParaText }T}xVd0
b.RFvq5Z
End If e\!Aoky
yR"mRy1
'表格名称段落设置 格式:表1. 表格名称 ,hm&]
.Paragraphs(paraCounter).Style = "QLNU表格标题" Kq(JHB+
xe = Replace(rText, vbCr, "") yq[@Cw
.Paragraphs(paraCounter).Range.Select %AmyT
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 \9`.jB~<
Selection.Range.Text = xe lbC,*U^
Selection.EndKey T 2Yc` +
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False yJ;Qe_up
d\25
Case "表格首行" &=XK:+
.Paragraphs(paraCounter).Style = "QLNU表格首行" T wzpq1
Case "图片标题" R*r"};
LastFigureNo = LastFigureNo + 1 g{f7} gTG
}y vH)q
If ttNo <> CStr(LastFigureNo) Then 45OAJ?N
rText = "图" & LastFigureNo & ". " & ttString \ _?d?:#RD
ErrMsg.AddItem "表格编号错误:" & ParaText bD-OEB
#$F*.vQSs+
End If 5=R]1YI~$
'图片名称段落设置 格式:图1. 图名称 k$>5v +r0
.Paragraphs(paraCounter).Range.Text = rText I1I-,~hO
.Paragraphs(paraCounter).Style = "QLNU图片标题" +,TrJg
.Paragraphs(paraCounter).Range.Select $E
zWUt
Selection.EndKey unit:=wdLine *]nk{jo2
xe = Replace(rText, vbCr, "") 0E)M6
j
J
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False ls~9qkAyLx
Case "正文" c0;rvw7
'正文名称段落设置
unKgOvtj
.Paragraphs(paraCounter).Style = "QLNU正文" (6b0rqPF
Case "文献条目" e0j4t-lL
With .Paragraphs(paraCounter) }7_$[r'_oI
'.Range.Select }daU/
'Selection.ClearFormatting '*Ld,`
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” gdq6jz
.Style = "QLNU参考文献" rK|("
End With 7k
00lKA\w
Case "图表注解" Ejnk\ 8:
With .Paragraphs(paraCounter) d]MpE9@'v
.Range.Font.NameFarEast = "楷体" =|2F?
.Range.Font.NameAscii = "Times New Roman" /rky
.Range.Font.Size = 9 '小5号字 Z*-a=u%gl'
e3?z^AUXm
.Alignment = wdAlignParagraphCenter |k
Tq
&^$
.LeftIndent = 0 Y?L>KiM$
.RightIndent = 0 mu5r4W47
.FirstLineIndent = 0 ^;tB,7:*V
.LineSpacing = 12 6;wKL?snO
.LineSpacingRule = wdLineSpaceExactly |dDKO
.LineUnitAfter = 0 Sh?eb
.LineUnitBefore = 0 JoZSp"R
.OutlineLevel = wdOutlineLevelBodyText &9"Y:),
.PageBreakBefore = False JpxQS~VX
.RightIndent = 0 B{p74
>
.WordWrap = True cDK)zD
.LineUnitAfter = 0.5 g's!\kr
v["_t/_
End With UcH#J &r
Case Else 8H`L8:
CM
'不作处理 c _!!DEe7
End Select ;>S|?M4GZ
iio-RT?!
'含有inlineshape的段落处理 >(.Y%$9"E
If ShapeHeight > 30 Then A(n#k&W1fZ
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 .Lu3LVS
End If 6ud<U#\b&
N
Hn#c3o
If (ShapeWidth + ShapeHeight) > 150 Then }D.\2x(J
.Paragraphs(paraCounter).Style = "QLNU图片段落" `6;$Z)=.
End If 96P&+
9,JWi{l
Iv
'段落计数器递 X4
Pm&ol
paraCounter = paraCounter + 1 |o'r?"
Me.lbCounter.Caption = "当前检测段落:" & paraCounter ;cZp$
xb3
Me.txtStatus.Text = ParaText xLfv:Rp
DoEvents ZOpKi:\
Loop z;ku*IV
End With R1eWPtWs
sZ;Gb^{Z
msg = "" UtQCTNjC{
X{<taD2~
For i = 0 To Me.ErrMsg.ListCount - 1 X(\L1N
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) hljKBx~
Next WW2hwB(
7_jlNr7uk
)lz~Rt;1i
%wI)uJ2
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg /Z,hQ>/
Me.cmdCheck.Enabled = True o\; hF3
Me.txtStatus.Visible = True u?H.Z
Me.lbParaType.Visible = False j;
R20xf 0
d={o|Mf
bContinue = False Eggu-i(rD
End Sub 3s67)n
f1;@a>X
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) %(W8WLz}
Dim pTEXT As String 9X
+dp
ael] {'h]
pTEXT = ChKRange.Text yqVoedN
[;4;.V
ParaType = "其它" UEhFId
TitleString = pTEXT <q>d@Foi
TitleNo = "N/A" c{KJNH%7
j%Xa8$
shpCounter = ChKRange.InlineShapes.Count cG%X}ZV5
If shpCounter <> 0 Then 6>
z{xYat
MaxShpHeight = 0: TotalShpWidth = 0 H8=:LF
For i = 1 To shpCounter fre5{=@
k = ChKRange.InlineShapes(i).Height pOh<I{r1
l = ChKRange.InlineShapes(i).Width F^aD#
If k > MaxShpHeight Then /J&ks>St
MaxShpHeight = k gNc;P[
End If g"(@+\XZH"
TotalShpWidth = TotalShpWidth + l Nh}u]<B
Next y.6/x?Qc
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then #dD0vYT&od
Exit Sub 9v?@2sOoE
End If w=a$]`
End If hJD3G
|E
WuFBt=%
'空行 )Y9\>Xj7
If Len(pTEXT) <= 2 Then B2'TRXIm1U
Exit Sub =LKM)d=1
End If p\9}}t7n
+l.LwA
FOsxId[f9
'是否为表格中的文字 Pai8r%Zfu
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then &%;n9K
ParaType = "表格内容" #Sx
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) 6(uZn=
If k = 1 Then C"%B>e
ParaType = "表格首行" M ?AX:0
End If 9qgs*]J
Exit Sub /oLY\>pD
End If s@{~8cHgU
4>a(!ht
'例外情况:脚注 _[-W*,xJ)
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then ByO?qft>u
ParaType = "脚注" %>6ilGQ+
Exit Sub TbN{ex
*
End If 3,X8 5`v^
SynRi/BRmw
'例外情况:尾注 72.Msnn
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then bN03}&I
ParaType = "尾注" {?2|
rv)
Exit Sub Bq1}"092
End If A*A/30o|R
<RZqs
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then !n P4S)A
ParaType = "页眉页脚" xUCq%r_
Exit Sub ^FkB/j
End If 8 H3u"
:Fu7T1
RA;/ ?l
With regEX nc\2A>f`
.Global = True [t$ r)vX
Li"+`
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" +."cbqGP_q
If regEX.Test(pTEXT) Then }6<5mq)%
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") 8lGM
>(:o
TitleString = regEX.Replace(pTEXT, "$3") Cb`, N
TitleNo = regEX.Replace(pTEXT, "$1") I%GQ3D"=
ParaType = "章" +6
=lN[b
Exit Sub 9 wbQ$>G9
End If T93st<F=R
KfYU.Q
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" MGxkqy?
If regEX.Test(pTEXT) Then 4d}=g]P
ParaType = "一级标题" OK8Ho"
regEX.Execute (pTEXT) yT5OFD|T
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") &q9=0So4\
TitleString = regEX.Replace(pTEXT, "$3") S' kgpF"bm
TitleNo = regEX.Replace(pTEXT, "$1") } .Z`
Exit Sub ?6hd(^
End If +!E9$U>6%
G6}&k[d5%
'全角或半角括号中的数字 x[&<e<6
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" ",J&UTUh
If regEX.Test(pTEXT) Then URg
;e M#
ParaType = "二级标题" k0#s{<I]E
regEX.Execute (pTEXT) &R?to>xr\
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") 'bz&m( !
TitleString = regEX.Replace(pTEXT, "$5") LHXR7Fjc
TitleNo = regEX.Replace(pTEXT, "$2") D~U RY_[A
Exit Sub ~zG)
<S"q
End If `j9\]50Z>
XWQ `]m)
'阿拉伯数字 1. 2. }!R*Q`m
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" rpDBKo
If regEX.Test(pTEXT) Then @"1Z;.S8V
ParaType = "三级标题" 3\
,t_6}
regEX.Execute (pTEXT) Y6Cm
PxOQ
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 4,Oa(b
TitleString = regEX.Replace(pTEXT, "$3") 32?'jRN(ue
TitleNo = regEX.Replace(pTEXT, "$1") 8q9ATB-^>
Exit Sub <hiv8/)?
End If /3
K)$Er
H{,1-&>|
'全角或半角括号中的阿拉伯数字 aq8./^
.Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" &qWB\m
If regEX.Test(pTEXT) Then QKB+mjMH#x
ParaType = "四级标题" (GC5r#AnS
regEX.Execute (pTEXT) -!\%##r7~
ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") 9==4T$nM[
TitleString = regEX.Replace(pTEXT, "$5") ]Y!Fz<-;P
TitleNo = regEX.Replace(pTEXT, "$2") x<Gjr}
Exit Sub .`5|NUhN
End If .P/0`A{&
nqo1+OR
'表格名称 9__B!vw:
.Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" _q4O2Fx0
If regEX.Test(pTEXT) Then ;UM(y@
ParaType = "表格标题" B{D4.!a
regEX.Execute (pTEXT) 5pe)
CjE:
ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) VltM{-k^
TitleString = Trim(regEX.Replace(pTEXT, "$3")) -,T!/E
TitleNo = Trim(regEX.Replace(pTEXT, "$1")) |iX>hJSl
strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换 ~:o$}`mW
Exit Sub s%`l>#H
End If ipg`8*My
5`+9<8V
'图片名称 0Xw>_#Y/xS
.Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" cz/cY:o)
If regEX.Test(pTEXT) Then .UQ|k,,t
ParaType = "图片标题" !<HMMf,-D
regEX.Execute (pTEXT) k ,+,,W
ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3") .%e>>U>F
TitleString = regEX.Replace(pTEXT, "$3") VjNr<~ |d
TitleNo = regEX.Replace(pTEXT, "$1") vmrs(k "d#
Exit Sub J -Lynvqm
End If }r,xx{.u7
-m=A1~|7
'参考文献 Z`MpH
.Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})" '[数字]、 g?Nk-cg
If regEX.Test(pTEXT) Then {wj%WSQj/y
ParaType = "文献条目" US(RWXyg
'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4") <tZZ]Y]
'TitleNo = regEX.Replace(pTEXT, "[$2] ") 1iLo$
Exit Sub p9u*l
End If =b>TF B=*N
?[m1?
prfx = Left(pTEXT, 2) $p4e8j[EJ
If prfx = "注:" Or prfx = "注:" Then vYb4&VV
ParaType = "图表注解" k{{3nenAG
Exit Sub Sw,*#98
End If nKS*y*
oy5K*
}
6Aq]I$
ParaType = "正文" #k|f>D4
D&2NO/
R
End With [+pa,^
End Sub ad
IrrK
U5H%wA['m
Sub ConvertListToOrdinary() o:W*#dt
Dim st As Paragraph :Dw_$
With ActiveDocument f$kbb6juL
For i = .Paragraphs.Count To 1 Step -1 zGyRzxFN
Set st = .Paragraphs(i)
Y6H?ZOq
lst = st.Range.ListFormat.ListString &Tuj`DL
If lst <> "" Then 1Q!^*D
st.Range.ListFormat.RemoveNumbers g3&nxZ
st.Range.InsertBefore lst & " " 3*2~#dh=
End If n7K%lj-.P
Next R6oD
End With <I
tS_/z
Set st = Nothing ng9e)lU~*b
End Sub 5[jS(1a`c
u/6if9B
Private Sub UserForm_Activate() buN@O7\
Me.lbTotal.Caption = "当前文章段落总数:" & ActiveDocument.Paragraphs.Count & " 共" & ActiveDocument.Sections.Count & "节" }F!Uu
KR
Me.lbTotal.Font.Bold = True Qkx*T9W
Me.txtStatus.Visible = False {d;z3AB
Me.cmdCheck.Enabled = True w4
3b=7
F0z7".)
End Sub f<VK\%M
^C
p2#d*
z,x
)Xx
Sub CheckSuperScript() 0#eb] c
Selection.Find.ClearFormatting U&u6356
Selection.Find.Replacement.ClearFormatting H1B%}G*Ir-
With Selection.Find 0E!-G= v
.Text = "[【\[[〖](*)[】\]〗]]" LO)!Fj4|
.Replacement.Text = "[\1]" T)7U+~nQ"
.Replacement.Font.Superscript = True SJa>!]U'xI
'.Replacement.Font.Color = wdColorBlue :??W3
ROn
.Forward = True 1G5 AL2
.Wrap = wdFindContinue ksOsJ~3)
.FORMAT = True k?&GL!?
.MatchCase = False tlUh8os
.MatchWholeWord = False P
(b[|QF
.MatchByte = False K-#d1+P+
.MatchAllWordForms = False d94k
.MatchSoundsLike = False FGHCHSqLq
.MatchWildcards = True /7Pqy2sgE
End With ~5%3]
Selection.Find.Execute Replace:=wdReplaceAll f7\X3v2W}3
End Sub lGWz
!Md6Lh%-w
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 4c 8{AZ
bContinue = False zQ{bMj<S
Set regEX = Nothing J( XDwt
End Sub 9?O8j1F
FI[BZZW
Sub CeateOrModifyStyle() hx9t{Zi
' so$(-4(E O
' rDbtT*vN
Dim stl As Style !37I2*+4
*nJ,|T
Options.Pagination = False i]?
Eq?k
Kmaz"6A
On Error Resume Next >4Tk#+%Jj
For Each stl In ActiveDocument.Styles h+j^VsP zB
stl.Delete ?2~fvMWu
Next Aipm=C8
On Error GoTo 0 `14@d
k
(1^;l;7H
Set stl = Nothing {\0V$#q
y,|2hrj/0E
DoEvents ud5}jyJ
On Error Resume Next 'Gc{cNbXIA
`G\Gk|4;2
ActiveDocument.Styles.Add Name:="BaseStyle", Type:=wdStyleTypeParagraph vVvF e~y]
-"JmQ Fha
ActiveDocument.Styles.Add Name:="QLNU论文题目", Type:=wdStyleTypeParagraph QJ(%rvn3
ActiveDocument.Styles.Add Name:="QLNU中文摘要", Type:=wdStyleTypeParagraph
='b)6R
!(? 7V
ActiveDocument.Styles.Add Name:="QLNU英文标题", Type:=wdStyleTypeParagraph d[,Rgdd@I
ActiveDocument.Styles.Add Name:="QLNU英文摘要", Type:=wdStyleTypeParagraph ~ E6e~
Q\kWQOB_
ActiveDocument.Styles.Add Name:="QLNU目录项", Type:=wdStyleTypeParagraph B!x#|vGXL
ActiveDocument.Styles.Add Name:="QLNU章节标题", Type:=wdStyleTypeParagraph hN!;Tny
ActiveDocument.Styles.Add Name:="QLNU一级标题", Type:=wdStyleTypeParagraph %E&oe $[B
ActiveDocument.Styles.Add Name:="QLNU二级标题", Type:=wdStyleTypeParagraph X5/fy"g&
ActiveDocument.Styles.Add Name:="QLNU三级标题", Type:=wdStyleTypeParagraph pMHl<HH
ActiveDocument.Styles.Add Name:="QLNU四级标题", Type:=wdStyleTypeParagraph 6JZ>&HA
ActiveDocument.Styles.Add Name:="QLNU正文", Type:=wdStyleTypeParagraph ^U5N!"6R
eg}g}a
ActiveDocument.Styles.Add Name:="QLNU表格标题", Type:=wdStyleTypeParagraph -_5Dk'R#`
ActiveDocument.Styles.Add Name:="QLNU表格首行", Type:=wdStyleTypeParagraph >\<eR]12
ActiveDocument.Styles.Add Name:="QLNU表格内容", Type:=wdStyleTypeParagraph xCXsyZ2h
ActiveDocument.Styles.Add Name:="QLNU图片标题", Type:=wdStyleTypeParagraph 5Ex[}y9L`
ActiveDocument.Styles.Add Name:="QLNU图片段落", Type:=wdStyleTypeParagraph s)]T"87H'_
/96lvn]8lO
ActiveDocument.Styles.Add Name:="QLNU参考文献", Type:=wdStyleTypeParagraph bS~Y_]B
On Error GoTo 0 ]goJ- &
DoEvents \u[}
ydO+=R0
M
'BaseStyle Y0|){&PCt
ActiveDocument.Styles("BaseStyle").AutomaticallyUpdate = False p:y\{k"
With ActiveDocument.Styles("BaseStyle").Font VED~v#.c
.NameFarEast = "宋体" qKd ="PR}
.NameAscii = "Times New Roman" }RadbJ{q=
.NameOther = "宋体" s) U1U6O
.Size = 10.5 }vU/]0@,E
.Bold = wdUndefined :qbU@)p*
.Italic = wdUndefined >xS({1A}
.Subscript = wdUndefined TY %zw6 #p
.Subscript = wdUndefined u_' -vZ_
b7\> =
.Underline = wdUnderlineNone 1 mJUlx
.UnderlineColor = wdColorAutomatic 57{T
p:|
.StrikeThrough = False m=@xZw<
.DoubleStrikeThrough = False I]W7FZ=o
;k `51
=Wi
.Outline = False i@?|vu
.Emboss = False U?f-/@fc
.Shadow = False b_F1?:#
.Hidden = False /fb}]e]N
.SmallCaps = False I1':&l^O
.AllCaps = False PaQ lQ#
.Color = wdColorAutomatic f<