Dim bContinue As Boolean
Lv5AtZl}
MQ,2v.
vZ. Dim regEX As New RegExp
Vj:PNt[ Dim paraCounter As Long '全局段落计数,仅在主程序中可读写,其它过程函数应为只读
6: M ZERd#7@m+ Dim LastTitle0String As String, LastTitle0No As Long
c''!&;[! Dim LastTitle1String As String, LastTitle1No As Long
Rn TPU` Dim LastTitle2String As String, LastTitle2No As Long
E*'O)) Dim LastTitle3String As String, LastTitle3No As Long
J}.p6E~j Dim LastTitle4String As String, LastTitle4No As Long
BS{">lPmx Dim LastTitle5String As String, LastTitle5No As Long
Z2LG/R Dim LastTabelString As String, LastTableNo As Long
Nls|R Dim LastFigureString As String, LastFigureNo As Long
&0o&!P8CB r2hm`]\8M Dim strSeperator As String
!}vz_6) "oTwMU Sub ConvertWidth(fTEXT As String, rText As String)
,
*bxNs'/ Selection.Find.ClearFormatting
T*H4kM Selection.Find.Replacement.ClearFormatting
D)!k Selection.Find.Wrap = wdFindContinue
f< '~K Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText
(d~'H{q DoEvents
2xjS;lpw Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True
V8N<%/A= End Sub
z#-&M J G
N{.R7 Sub ClearDomain()
ao,LP,_ With Selection.Find
^y h .ClearFormatting
zPVA6~|l .Replacement.ClearFormatting
B)c.`cfr*\ .Wrap = wdFindContinue
}SOj3.9{c Me.txtStatus.Text = "清除所有域代码"
VX- f~ DoEvents
2[:`w),. .Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False
3Zbvf^ End With
#ob">R End Sub
$B
(B .lE"N1 Private Sub cmdCheck_Click()
U 26I
z bContinue = True
AU7c =
H:? Dim NoSeries1(1 To 16) As String
XFX:)l#o Dim NoSeries2(1 To 16) As String
HAU8H'h Dim NoSeries5(1 To 16) As String
7%F9.h Dim NoSeriesRM(1 To 16) As String
fNlU
c Dim paraTotal As Long, ParaText As String
4e5Ka{# < Dim ttString As String, ttNo As String
u4Xrvfb, 6DExsB~@ Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long
-MU^%t;- 9> (8r+ Me.txtStatus.Visible = True
TRQva8d? Me.lbParaType.Visible = True
gmM79^CEF Me.cmdCheck.Enabled = False
",K6zALJ @ojn<7W !G 8SEWP w.V8-9
{ ME7JU|@Z Dim ParaType As String, rText As String
?^6RFbke+ E]e6a^J# Selection.WholeStory
'7xY,IY Selection.NoProofing = True
V 1Fdt+# \dCdyl6V tm1 = Now
7zNyH(. )>?K:y8I~ ActiveWindow.View.Type = wdNormalView
+^%F8GB <2R=!n@b\ NoSeries1(1) = "一"
_-h3>.;h9 NoSeries1(2) = "二"
UV:_5"- NoSeries1(3) = "三"
?Jx8z`( NoSeries1(4) = "四"
KQ 2]VN"?_ NoSeries1(5) = "五"
(yZ^Y'0 NoSeries1(6) = "六"
gFW1Nm_DJ NoSeries1(7) = "七"
Ml)WY#7
NoSeries1(8) = "八"
Ig=4Z*au!g NoSeries1(9) = "九"
0ogTQ`2Z: NoSeries1(10) = "十"
"%sW/ph NoSeries1(11) = "十一"
gfp#G,/B NoSeries1(12) = "十二"
#2`tsZ]=I NoSeries1(13) = "十三"
0/*z]2 NoSeries1(14) = "十四"
LUCpZ3F1 NoSeries1(15) = "十五"
0phGn+"R NoSeries1(16) = "十六"
muY4:F.C( 19lx;^b NoSeries2(1) = "㈠"
A\?O5#m:$ NoSeries2(2) = "㈡"
=?/J.[)<* NoSeries2(3) = "㈢"
K~Xt` NoSeries2(4) = "㈣"
3c
^_IuW- NoSeries2(5) = "㈤"
"q%Q[^b NoSeries2(6) = "㈥"
l~\'Z2op NoSeries2(7) = "㈦"
g{nu3F}8){ NoSeries2(8) = "㈧"
`zTVup& NoSeries2(9) = "㈨"
}$OQw'L[ NoSeries2(10) = "㈩"
le1'r>E$ w1.KRe{M NoSeries5(1) = "①"
_E
?(cWC NoSeries5(1) = "②"
gsZCWT NoSeries5(3) = "③"
|D<~a(0 NoSeries5(4) = "④"
Nc]]e+N#V NoSeries5(5) = "⑤"
JNsK NoSeries5(6) = "⑥"
'\\J95*`
NoSeries5(7) = "⑦"
ZOU$do>
O NoSeries5(8) = "⑧"
T}g;kppC NoSeries5(9) = "⑨"
g#H#i~E^
NoSeries5(10) = "⑩"
Y pp>7J/ BG=h1ybz j:fL_1m NoSeriesRM(1) = "I"
0/),ylCj NoSeriesRM(2) = "II"
V-)q&cbW]q NoSeriesRM(3) = "III"
g Ts5xDvJ NoSeriesRM(4) = "IV"
f^',J@9@ NoSeriesRM(5) = "V"
d F), NoSeriesRM(6) = "VI"
Dzp9BRS
2f NoSeriesRM(7) = "VII"
"Z,'NL>& NoSeriesRM(8) = "VIII"
?6a:!^eL NoSeriesRM(9) = "IX"
8_:jPd!3 NoSeriesRM(10) = "X"
sKNN ahGjh NoSeriesRM(11) = "XI"
2avSsN{^ NoSeriesRM(12) = "XII"
A}W&=m8! NoSeriesRM(13) = "XIII"
#2n>J'} NoSeriesRM(14) = "XIV"
;Cv x48 NoSeriesRM(15) = "XV"
7gvkd+-* NoSeriesRM(16) = "XVI"
xr o fUE jl i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo)
UW40Y3W0 F|Ou5WD If i = vbNo Then
I*'QD)
Exit Sub
fv}h;?C End If
(m@({ j'v2m 6/ If Me.chkSuper.Value Then
SB]|y-su Me.txtStatus.Text = "检查修改所有的上标格式"
E5Z,4B A]W`r} CheckSuperScript
eH75:` Pxl7zz&pl= End If
I]zCsT. !K3
#4 If Me.chkStyle.Value Then
0Y[mh@( Me.txtStatus.Text = "设置样式,请稍候...."
QQ pe.oF DoEvents
( vgoG5 CeateOrModifyStyle
8Kv=Zp,?` End If
TqzkF7;k4 z}kD:A)a 9.>v
;:vL <@JK;qm>S ClearDomain
(L
q^C= e)GFJ3sW_ tEZ@v(D [NyR$yD{ If Me.chkLIST.Value Then
#knpZ'
Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式"
$+
lc;N ?7(`2=J ConvertListToOrdinary
R ]HHbD&; End If
A LKU |wWBV{^ _g
3hXsA Dim pType As String, trimpTEXT As String
yn`H }@`k If Me.chkNum.Value = True Then
zQ5'q Me.txtStatus.Text = "转换全角数字形式为半角"
bluhiiATd ConvertWidth "1", "1"
BQ &|=a6 DoEvents
ECQ>VeP ConvertWidth "2", "2"
cO_En`F DoEvents
#
bP1rQ0 ConvertWidth "3", "3"
3~"G27, DoEvents
)ASI4
1 ConvertWidth "4", "4"
/ bfLox DoEvents
YJF!_
kg. ConvertWidth "5", "5"
h=?#D0 DoEvents
qm]k
(/w ConvertWidth "6", "6"
:+Y+5:U] DoEvents
>e'6RZRLA ConvertWidth "7", "7"
2Fp.m}42i( DoEvents
]B\
H ConvertWidth "8", "8"
Nx,.4CI
DoEvents
qMKXS,s ConvertWidth "9", "9"
n:' Mpux DoEvents
*7`;{O ConvertWidth "0", "0"
1Hk`i%
DoEvents
j<e`8ex? ConvertWidth "a", "a"
_6xC4@~h* DoEvents
v2/@Pu!kg ConvertWidth "b", "b"
yB,$4:C DoEvents
qfx= ConvertWidth "c", "c"
#jbo!
wdg DoEvents
6[w_/X" ConvertWidth "d", "d"
]qvrpI!E! DoEvents
R$_#7>3 ConvertWidth "e", "e"
t4~Bn<= DoEvents
9qIjs$g ConvertWidth "f", "f"
1s/t}J~zZ DoEvents
-n+=[M ConvertWidth "g", "g"
):kDWc DoEvents
SfEgmp-m ConvertWidth "h", "h"
~X)Aw3}F DoEvents
@tR:}J*9s ConvertWidth "i", "i"
Xw_AZ-|1D DoEvents
|*K AqTO0 ConvertWidth "j", "j"
~#pQWa5 DoEvents
EcU}ErN
ConvertWidth "k", "k"
bw&8"k>D? DoEvents
r3{Cu z ConvertWidth "l", "l"
[y&yy|*\ DoEvents
Q6]SsV?x ConvertWidth "m", "m"
jgK8} C DoEvents
#J#x,BLI ConvertWidth "n", "n"
hCuUX)>Bt ConvertWidth "o", "o"
MZl6J ConvertWidth "p", "p"
M e_.X_
ConvertWidth "q", "q"
'M VE5 ConvertWidth "r", "r"
1 cvoI ConvertWidth "s", "s"
H0LEK(K ConvertWidth "t", "t"
0z.oPV@ ConvertWidth "u", "u"
.T#h5[S2x ConvertWidth "v", "v"
p gWBW9\ ConvertWidth "w", "w"
criOJ- ConvertWidth "x", "x"
<My4 )3 ConvertWidth "y", "y"
MV'q_{J ConvertWidth "z", "z"
$!H;,Jxv ConvertWidth "A", "A"
R m>AU= ConvertWidth "B", "B"
W;P8=q ConvertWidth "C", "C"
a=]tqV_ ConvertWidth "D", "D"
lhZXq!2p ConvertWidth "E", "E"
.
=yF ConvertWidth "F", "F"
?:H4Xd7 ConvertWidth "G", "G"
7A<X!a ConvertWidth "H", "H"
dtTQY ConvertWidth "I", "I"
W+k SL{0 ConvertWidth "J", "J"
(_Ph{IN ConvertWidth "K", "K"
DQui7dr)l ConvertWidth "L", "L"
}(FF^Mh ConvertWidth "M", "M"
)O;6S$z
9Y ConvertWidth "N", "N"
Na=.LW-ma= ConvertWidth "O", "O"
YHSdaocp ConvertWidth "P", "P"
$3psSQQo ConvertWidth "Q", "Q"
qT5q3 A(8 ConvertWidth "R", "R"
1P;J%.{ ConvertWidth "S", "S"
]
-iMo
4H ConvertWidth "T", "T"
1Tm,#o ConvertWidth "U", "U"
aQzx^%B1 ConvertWidth "V", "V"
FN0)DN2d} ConvertWidth "W", "W"
{DlQTgP ConvertWidth "X", "X"
# 3UrGom ConvertWidth "Y", "Y"
Qu"zzb"k ConvertWidth "Z", "Z"
% 8u97f W ConvertWidth "^l", "^p"
%{Ib ConvertWidth "(", "("
}V
jg>" ConvertWidth ")", ")"
9EHhVi <A@}C+ End If
@komb IK zZR_&z< With ActiveDocument
(JenTL`%u Dim tbl As Table
0 w Q'~8 For Each tbl In .Tables
gc,%A'OR^< tbl.Rows.Alignment = wdAlignRowCenter
76epkiz;= tbl.Range.Font.NameFarEast = "楷体"
Kg?(Ax4 tbl.Range.Font.NameAscii = "Times New Roman"
_Fe%Ek1Yy tbl.Range.Font.Size = 10.5
]"q9 ~ Next
[A\DuJx Set tbl = Nothing
&lM=>? End With
i=3~ h Zl kZ5;Fe\* `-Y8T\ With ActiveDocument
`O
,^oD4 8=TM _ For i = 1 To .TablesOfContents.Count
HD%n'@E .TablesOfContents(i).Delete
AdU0 sZ+&c Next
ZQ1,6<^9i[ W=G8l% f^Io:V\ }jdMo83 paraTotal = .Paragraphs.Count
W?TvdeBx paraCounter = 1
9t8NK{ y$$|_
l@ LastTitle0No = 0
2Sgv LastTitle1No = 0
h8XoF1wuw LastTitle2No = 0
12]rfd LastTitle3No = 0
-8zdkm8k LastTitle4No = 0
= q\TWz LastTableNo = 0
ExKyjWAJ LastFigureNo = 0
:Eb=jWA emT/5'y Dim Sec As Long
Nhf@Y}Cu S/,)X Sec = InputBox("正文从第一节开始?", "节设置", 6)
/M2U7^9``" If Sec = 0 Then
+,c]FAx4 Exit Sub
FHbyL\Q End If
pGRk LS:^K k = 0
yRAfIB$T}" Do While (paraCounter < paraTotal) And bContinue
Wr+/
9 k = k + 1
WQiIS0BJ * If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then
CXiDe)|<E Exit Do
2p %j@O End If
[b :0j
- paraCounter = paraCounter + 1
DMdVE P"m If k Mod 20 = 0 Then
E
%%iVFPX Me.lbCounter.Caption = paraCounter
&TTvX%T DoEvents
mE"(d*fe' End If
.~O-
<P# Loop
4
++
&P9 ^vw[z2" S\M+*:7
Do While (paraCounter < paraTotal) And bContinue
xYp-Y"a. -y|*x-iZ ParaText = Trim(.Paragraphs(paraCounter).Range.Text)
b9R0"w!ml
ShapeHeight = 0
l~Hu#+O ShapeWidth = 0
tqD=)0Uzs j82x$I* CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth
q x5jaa3 e+~@"^| Select Case ParaType
gT_tR_g Case "【】表格内容"
X<sM4dwxE .Paragraphs(paraCounter).Style = "QLNU表格内容"
vJj}$AlI Case "章"
xp*Wf#BF LastTitle0No = LastTitle0No + 1
{[pzqzL6 '新一章开始,复位其下属标题编号
#J'V,_wH LastTitle1No = 0
]!>tP,<`' LastTitle2No = 0
X
l,707 LastTitle3No = 0
kxCN0e#_ LastTitle4No = 0
Nr"gj$v fnJx$PD~ k = Val(ttNo)
H#H[8# If k = 0 Then '非数字编号章节
oL
U !x If ttNo <> NoSeries1(LastTitle0No) Then
tP1znJh>y rText = "第" & NoSeries1(LastTitle0No) & ttString
w,*#z Me.ErrMsg.AddItem "章节编号错误:" & ParaText
:JXGgl<y End If
.^xQtnq Else
l@:&0id4I If Val(ttNo) <> LastTitle0No Then
U!
$/'Xi9 rText = "第" & LastTitle0No & ttString
bn:74,GeyK Me.ErrMsg.AddItem "章节编号错误:" & ParaText
@6kkt~>: End If
Cy\ o{6 5fq4[a End If
uOAd$;h@_Z dvcLZK '章段落设置
XUVBD;"f! '字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅
K%.t%)A_3 .Paragraphs(paraCounter).Style = "QLNU章节"
%bp'`B= .Paragraphs(paraCounter).Range.Select
ujW C!*W(Q Selection.EndKey unit:=wdLine
"_0sW3rG tc = Replace(rText, vbCr, "")
/%F5u}eW Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False
gb=tc` Case "一级标题"
XMF#l]P LastTitle1No = LastTitle1No + 1
:z`L) '新一级标题开始,复位其下属标题编号
!{F\\D/ LastTitle2No = 0
*SYu
q) LastTitle3No = 0
8/@*6J LastTitle4No = 0
vt#&YXu{A 8dh ?JqX
If ttNo <> NoSeries1(LastTitle1No) Then
qN'%q+n rText = NoSeries1(LastTitle1No) & "、" & ttString
=d$m@rc0r Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText
-I:L6ft8 End If
z
s\N)LyM \I
7&F82e 8&:dzS '一级标题段落设置 格式:一、标题内容
79uAsI2-Y .Paragraphs(paraCounter).Range.Text = rText
G;e)K\[J .Paragraphs(paraCounter).Style = "QLNU一级标题"
J ql$
g .Paragraphs(paraCounter).Range.Select
z(#CO<C.t Selection.EndKey unit:=wdLine
bo#?,80L}` tc = Replace(rText, vbCr, "")
qFp]jbU Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 1 ", PreserveFormatting:=False
[5PQrf~Mo Case "二级标题"
h
^Wm03w LastTitle2No = LastTitle2No + 1
/~{fPS '新二级标题开始,复位其下属标题编号
N97WI+` LastTitle3No = 0
(g>&ov(d LastTitle4No = 0
~
Ofn&[G
l'1_Fb If ttNo <> NoSeries1(LastTitle2No) Then
g*WY kv rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString
XzW\p8D^u ErrMsg.AddItem "二级标题编号错误:" & ParaText
]u\-_PP End If
je74As[ $\aJ.N6rb '二级标题段落设置 格式:(一)、标题内容
sWq@E6,I .Paragraphs(paraCounter).Range.Text = rText
UW Px|]RC .Paragraphs(paraCounter).Style = "QLNU二级标题"
x|*m ok 2]5ux!Lqln .Paragraphs(paraCounter).Range.Select
o,qUf Selection.EndKey unit:=wdLine
3
jghV?I{T tc = Replace(rText, vbCr, "")
{>d\ Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 2 ", PreserveFormatting:=False
_=K\E0I.m C;YtMY: Case "三级标题"
bwK1XlfD.s LastTitle3No = LastTitle3No + 1
;73{n*a$ '新三级标题开始,复位其下属标题编号
*iUR1V Y LastTitle4No = 0
]V,#>' v<ati c If Val(ttNo) <> LastTitle3No Then
}-@h H( rText = LastTitle3No & ". " & ttString
l]L"Ex{ Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText
82YZN5S3]3 >&JS-jFg End If
{
3Qlx/6< '三级标题段落设置 格式:1. 标题内容
L4<=,}KS .Paragraphs(paraCounter).Range.Text = rText
@`nU=kY/ .Paragraphs(paraCounter).Style = "QLNU三级标题"
=.IAd<C .Paragraphs(paraCounter).Range.Select
G)gPL]C0 Selection.EndKey unit:=wdLine
K7ZRj\(CJv tc = Replace(rText, vbCr, "")
${tBu#$-d Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 3 ", PreserveFormatting:=False
.X"\ Mg Case "四级标题"
nu X`>Oy LastTitle4No = LastTitle4No + 1
g{Hb3id9 7-}/{o*,5 If Val(ttNo) <> LastTitle4No Then
hM[I}$M&O rText = "(" & LastTitle4No & "). " & ttString
p[%B#(]9, ErrMsg.AddItem "四级标题编号错误:" & ParaText
2U3WH.o C}71SlN'M End If
h`D+NZtWm '四级标题段落设置 格式:(1). 标题内容
QSvgbjdE .Paragraphs(paraCounter).Range.Text = rText
J@IF='{ .Paragraphs(paraCounter).Style = "QLNU四级标题"
A/OGF> .Paragraphs(paraCounter).Range.Select
rW2l+:@c Selection.EndKey unit:=wdLine
Bam 4%G5 tc = Replace(rText, vbCr, "")
lrmz'M' Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC """ & tc & """ \l 4 ", PreserveFormatting:=False
B7n1'? H284
]i Case "表格标题"
'kekJ.wJ; LastTableNo = LastTableNo + 1
qdZo
cTf' FXbalQ?^ If ttNo <> CStr(LastTableNo) Then
U3p Mv|b rText = "表" & LastTableNo & ". " & ttString
: n\D ErrMsg.AddItem "表格编号错误:" & ParaText
r#c+{yY W3xObt3w\ End If
mpzm6Ieu /<\do 1 '表格名称段落设置 格式:表1. 表格名称
5r^u7k .Paragraphs(paraCounter).Style = "QLNU表格标题"
gFxa UrZA xe = Replace(rText, vbCr, "")
mW#p&{ .Paragraphs(paraCounter).Range.Select
Zzv,p Selection.MoveEnd wdCharacter, -1 '选择范围包括行尾的换行符。
uXdR-@80* Selection.Range.Text = xe
:&m0eZZ% Selection.EndKey
QKhvP> Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False
w_#5Na}>d =BBqK=W.d Case "表格首行"
30QQnMH3 .Paragraphs(paraCounter).Style = "QLNU表格首行"
fn.}LeeS> Case "图片标题"
> M4QEv LastFigureNo = LastFigureNo + 1
6~Y`<#X5J (y?`|=G-xT If ttNo <> CStr(LastFigureNo) Then
m</nOf+C rText = "图" & LastFigureNo & ". " & ttString
Y~
Nt9L ErrMsg.AddItem "表格编号错误:" & ParaText
$kh
6-y@ `IK3e9QpcA End If
Ekz)Nh)vGR '图片名称段落设置 格式:图1. 图名称
mk
+BeK .Paragraphs(paraCounter).Range.Text = rText
rlkg.e6 .Paragraphs(paraCounter).Style = "QLNU图片标题"
b$}@0 .Paragraphs(paraCounter).Range.Select
&z"yls Selection.EndKey unit:=wdLine
2w:cdAv$ xe = Replace(rText, vbCr, "")
;CA7\&L> Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE " & """" & xe & """", PreserveFormatting:=False
mg
*kB:p Case "正文"
^S^7u '正文名称段落设置
AeEF/* .Paragraphs(paraCounter).Style = "QLNU正文"
:2MHx}]il Case "文献条目"
\)BDl With .Paragraphs(paraCounter)
W4=<hB '.Range.Select
88+J(^y> 'Selection.ClearFormatting
_UUp+Hz '.Range.Find.Execute findtext:=rText, replacewith:=strSeperator 'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ”
0GnbE2& .Style = "QLNU参考文献"
tH9BC5+r} End With
w]Ci%W( Case "图表注解"
C6c]M@6 With .Paragraphs(paraCounter)
]dHV^! .Range.Font.NameFarEast = "楷体"
UzUt=s!^H .Range.Font.NameAscii = "Times New Roman"
ea!Znld] .Range.Font.Size = 9 '小5号字
#zKF/H|_R ZTP&*+d .Alignment = wdAlignParagraphCenter
*M()z.
N .LeftIndent = 0
-W XZOdUjs .RightIndent = 0
X"
;ly0Mb .FirstLineIndent = 0
@W*Zrc1NF .LineSpacing = 12
T\o!^|8 .LineSpacingRule = wdLineSpaceExactly
qGKQrb,K .LineUnitAfter = 0
GA@Zfcg .LineUnitBefore = 0
<@:LONe< .OutlineLevel = wdOutlineLevelBodyText
/,2${$c! .PageBreakBefore = False
LxxFosi8 .RightIndent = 0
9h
0^_|" .WordWrap = True
}\_[+@*EJ .LineUnitAfter = 0.5
vq*)2. ){XG%n
C End With
0x8aKq\' Case Else
1R"ymWg" '不作处理
9-N*Jhg End Select
|%-:qk4rG dtUt2r)6L; '含有inlineshape的段落处理
@d=4C{g%o If ShapeHeight > 30 Then
OcGHMGdn .Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle '对有图片的段落设置为单倍行距
a
|+q:g0M End If
)qx,>PL r2
o-/$ If (ShapeWidth + ShapeHeight) > 150 Then
7eekTh, ? .Paragraphs(paraCounter).Style = "QLNU图片段落"
lBnG!!VrWa End If
i3 n0W1~ '}T6e1#JV '段落计数器递
`Hq)g1a7q paraCounter = paraCounter + 1
KRh95B GU Me.lbCounter.Caption = "当前检测段落:" & paraCounter
E cW$'>^ Me.txtStatus.Text = ParaText
qddP -uN DoEvents
4).>b3OhX Loop
LVp*YOq7 End With
m8njP-CZ e{33%5 msg = ""
do(komP<\ PEX(*GS For i = 0 To Me.ErrMsg.ListCount - 1
5\$8"/H msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i)
6s|4'! Next
C/x<_VJzN/ }w8:`g'T0/ JOJ?.H&su y~pJ|E Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg
f.&Y_G3a< Me.cmdCheck.Enabled = True
#35@YMF Me.txtStatus.Visible = True
Rw\S-z/ Me.lbParaType.Visible = False
&GH,is CGkCLd*s] bContinue = False
P(&9S` I End Sub
f6Io|CZWJ f,}]h~w\ 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)
-964#>n[ Dim pTEXT As String
fd Rw:K8 e(m#elX pTEXT = ChKRange.Text
F,-S&d h_:|H8t;w ParaType = "其它"
ghd*EXrF
H TitleString = pTEXT
`CQMvX{ TitleNo = "N/A"
V_"K L(i*v5? shpCounter = ChKRange.InlineShapes.Count
l4s_9 If shpCounter <> 0 Then
0qrsf! MaxShpHeight = 0: TotalShpWidth = 0
{Jl W1;Jc7 For i = 1 To shpCounter
fUgI*V k = ChKRange.InlineShapes(i).Height
79 ZBVe(} l = ChKRange.InlineShapes(i).Width
#D&]5"0cX If k > MaxShpHeight Then
'Nbae-pf MaxShpHeight = k
T5+iX`#M End If
1Q ^YaHzuW TotalShpWidth = TotalShpWidth + l
aD:vNX Next
YaDr.?
If MaxShpHeight > 60 Or TotalShpWidth > 150 Then
2v6QUf Exit Sub
(C
EXPf End If
#]!0$z|Z End If
^?)o,djY& &18CCp\3)c '空行
H#B~h
4# If Len(pTEXT) <= 2 Then
r&t)%R@q
Exit Sub
}{Ncww!iN End If
x\Det$3Kx xW;-=Q Q@-7{3 '是否为表格中的文字
F!;0eS"xp If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then
?E?dg#yk ParaType = "表格内容"
n(#159pZ k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber)
v8xNtUxN If k = 1 Then
yprf
`D> ParaType = "表格首行"
/U#{6zeM[, End If
`9
Exit Sub
;h"?h*}m!\ End If
R~],5_
| 6n.W5
1g(s '例外情况:脚注
}#/,nJm' If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then
RrDNEwA
r ParaType = "脚注"
-
zQ Exit Sub
eSgCS*}0$z End If
P]@m0f {IW pI * '例外情况:尾注
0=r.I}x If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then
`% x6;Ha ParaType = "尾注"
'_~=C-g Exit Sub
XHu2G t_ End If
8U07]=B
t< `_6!nkq8 If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then
D$RQD{* ParaType = "页眉页脚"
|*im$[g=- Exit Sub
/M-%]sayj End If
^p0BeSRiy; 4#z@B1Jx !v2D 18( With regEX
TB
gD"i-
.Global = True
yH8
N 8 Dm1;mR S+ .Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$"
~ YKBxt If regEX.Test(pTEXT) Then
DM*mOT ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3")
Jk)^6 TitleString = regEX.Replace(pTEXT, "$3")
pO
n>m1| TitleNo = regEX.Replace(pTEXT, "$1")
1YA_`_@w ParaType = "章"
E:N~c'k Exit Sub
9@-^!DBM End If
tndtwM*B' MT,LO<. .Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$"
r2T-= XWB If regEX.Test(pTEXT) Then
=yfLqU ParaType = "一级标题"
D 5q Cn^R regEX.Execute (pTEXT)
0.+"K} ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3")
s|U?{Byb! TitleString = regEX.Replace(pTEXT, "$3")
wPDA_ns~ TitleNo = regEX.Replace(pTEXT, "$1")
#qk A*WP Exit Sub
|-hzvuSX End If
se9X Z%Nl<i '全角或半角括号中的数字
f.`noZN .Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$"
p*rBT,' If regEX.Test(pTEXT) Then
Syn>;FX ParaType = "二级标题"
:o}Ju}t regEX.Execute (pTEXT)
{@u;F2? ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5")
N.|Zh+! TitleString = regEX.Replace(pTEXT, "$5")
eyZ /%4'q TitleNo = regEX.Replace(pTEXT, "$2")
7B$iM,}.b Exit Sub
<aR8fU End If
vnXa4\Vdy .pgTp X '阿拉伯数字 1. 2.
VN[h0+n4Th .Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$"
4425,AR If regEX.Test(pTEXT) Then
O4kBNUI/ ParaType = "三级标题"
X$zlR)Re regEX.Execute (pTEXT)
&P%3'c}G ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测
Dq!Vo ;s2 TitleString = regEX.Replace(pTEXT, "$3")
bGvALz' TitleNo = regEX.Replace(pTEXT, "$1")
&WIiw$@ Exit Sub
9&=~_,wJd End If
+'H_sMmi{ .,pGW
8Js '全角或半角括号中的阿拉伯数字
5A:mu+Iz6H .Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$"
$-$^r; If regEX.Test(pTEXT) Then
xD;5z`A3 ParaType = "四级标题"
!aD/I%X regEX.Execute (pTEXT)
{|%N ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5")
)z9)oM\ TitleString = regEX.Replace(pTEXT, "$5")
Y?2I
/ TitleNo = regEX.Replace(pTEXT, "$2")
J 21D/#v Exit Sub
|Ebwl] X2 End If
3y%B&W,sm Yw=Ve 0 '表格名称
bmotR8d .Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$"
? Ovl(4VG If regEX.Test(pTEXT) Then
jd$uOn.r ParaType = "表格标题"
CUT D]:\ regEX.Execute (pTEXT)
}!\ZJo a ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3"))
<h2WM (n TitleString = Trim(regEX.Replace(pTEXT, "$3"))
2;G^>BP< TitleNo = Trim(regEX.Replace(pTEXT, "$1"))
:0.Z/s
- strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换
}"<|.[V) Exit Sub
LqTyE End If
31LXzQvFG
q"5iza__H '图片名称
/a%5!)NE% .Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$"
(xJ6: u If regEX.Test(pTEXT) Then
_](vt,|L ParaType = "图片标题"
8kw`=wSH> regEX.Execute (pTEXT)
yVm~5Y&Z ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3")
8oG0tX3i TitleString = regEX.Replace(pTEXT, "$3")
s#ijpc>h TitleNo = regEX.Replace(pTEXT, "$1")
1O1/P,u+ Exit Sub
-DrR6kGjR End If
I_J;/!l= dF*@G/p>V '参考文献
maLKUSgo .Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})" '[数字]、
mu2
r#I If regEX.Test(pTEXT) Then
\iAkF`OC ParaType = "文献条目"
jRS0(8 'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4")
|A0LYKni 'TitleNo = regEX.Replace(pTEXT, "[$2] ")
g*b`V{/V
w Exit Sub
{T
Z7>k End If
nsqs*$ T=}(S4n#BX prfx = Left(pTEXT, 2)
Z&%#,0>] If prfx = "注:" Or prfx = "注:" Then
lvIKL!;H ParaType = "图表注解"
Au$|@ Exit Sub
iIq='xwa9 End If
R74kt36M #CoJ S[t @kUCc1LT ParaType = "正文"
I|JMkP S*6P=O* End With
F_=RY] End Sub
<J@Y=#G$2 \~1M\gZP Sub ConvertListToOrdinary()
_*1/4^ Dim st As Paragraph
ci>+Zi6 With ActiveDocument
q_5k2'4K For i = .Paragraphs.Count To 1 Step -1
7</&=lly Set st = .Paragraphs(i)
D0tmNV@ lst = st.Range.ListFormat.ListString
7_taqcj If lst <> "" Then
]l
zt"[ st.Range.ListFormat.RemoveNumbers
p5c^dC{ st.Range.InsertBefore lst & " "
~]DGf( End If
>v @R]9 Next
jQzq(oDQw
End With
3qPj
+@ Set st = Nothing
S1{UVkr End Sub
DPJ#Y -0 m]BxGwT=m Private Sub UserForm_Activate()
a|`Pg1j# Me.lbTotal.Caption = "当前文章段落总数:" & ActiveDocument.Paragraphs.Count & " 共" & ActiveDocument.Sections.Count & "节"
BEyg63= Me.lbTotal.Font.Bold = True
kJqgY| Me.txtStatus.Visible = False
v`MCV29!} Me.cmdCheck.Enabled = True
^SB?NRk (Bd8@}\u_ End Sub
I0=YIcH5
gmy$_4+6o S,m)yh. Sub CheckSuperScript()
Tm5]M$) Selection.Find.ClearFormatting
yHl1:cf(y Selection.Find.Replacement.ClearFormatting
s<[%76Y! With Selection.Find
k'X
v*U .Text = "[【\[[〖](*)[】\]〗]]"
wp`a:QZ8N .Replacement.Text = "[\1]"
m(E-?VMHo .Replacement.Font.Superscript = True
&,2h=H
,M '.Replacement.Font.Color = wdColorBlue
\5 IB/* .Forward = True
@Hj5ZJ
3 .Wrap = wdFindContinue
<<gk<_7` .FORMAT = True
R+FBCVU&TJ .MatchCase = False
zlZ$t{[, .MatchWholeWord = False
8[U1{s:J .MatchByte = False
Mo|[Muj8b .MatchAllWordForms = False
3'6%P_S .MatchSoundsLike = False
EAU6z(X$ .MatchWildcards = True
cj@Ygc)n End With
.v%H%z~Rl# Selection.Find.Execute Replace:=wdReplaceAll
D)XF@z; End Sub
n1`D:XrE *{8Kb>D Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
k DS bContinue = False
tgH@|Kg Set regEX = Nothing
O emi } End Sub
|GtTz& Qx|m{1~- Sub CeateOrModifyStyle()
~isrE;N1| '
+M! f}=H
'
*z;4.
OX Dim stl As Style
~;k-/Z" F6R+E;"4R' Options.Pagination = False
"tB"C6b 4bqi&h3 On Error Resume Next
R>U0W{1NO For Each stl In ActiveDocument.Styles
9(DS"fgC stl.Delete
j2SJ4tB / Next
I.TdYSB On Error GoTo 0
abkl)X>k K O "U5v Set stl = Nothing
qz"di~ 7 7A?~a_Ep DoEvents
bsy\L|wd On Error Resume Next
5G cdz :zZK%}G< ActiveDocument.Styles.Add Name:="BaseStyle", Type:=wdStyleTypeParagraph
.}S9C]d:a cS/\&%7u ActiveDocument.Styles.Add Name:="QLNU论文题目", Type:=wdStyleTypeParagraph
, j^ /~
ActiveDocument.Styles.Add Name:="QLNU中文摘要", Type:=wdStyleTypeParagraph
%Kx:'m%U @6 uB78U4O ActiveDocument.Styles.Add Name:="QLNU英文标题", Type:=wdStyleTypeParagraph
z=B*s!G ActiveDocument.Styles.Add Name:="QLNU英文摘要", Type:=wdStyleTypeParagraph
YU.aZdA&V3 x?Doe`/6? ActiveDocument.Styles.Add Name:="QLNU目录项", Type:=wdStyleTypeParagraph
fEE[huG ActiveDocument.Styles.Add Name:="QLNU章节标题", Type:=wdStyleTypeParagraph
nIJ2*QJ ActiveDocument.Styles.Add Name:="QLNU一级标题", Type:=wdStyleTypeParagraph
}z1aKa9 ActiveDocument.Styles.Add Name:="QLNU二级标题", Type:=wdStyleTypeParagraph
4%1sOnl ActiveDocument.Styles.Add Name:="QLNU三级标题", Type:=wdStyleTypeParagraph
ik)T>rYg0 ActiveDocument.Styles.Add Name:="QLNU四级标题", Type:=wdStyleTypeParagraph
1X2MhV ActiveDocument.Styles.Add Name:="QLNU正文", Type:=wdStyleTypeParagraph
UVlD]oXKh ?Z=
%I$i ActiveDocument.Styles.Add Name:="QLNU表格标题", Type:=wdStyleTypeParagraph
7N,E%$QL ActiveDocument.Styles.Add Name:="QLNU表格首行", Type:=wdStyleTypeParagraph
w~hO)1c],: ActiveDocument.Styles.Add Name:="QLNU表格内容", Type:=wdStyleTypeParagraph
>&3M
#s(w ActiveDocument.Styles.Add Name:="QLNU图片标题", Type:=wdStyleTypeParagraph
FjqoO. ActiveDocument.Styles.Add Name:="QLNU图片段落", Type:=wdStyleTypeParagraph
"hi?/B#d *n
dXZ64 ActiveDocument.Styles.Add Name:="QLNU参考文献", Type:=wdStyleTypeParagraph
|u8IQR'B On Error GoTo 0
HtB>#`' DoEvents
4Tgy2[D?q Z`<S_PPz 'BaseStyle
_Q,`Qn@|BD ActiveDocument.Styles("BaseStyle").AutomaticallyUpdate = False
{/G~HoY1i With ActiveDocument.Styles("BaseStyle").Font
=#dW^?p .NameFarEast = "宋体"
Fg<$;p .NameAscii = "Times New Roman"
Ecp]fUQK .NameOther = "宋体"
a]-F,M J .Size = 10.5
/"?yB$s .Bold = wdUndefined
rk:^^r>5Qi .Italic = wdUndefined
+<7~yZ[Z8 .Subscript = wdUndefined
~wf&78 .Subscript = wdUndefined
3maiBAOKz &^Q-:Kxs8 .Underline = wdUnderlineNone
.dX ^3 .UnderlineColor = wdColorAutomatic
G#-t&gO3 .StrikeThrough = False
Npq
Mdd .DoubleStrikeThrough = False
5xe}ljo E|Mu1I]e .Outline = False
@igr~hJ .Emboss = False
, f{< .Shadow = False
=B@
+[b0Z .Hidden = False
+X(@o .SmallCaps = False
V/"UDof .AllCaps = False
Z8*E-y0 .Color = wdColorAutomatic
8)HUo?/3 .Engrave = False
~kPHf_B;z .Scaling = 100
4Ra .Kerning = 1
_SdO}AiG .Animation = wdAnimationNone
lYldq)qB{ .DisableCharacterSpaceGrid = False
@dei}!e .EmphasisMark = wdEmphasisMarkNone
pA7& End With
=V~pQbZ With ActiveDocument.Styles("BaseStyle").ParagraphFormat
\=PnC}7I .LeftIndent = 0
|`[0U .RightIndent = 0
D*.U? .SpaceBefore = 0
L!G]i;=: .SpaceBeforeAuto = False
1) 7n
( .SpaceAfter = 0
|8^53*f ? .SpaceAfterAuto = False
n4 A_vz #4UKkd .LineSpacingRule = wdLineSpaceSingle
"IQ' (^-P .Alignment = wdAlignParagraphJustify
:}(Aq;}X f[email protected]. .WidowControl = False
.kKU MyW( .KeepWithNext = False
A)6xEeyR .KeepTogether = False
zA/tHlKc .PageBreakBefore = False
+l'l*< .NoLineNumber = False
:"QR;O@ QS(aA*D .FirstLineIndent = CentimetersToPoints(0)
MYNNeO .OutlineLevel = wdOutlineLevelBodyText
%f3qCN .CharacterUnitLeftIndent = 0
Q(v*I&k .CharacterUnitRightIndent = 0
%
L(;}sJ. .CharacterUnitFirstLineIndent = 0
C#<b7iMg .LineUnitBefore = 0
'w//d
$+G_ .LineUnitAfter = 0
"LZQ1P*ef$ .AutoAdjustRightIndent = True
WOBLgM,| .DisableLineHeightGrid = True
ZNWo:N8; fNR2(8;} .FarEastLineBreakControl = True
%S*<2F9
.WordWrap = True
@GTkS!86 .Hyphenation = False
w]<V~X b7-M'-Km0_ .HangingPunctuation = True
{jdtNtw .HalfWidthPunctuationOnTopOfLine = True
xE>H:YPm .AddSpaceBetweenFarEastAndAlpha = True
[0vgA#6I .AddSpaceBetweenFarEastAndDigit = True
IBfLb(I .BaseLineAlignment = wdBaselineAlignBaseline
*UL++/f End With
8i$quHd&x ActiveDocument.Styles("BaseStyle").NoSpaceBetweenParagraphsOfSameStyle = False
*i LlBE ActiveDocument.Styles("BaseStyle").ParagraphFormat.TabStops.ClearAll
J:W|2U=" ActiveDocument.Styles("BaseStyle").LanguageID = wdSimplifiedChinese
9O(vh(C ActiveDocument.Styles("BaseStyle").NoProofing = False
V+`gkWe/ K9-;-{qb '一级标题题样式
lGoP(ki ActiveDocument.Styles("QLNU一级标题").BaseStyle = ActiveDocument.Styles("BaseStyle")
-_@zyF<G ActiveDocument.Styles("QLNU一级标题").NextParagraphStyle = "BaseStyle"
o>4mkh[3 ActiveDocument.Styles("QLNU一级标题").AutomaticallyUpdate = False
xib?XzxGo With ActiveDocument.Styles("QLNU一级标题").Font
s'$5]9$S .NameFarEast = "黑体"
<46>v< .NameAscii = "Arial Black"
:c75*h` .NameOther = "黑体"
0PdeK'7 .Name = "黑体"
aE aU_f/ .Size = 16 '三号
U)CGRh8%+ .Bold = True
vVvx g0 .Italic = wdUndefined
}-` N^ .Subscript = wdUndefined
G-7!|& .Superscript = wdUndefined
YkWv*l End With
Qc4r?7S< With ActiveDocument.Styles("QLNU一级标题").ParagraphFormat
\e)>]C}h
;IV .LeftIndent = CentimetersToPoints(0)
rK` x< .RightIndent = CentimetersToPoints(0)
HrOq>CSR .FirstLineIndent = CentimetersToPoints(0)
Nk
JOD3>U *LuR
<