Dim bContinue As Boolean >d27[%
gB{]yA"('
Dim regEX As New RegExp J]|6l/i
Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 =hugnX<9
TM/|K|_
Dim LastTitle0String As String, LastTitle0No As Long /UaNYv/
Dim LastTitle1String As String, LastTitle1No As Long 1fO2)$Y
Dim LastTitle2String As String, LastTitle2No As Long S4 k^&$;
Dim LastTitle3String As String, LastTitle3No As Long liCCc;&B;
Dim LastTitle4String As String, LastTitle4No As Long `Dz]z_
Dim LastTitle5String As String, LastTitle5No As Long 5}X<(q(
Dim LastTabelString As String, LastTableNo As Long h$aew63
Dim LastFigureString As String, LastFigureNo As Long 7>t$<J
RP`GG+K
Dim strSeperator As String _
r^90
p-Rm,xyL%
Sub ConvertWidth(fTEXT As String, rText As String) n $O
.>
Selection.Find.ClearFormatting ^T}}4I_Y
Selection.Find.Replacement.ClearFormatting N'eQ>2>O@
Selection.Find.Wrap = wdFindContinue +;:aG6q+
Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText 9
N*S-Po=
DoEvents ~.4W,QLuD
Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True ^:cb
$9F
End Sub j h1 bn
VNr
Sub ClearDomain() KB%j! ?
With Selection.Find $K6?(x_
.ClearFormatting B~V<n&<
.Replacement.ClearFormatting +B`'P9Zk@
.Wrap = wdFindContinue "5o;z@(
Me.txtStatus.Text = "清除所有域代码" 4+/
fP
DoEvents &e HM#as
.Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False \N`fWh8&
End With ')P2O\YS
End Sub {m_A1D/_
9*-pden
l
Private Sub cmdCheck_Click() \'s$ZN$k
bContinue = True J3lG"Ww
Dim NoSeries1(1 To 16) As String +
4V1>e+
Dim NoSeries2(1 To 16) As String r}_Lb.1]
Dim NoSeries5(1 To 16) As String F=
_uNq
Dim NoSeriesRM(1 To 16) As String eN<>#:`
Dim paraTotal As Long, ParaText As String .y %pGi
Dim ttString As String, ttNo As String 0.J1!RIK/
^(dGO)/
Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long Xc8= 2n
vB{;N
Me.txtStatus.Visible = True &A
Qg'|
Me.lbParaType.Visible = True up+.@h{
Me.cmdCheck.Enabled = False fW5"4,
/`4v"f0V
&prdlh=UE
~{1/* &P
]/ZA/:Oa+
Dim ParaType As String, rText As String C}(<PNT
$tD
CS
Selection.WholeStory G!!-+n<
Selection.NoProofing = True cotxo?)Zv
v2M
"b?Q
tm1 = Now HsjELbH
|n|U;|'^
ActiveWindow.View.Type = wdNormalView zJnL<Q
3r~>~ueZ
NoSeries1(1) = "一" 5T$9'5V7
NoSeries1(2) = "二" 1EC -e|M.
NoSeries1(3) = "三" iioct_7,g<
NoSeries1(4) = "四" {2}tPT[a(
NoSeries1(5) = "五" Qfkh0DX
B
NoSeries1(6) = "六" 9:9N)cNvfX
NoSeries1(7) = "七" Tsm)&$JI8
NoSeries1(8) = "八" n=<NFkeX
NoSeries1(9) = "九" .q5J^/kr
NoSeries1(10) = "十" vi[#?;pkF
NoSeries1(11) = "十一" B^8
ZoF
NoSeries1(12) = "十二" r3+<r<gs
NoSeries1(13) = "十三" 3:]{(@J
NoSeries1(14) = "十四" + AcKB82
NoSeries1(15) = "十五" *}
*!+C3
NoSeries1(16) = "十六" q:`77
eD*?q7
NoSeries2(1) = "㈠" L~*|,h
NoSeries2(2) = "㈡" klK-,J
NoSeries2(3) = "㈢" };|!Lhl+
NoSeries2(4) = "㈣" nV!2Dfd
NoSeries2(5) = "㈤" p|&ZJ@3
NoSeries2(6) = "㈥" r,`Z.A
NoSeries2(7) = "㈦" _Hz~HoNU
NoSeries2(8) = "㈧" $'A4RVVT
NoSeries2(9) = "㈨" X[GIOPDx
NoSeries2(10) = "㈩" ,h%D4EVx
a'
IX yj
NoSeries5(1) = "①" 1&X}1
NoSeries5(1) = "②" SWNU1x{,c\
NoSeries5(3) = "③" KXoL,)Hl
NoSeries5(4) = "④" ysSjc
NoSeries5(5) = "⑤" L?=#*4t
NoSeries5(6) = "⑥" ULp)T`P
NoSeries5(7) = "⑦" fbh6Ls/
NoSeries5(8) = "⑧" d'N(w7-Y
NoSeries5(9) = "⑨" [+hy_Nc$
NoSeries5(10) = "⑩" vh9kwJyT
XPHQAo[(s
x !#Ma
NoSeriesRM(1) = "I" Gt^|+[gD
NoSeriesRM(2) = "II" 90
NoSeriesRM(3) = "III" 8BYIxHHz
NoSeriesRM(4) = "IV" ewb*?In
NoSeriesRM(5) = "V" egZyng
pB
NoSeriesRM(6) = "VI" cPA~eZbX
NoSeriesRM(7) = "VII" Nk lz_]
NoSeriesRM(8) = "VIII" JwN}Jm
NoSeriesRM(9) = "IX" eVqM=%
Q
NoSeriesRM(10) = "X" R4#;<)
NoSeriesRM(11) = "XI"
nuf@}W>y
NoSeriesRM(12) = "XII" $l#v/(uFa
NoSeriesRM(13) = "XIII" }Kvh`@CiJ
NoSeriesRM(14) = "XIV" >:w?qEaE
NoSeriesRM(15) = "XV" +G*"jI8W
NoSeriesRM(16) = "XVI" XAjd
%Xv<
tyc8{t#Z
i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) y;,=ajrF
jGO9n
If i = vbNo Then MxM](ew~7
Exit Sub O{lIs_1.Z
End If VqcBwJ!?p
=8$|_
If Me.chkSuper.Value Then ~/^y.SsWM
Me.txtStatus.Text = "检查修改所有的上标格式" :[y]p7;{f
5xh!f%6
CheckSuperScript a(PjcQ4dY
Y5nz?a
End If HBt|}uZ?6i
.@y{)/
If Me.chkStyle.Value Then ?ada>"~GR_
Me.txtStatus.Text = "设置样式,请稍候...." ^-gfib|VGe
DoEvents ,bB( 24LD
CeateOrModifyStyle /HB+ami,
End If lTa1pp
Zw
tP}Xhn`
R(M}0JRm
8ku?
W
ClearDomain Hnfvo*6d.e
pY^pTWs(
1U717u
kVV\*"9y
If Me.chkLIST.Value Then ggerh#
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式"
J|n(dVen/
R'S c
ConvertListToOrdinary Jy]FrSm^
End If
$cRcap
<'r0r/0g?
[NQmL=l
Dim pType As String, trimpTEXT As String GLo\q
:5A
If Me.chkNum.Value = True Then NY4!TOp
Me.txtStatus.Text = "转换全角数字形式为半角" ;): 8yBMk
ConvertWidth "1", "1" 4fu'QZ(}
DoEvents lr9=OlH
ConvertWidth "2", "2" Ty`-r5
DoEvents z[WC7hvU
ConvertWidth "3", "3" DBQOxryP>o
DoEvents "sFW~Y
ConvertWidth "4", "4" 8# 6\+R
DoEvents oUl=l}qnD
ConvertWidth "5", "5" L@7Qs6G2u
DoEvents .i
MnWW
ConvertWidth "6", "6" ]WTf< W<
DoEvents _L$)2sl1R
ConvertWidth "7", "7" Bj;\mUsk
DoEvents x7vq?fP0n
ConvertWidth "8", "8" Vh 2Bz
DoEvents Lf5%M|o.)
ConvertWidth "9", "9" "n
VK< V d
DoEvents 1Z\(:ab13
ConvertWidth "0", "0" \9046An
DoEvents +n@f'a">
ConvertWidth "a", "a" }BA9Ka#%
DoEvents x^z
dTMNhw
ConvertWidth "b", "b" Z1VC5*K
DoEvents CkRyzF
ConvertWidth "c", "c" IO}+[%ptc*
DoEvents %GM>u2baw
ConvertWidth "d", "d" gsnP!2cR
DoEvents n"(7dl?
ConvertWidth "e", "e" /m97CC#+
DoEvents +2-
qlU
ConvertWidth "f", "f" ZrFr`L5F;
DoEvents o^6jyb!j
ConvertWidth "g", "g" y:qx5Mi
DoEvents *y)4D[
z-
ConvertWidth "h", "h" 3Z_t%J5QZ$
DoEvents %p<$|'
ConvertWidth "i", "i" #.~ga7Q
DoEvents d/l,C4p
ConvertWidth "j", "j" (F/HU"C
DoEvents L30>|g
ConvertWidth "k", "k" uQ{=o]sy
DoEvents :lgHL3yl
ConvertWidth "l", "l" 0LS-i% 0
DoEvents aL88E
ConvertWidth "m", "m" $kD
7y5
DoEvents %,33gZzf
ConvertWidth "n", "n" f_oq1 W)9
ConvertWidth "o", "o" ]PeLcB
ConvertWidth "p", "p" S
<2}8D
ConvertWidth "q", "q" )\8URc|J
ConvertWidth "r", "r" uK"^*NEC';
ConvertWidth "s", "s" qpoquWZ
ConvertWidth "t", "t" 66/Z\H^d
ConvertWidth "u", "u" Hr(6TLNw
ConvertWidth "v", "v" I|H,)!Z
ConvertWidth "w", "w" DP|TIt ,Rl
ConvertWidth "x", "x" DYc.to-
ConvertWidth "y", "y" $2Ka u 1
ConvertWidth "z", "z" I%SuT7"Do
ConvertWidth "A", "A" 4S'[\ZJO
ConvertWidth "B", "B" PoJmW^:}
ConvertWidth "C", "C" ojX%RU
ConvertWidth "D", "D" U?^OD
ConvertWidth "E", "E" Nfr:`$k
ConvertWidth "F", "F" ;?0_Q3IML
ConvertWidth "G", "G" -&@]M>r@
ConvertWidth "H", "H" Q6u{@$(/N
ConvertWidth "I", "I" :qBGe1Sv(
ConvertWidth "J", "J" p`\3if'
ConvertWidth "K", "K" D)y{{g*Lnm
ConvertWidth "L", "L" 9H>BWjS
ConvertWidth "M", "M" ^)|&|
ConvertWidth "N", "N" [w,(EE
ConvertWidth "O", "O" ?2/uSG|
ConvertWidth "P", "P" FH4u$g+
ConvertWidth "Q", "Q" p=2zS.
ConvertWidth "R", "R" <} &7 a s
ConvertWidth "S", "S"
{nTG~d
ConvertWidth "T", "T" Dh2#$[/@1
ConvertWidth "U", "U" S
c$gnUYD{
ConvertWidth "V", "V" wjL
|Z8
ConvertWidth "W", "W" DUqJ y*F(
ConvertWidth "X", "X" xsYE=^uv
ConvertWidth "Y", "Y" 4 ^4d9?c
ConvertWidth "Z", "Z" j+
$M?Z^
ConvertWidth "^l", "^p" 7LG+$LEz
ConvertWidth "(", "(" IeZ&7u
ConvertWidth ")", ")" b9`i Z
oL#xDG
End If ~
W@X-
hBjVe?{
With ActiveDocument Gv;
;!sZ
Dim tbl As Table p
7s@%scp
For Each tbl In .Tables vT%qILTrQf
tbl.Rows.Alignment = wdAlignRowCenter Bw6 L;Vu
tbl.Range.Font.NameFarEast = "楷体" )Ea8{m!
tbl.Range.Font.NameAscii = "Times New Roman" ~eHRlXL'
tbl.Range.Font.Size = 10.5 y">fN0{<
Next J6DnPaw-G
Set tbl = Nothing yE}BfU { .
End With FtN}]@F
I
|Z/`9T
:"V ujvFX
With ActiveDocument 10?qjjb&
^,+nef?=
For i = 1 To .TablesOfContents.Count XjxPIdX_H
.TablesOfContents(i).Delete mqdOu{kQ
Next ^/k,
n"iNKR>nW
$.wA?`1aSk
,6DD=w 0r
paraTotal = .Paragraphs.Count Mxo6fn6-46
paraCounter = 1 !Ri
r&gF
/oFc03d
LastTitle0No = 0 *
flW L
LastTitle1No = 0 R0vww_fz
LastTitle2No = 0 `v~!H\q
LastTitle3No = 0 B=r0?%DX"1
LastTitle4No = 0 m*`cuSU|o
LastTableNo = 0 cI3 y
LastFigureNo = 0 lw s(
/a*c
i =-8@
Dim Sec As Long ~> PgJ^G
!Qcir&]C>
Sec = InputBox("正文从第一节开始?", "节设置", 6) R+d<
fe
If Sec = 0 Then YwGHG{?e
Exit Sub te)n{K",
End If mGO>""<:
aV<^IxE;
k = 0 \04mLIJr9
Do While (paraCounter < paraTotal) And bContinue
fSjs?zd`
k = k + 1 T(JuL<PB
If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then 6%E~p0)i%
Exit Do <FQFv
IKg
End If j AQU~Ol_
paraCounter = paraCounter + 1 _PV*lK=
If k Mod 20 = 0 Then "?P[9x}
Me.lbCounter.Caption = paraCounter 9^au$KoU
DoEvents vnTq6:f#M
End If G,=F<TnI'
Loop []"=]f{1};
Q70bEHLA
e{0L%%2K
Do While (paraCounter < paraTotal) And bContinue f|#8qiUS
Z^*NnL.'
ParaText = Trim(.Paragraphs(paraCounter).Range.Text) tfA}`*$s
ShapeHeight = 0 Z["BgEJ
ShapeWidth = 0 ./7v",#*.'
yc[(lq.^n
CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth \"'\MA
K^aj@2K{
Select Case ParaType +RS$5NLH
Case "【】表格内容" >ukQ, CE~
.Paragraphs(paraCounter).Style = "QLNU表格内容" 9KyZEH;pY
Case "章" e=7W7^"_
LastTitle0No = LastTitle0No + 1 8 aZ$5^z
'新一章开始,复位其下属标题编号 9_UN.]
LastTitle1No = 0 R]Ek}1~?
LastTitle2No = 0 =-Nsc1&
LastTitle3No = 0 -TTs.O8P|<
LastTitle4No = 0 %l]Rh/VPn?
wd wp9 r
k = Val(ttNo) >fH*XP>(
If k = 0 Then '非数字编号章节 MxTmWsaW
If ttNo <> NoSeries1(LastTitle0No) Then nVXg,Jl
rText = "第" & NoSeries1(LastTitle0No) & ttString ;%WdvnW
Me.ErrMsg.AddItem "章节编号错误:" & ParaText 781]THY=
End If 7TpRCq#
Else ddoFaQ8
If Val(ttNo) <> LastTitle0No Then c" +zgP
rText = "第" & LastTitle0No & ttString O:e#!C8^
Me.ErrMsg.AddItem "章节编号错误:" & ParaText +xZQJeKb
End If O#:&*Mv
w4,]2Ccn.
End If j=9ze op
%
AWT"Y4Ie
'章段落设置 e #M iaX
'字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 6{.J:S9n
.Paragraphs(paraCounter).Style = "QLNU章节" Oc~aW3*A(
.Paragraphs(paraCounter).Range.Select 4sIXO
Selection.EndKey unit:=wdLine (ii(yz|
tc = Replace(rText, vbCr, "") M&f#wQ
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False {fU?idY)c
Case "一级标题" 4-V)_U#8
LastTitle1No = LastTitle1No + 1 HxIoA
'新一级标题开始,复位其下属标题编号 `|EH[W&y
LastTitle2No = 0 t8/%Dgu
LastTitle3No = 0 B?3juyB`--
LastTitle4No = 0 krjN7&
~RInN+N#
If ttNo <> NoSeries1(LastTitle1No) Then r|fO7PD
rText = NoSeries1(LastTitle1No) & "、" & ttString SO3cY#i
z"
Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText VoM6
End If ('4wXD]C
_B[WY
! Mo`^t
'一级标题段落设置 格式:一、标题内容 MwAJ(
.Paragraphs(paraCounter).Range.Text = rText !y. $J<
.Paragraphs(paraCounter).Style = "QLNU一级标题" |` "?
.Paragraphs(paraCounter).Range.Select Y\(;!o0a
Selection.EndKey unit:=wdLine aMJ;bQD
tc = Replace(rText, vbCr, "") \ha-"Aqze3
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False $P n
LG]X
Case "二级标题" h/K@IAd
LastTitle2No = LastTitle2No + 1 W5Zqgsy($F
'新二级标题开始,复位其下属标题编号 }Eh*xOta
LastTitle3No = 0 C
) ?uE'
LastTitle4No = 0 Kam]Mn'
#wjH4DT
If ttNo <> NoSeries1(LastTitle2No) Then c`jDW S
rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString ^N- 'xy
ErrMsg.AddItem "二级标题编号错误:" & ParaText =cn~BnowY
End If YB5dnS"n
7"cv|6y|
'二级标题段落设置 格式:(一)、标题内容 0x ~`5h
.Paragraphs(paraCounter).Range.Text = rText 3D_"yZ
.Paragraphs(paraCounter).Style = "QLNU二级标题" f4"4Z
V
cr
ah+j!e
.Paragraphs(paraCounter).Range.Select
:gf;}
Selection.EndKey unit:=wdLine 6t7fa<
tc = Replace(rText, vbCr, "") 2h q>T
&8
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False XYAm
J
b\giJ1NJB
Case "三级标题" "Pj}E=!k
LastTitle3No = LastTitle3No + 1 0
iRR{a<
'新三级标题开始,复位其下属标题编号 /M@PO"
LastTitle4No = 0 YeyGN
<
lj\#'G3
If Val(ttNo) <> LastTitle3No Then V!&P(YO:
rText = LastTitle3No & ". " & ttString L/i(KF{
Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText >1ZJ{se
eFFc 9'o
End If D:JS)+]
'三级标题段落设置 格式:1. 标题内容 sS9%3i/>
.Paragraphs(paraCounter).Range.Text = rText r~>,$[|n})
.Paragraphs(paraCounter).Style = "QLNU三级标题" wf9z"B
.Paragraphs(paraCounter).Range.Select wkBL=a
Selection.EndKey unit:=wdLine $r79n-
tc = Replace(rText, vbCr, "") sV2iITFp
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False ?WHy0x20
Case "四级标题" K5`Rk"s
LastTitle4No = LastTitle4No + 1 FN?3XNp.
<2<87PU
If Val(ttNo) <> LastTitle4No Then OipqoI2
rText = "(" & LastTitle4No & "). " & ttString QVtM.oi!Q
ErrMsg.AddItem "四级标题编号错误:" & ParaText e&1\'Zq?>
URw5U1
End If AVFjBybu9
'四级标题段落设置 格式:(1). 标题内容 BJ5}GX!
.Paragraphs(paraCounter).Range.Text = rText af'@h:
.Paragraphs(paraCounter).Style = "QLNU四级标题" w4%AJmt
.Paragraphs(paraCounter).Range.Select m@\ZHbq
Selection.EndKey unit:=wdLine <
kP+eD
tc = Replace(rText, vbCr, "") W&C-/O,m
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False CW`!}yu%
-5k2j^r;
Case "表格标题" iM5vrz`n
LastTableNo = LastTableNo + 1 `@XehSQ
c!wtf,F
If ttNo <> CStr(LastTableNo) Then .'d2J> ~N
rText = "表" & LastTableNo & ". " & ttString O+"ac /r
ErrMsg.AddItem "表格编号错误:" & ParaText .Dw,"VHP
}ZzLs/v%X
End If K)N 0,Qwu
x_!ZycEa
'表格名称段落设置 格式:表1. 表格名称 ]db@RbaH
.Paragraphs(paraCounter).Style = "QLNU表格标题" PJ
q yvbD
xe = Replace(rText, vbCr, "") Lh ap4:
.Paragraphs(paraCounter).Range.Select o@k84+tn(
Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。 ^E,1V5
Selection.Range.Text = xe R#eg^7HfX
Selection.EndKey 0m)&YFZ[(
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False Phs-(3
1*UNsEr
Case "表格首行" AIZBo@xg
.Paragraphs(paraCounter).Style = "QLNU表格首行" :2y"3azxk
Case "图片标题" &tE.6^F
LastFigureNo = LastFigureNo + 1 op @iGC+
zwr\:Hu4
If ttNo <> CStr(LastFigureNo) Then
6+`tn
rText = "图" & LastFigureNo & ". " & ttString ,}J_:\j
ErrMsg.AddItem "表格编号错误:" & ParaText +iA=y=;blH
n7l%gA*
End If e:-8k_0|
'图片名称段落设置 格式:图1. 图名称 aE/D*.0NI
.Paragraphs(paraCounter).Range.Text = rText e;ty !)]
.Paragraphs(paraCounter).Style = "QLNU图片标题" 8l>CR#%@C
.Paragraphs(paraCounter).Range.Select cdTsRS;E
Selection.EndKey unit:=wdLine
4["&O=:d
xe = Replace(rText, vbCr, "") s'u(B]E
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False Vmi{X b]<
Case "正文" p]ivf
'正文名称段落设置 X?o(
b/F-
.Paragraphs(paraCounter).Style = "QLNU正文" ln<]-)&C
Case "文献条目" !'0S0a8
With .Paragraphs(paraCounter) z$[C#5+2
'.Range.Select s>%Pd7:
'Selection.ClearFormatting Bs!4H2@{(]
'.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” TH?9< C-C
.Style = "QLNU参考文献" Uyx&E?SlEq
End With r;gP}H ?
Case "图表注解" = yXs?y"
With .Paragraphs(paraCounter) '
\~^TFi
.Range.Font.NameFarEast = "楷体" -F1-
e+=
.Range.Font.NameAscii = "Times New Roman" YnTB&GPxl
.Range.Font.Size = 9 '小5号字 Zyy
e%Ly
#YK5WTn5
.Alignment = wdAlignParagraphCenter {{!Y]\2S
.LeftIndent = 0 ~?U*6P)o
.RightIndent = 0 )/|6'L-2
.FirstLineIndent = 0 kWW w<c
A
.LineSpacing = 12 SEd5)0X^
.LineSpacingRule = wdLineSpaceExactly `xz&Scil
.LineUnitAfter = 0 6`\ya@
.LineUnitBefore = 0 L*JPe"N-e
.OutlineLevel = wdOutlineLevelBodyText 2]WE({P
.PageBreakBefore = False xf,5R9g/
.RightIndent = 0 uf' 4'
.WordWrap = True + WDq=S
.LineUnitAfter = 0.5 G>z,#Xt
.p&Yr%
~
End With 0Kv
Vw rWJ
Case Else .}`hCt08
'不作处理 ]Pc^#=(R0
End Select Qa`hR
:i*JnlvZ
'含有inlineshape的段落处理 IL!=mZ>2O
If ShapeHeight > 30 Then tIuoD+A
W
.Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距 `<fh+*
End If t"AzI8O
sl|_=oXT
If (ShapeWidth + ShapeHeight) > 150 Then
HeA{3s
.Paragraphs(paraCounter).Style = "QLNU图片段落" ycr"Y|
End If glUo7^ay7
PQ U]l"A
'段落计数器递 Q-eCHr)
paraCounter = paraCounter + 1 ux-CpI
Me.lbCounter.Caption = "当前检测段落:" & paraCounter !;
v~^#M]~
Me.txtStatus.Text = ParaText cAuY4RV
DoEvents B'weok
Loop x\@*60o
End With !GK$[9
tE"Si<[]H$
msg = "" L,]=vba'$
p{Sh F.
For i = 0 To Me.ErrMsg.ListCount - 1 ]v 29 Rx
msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) f CcD&<%
Next K : LL_,
K_/B?h
~;#MpG;e
6}dR$*=
Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg Is.WZYa
Me.cmdCheck.Enabled = True Es'Um,ku
Me.txtStatus.Visible = True P?ep]
Me.lbParaType.Visible = False %NARyz
'0t-]NAc
bContinue = False C)RBkcb
End Sub z/]q)`G
,/,9j{|"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) pa<qZZ
Dim pTEXT As String mpay^.(%
O'DW5hBL0
pTEXT = ChKRange.Text 9#/(N#>
#exss=as/
ParaType = "其它" 7;}l\VXHm
TitleString = pTEXT H+C6[W=
TitleNo = "N/A" 9NpD!A&64<
7^:4A'
shpCounter = ChKRange.InlineShapes.Count \%A%s*1
If shpCounter <> 0 Then m7qqY
MaxShpHeight = 0: TotalShpWidth = 0 Tpr tE.mP
For i = 1 To shpCounter V H^AcO
k = ChKRange.InlineShapes(i).Height lmCZ8 j(FF
l = ChKRange.InlineShapes(i).Width $2#7D*
Rx
If k > MaxShpHeight Then ktH8as^54!
MaxShpHeight = k C+V*
Fh3
End If SUtf[6
TotalShpWidth = TotalShpWidth + l M>H=z#C>/A
Next `\Unpp\I
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then E~hzh /,34
Exit Sub [_6 &N.
End If 53OJ-m%a
End If Mi7y&~,
}_OM$nzj
'空行 pchBvly+0
If Len(pTEXT) <= 2 Then #-#NqX:
Exit Sub 1|Q
vN1?
End If =XY]x
.ln8|;%
GdmmrfXB
'是否为表格中的文字 &h~aChJ
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then k(s;,B\
ParaType = "表格内容" CAc
%f9!3
k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) 3OqX/z,
If k = 1 Then j 6)Y
ParaType = "表格首行" |M~ON=
End If !~iGu\y
Exit Sub O&Z'r
End If yy2I2Bv
xytr2V ]aV
'例外情况:脚注 "$^0%-
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then =y]$0nh
ParaType = "脚注" Ug"rJMZG
Exit Sub ?.bnIwQe
End If z; }6f
g!J0L7i|
'例外情况:尾注 C;rG]t^%
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then n(;:*<Rh
ParaType = "尾注" @R2at
Exit Sub
_^t-9
End If -uR72f
y2yKm1<Ru<
If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then GA3sRFZdQ
ParaType = "页眉页脚" xFFr
Exit Sub F}
DUEDND*
End If )Hw:E71h2
TH1B#Y#<J
6[dur'x
With regEX 7"v$- W y
.Global = True GG6%bF
u5E]t9~Pq
.Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" mDMt5(.
If regEX.Test(pTEXT) Then kODK@w
V-
ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3") j|(Z#3J
TitleString = regEX.Replace(pTEXT, "$3") g /+oZU
TitleNo = regEX.Replace(pTEXT, "$1") w
YNloU
ParaType = "章" ;?L\Fz(<
Exit Sub 'c`
jyn
End If h
y-cG%f
(Xxn\*S
.Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" LXfCmc9|Z
If regEX.Test(pTEXT) Then
1yqoA*
ParaType = "一级标题" {
1lO
regEX.Execute (pTEXT) K%g;NW
ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") /CX VLl8~
TitleString = regEX.Replace(pTEXT, "$3") -8Ti*:
TitleNo = regEX.Replace(pTEXT, "$1") )mN9(Ob!
Exit Sub `$RA< 3
End If +|RB0}hFS-
DPDe>3Mi[
'全角或半角括号中的数字 /!&R9!6
:
.Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" \NL+}cL/
If regEX.Test(pTEXT) Then .0y%5wz8j
ParaType = "二级标题" WQePSU
regEX.Execute (pTEXT) 3smM,fi
ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") P\R27Jd
TitleString = regEX.Replace(pTEXT, "$5") 9@VO+E$7L
TitleNo = regEX.Replace(pTEXT, "$2") i6PM<X,{;
Exit Sub fP-|+
TyO
End If N
X6nQ
6LUC!Sh
'阿拉伯数字 1. 2. 8HErE<_(
.Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" d]v+mVAyE
If regEX.Test(pTEXT) Then ^>$P)=O:v
ParaType = "三级标题" r0dDHj
~F
regEX.Execute (pTEXT) I=Zx"'Um
ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 <,%:
TitleString = regEX.Replace(pTEXT, "$3") M:SO2Czz
TitleNo = regEX.Replace(pTEXT, "$1") ?pGkk=,KB
Exit Sub VM=+afY5M
End If &*,:1=p
#;tT8[Ewuw
'全角或半角括号中的阿拉伯数字 o4^Fo
p
.Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" e 9$C#D>D
If regEX.Test(pTEXT) Then z4U9n'{
ParaType = "四级标题" x^= M6;:
regEX.Execute (pTEXT) OEgI_=B
ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") M#jN-ix
TitleString = regEX.Replace(pTEXT, "$5") Ukphd$3J=
TitleNo = regEX.Replace(pTEXT, "$2") m~l
F`?
Exit Sub %Kb9tHg
End If pxINw>
\Qv
df*w>xS
'表格名称 v:_B kHN'
.Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" &XLD S=j
If regEX.Test(pTEXT) Then f"5g>[1
ParaType = "表格标题" pd@; b5T
regEX.Execute (pTEXT)
wsfd8T4
ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) JWO=!^
TitleString = Trim(regEX.Replace(pTEXT, "$3")) 4&^9Wklj
TitleNo = Trim(regEX.Replace(pTEXT, "$1")) |QZ58)>
strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换 ]o/|na*
Exit Sub p9ZXbAJ{
End If [IBQvL
o>D
'图片名称 !fkep=
.Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" =!MY4&YX
If regEX.Test(pTEXT) Then
\' li
ParaType = "图片标题"
:Ao!ls'=
regEX.Execute (pTEXT) !
T9]/H?
ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3") Wsj=!Obc
TitleString = regEX.Replace(pTEXT, "$3") l5t2\Fl
TitleNo = regEX.Replace(pTEXT, "$1") -p,x&h,p
Exit Sub $ChK]v
6C
End If T=Z.U$
v"DL'@$Ut{
'参考文献 qCMl!g'
.Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})" '[数字]、 _GtBP'iN
If regEX.Test(pTEXT) Then b`mj_b
ParaType = "文献条目" vwGeD|Fb5
'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4") 9ptFG]lZ
'TitleNo = regEX.Replace(pTEXT, "[$2] ") *wbZ;rfF
Exit Sub hP@(6X,"
End If A7XnHPIw
D^F{uDlb
prfx = Left(pTEXT, 2) b3$k9dmxV+
If prfx = "注:" Or prfx = "注:" Then u=+q$Q]
ParaType = "图表注解" \k8rxW
Exit Sub /\d$/~BFi
End If =([av7
^U7OMl4Usq
Y}R}-+bD/
ParaType = "正文" dfj\RIV8
B0UJq./`
End With ;&;W
T
End Sub gQWd&)'muf
76fIC
Sub ConvertListToOrdinary() 2(YPz|~W
Dim st As Paragraph 6vzk\n
With ActiveDocument JcO08n
For i = .Paragraphs.Count To 1 Step -1 !$qKb_#nC
Set st = .Paragraphs(i) HRa@
lst = st.Range.ListFormat.ListString wFn[9_`*
If lst <> "" Then ]rBM5~
st.Range.ListFormat.RemoveNumbers &lc8G
st.Range.InsertBefore lst & " " &