利用VBA统一Word文档格式
通常我们说到办公软件时,大家都会想到微软公司开发的一套办公软件Office。Office因为功能强大、操作简单等特点已经进入到各行各业,并逐渐成为日常办公、生活中必须的应用软件。但是Office属于通用型应用软件,因而在某些特殊数据处理方面很难快速实现解决方法。为了更好地满足这类工作的需要,越来越多的人迫切需要对Office进行二次开发和功能定制。作为Office的开发者和服务商,微软公司为了解决这个问题,在结合VB和Office的优点后,推出了VBA的开发环境――VBE。用户可以通过这个环境直接对应用程序环境的相关功能与模块,进行特殊的功能开发与定制。
VBA(Visual Basic for Application)是从VB(Visual Basic)衍生出来的,基于Office环境的开发工具。它不能像VB一样能生成可执行程序。实际上VBA是“寄生”于VB应用程序的版本。可以认为VBA是非常流行的应用程序开发语言Visual Basic的子集。VBA的主要特点如下:
第一,VBA可以使已有的应用程序(Excel等)自动化,可以扩展已有程序,可以创建自定义的解决方案。
第二,VBA必须“寄生”于已有的应用程序,其开发的程序必须依赖于它的“父”应用程序,例如Word、Excel。
第三,VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化。
相对于一些编程语言如C语言、C++语言、Delphi等需要种种烦琐的类型说明、定义VBA编程简便,其所提供的各种控件和交互式的编程方式可以很轻易地编出合格的程序,完成自己的任务。
在工作中经常会遇到这种情况,单位要求大家写一些个人的总结、报告或者别的类型的一些文档,而一般交上来的文档都是利用Word完成的,但是这些Word完成的文档中的格式却是五花八门什么样都有。这可能就会给阅读者或者打印造成一些问题,那么怎样才能将大家交上来的Word文档都很快地设置成格式相同的文档呢?一个一个文档去修改格式显然很繁琐。下面我就来说明一下如何使用VBA来实现对大量Word文档设置统一的格式。
以下我们主要以Word 2003为例来说明(Word 2007方法类似)。
一、打开Word程序,在工具菜单中选择“宏”“宏”在弹出的对话框中先给宏起一个名称,如:统一格式,然后单击“创建”按钮,即可以进入对当前宏进行编写。
二、编写代码实现。
根据需要实现的目的,我将代码分成三部分来实现,第一步需要在运行代码时要弹出文件夹选取对话框,用于选择需要统一格式的Word文档。
开始时需要定义一个文件夹选取对话框
Dim My Dialog As FileDialog,vrtSelectedItem As Variant,Doc As Document
Set My Dialog=Application.File Dialog(msoFileDialogFile Picker)
然后对这个文件夹对话框进行一些优化的设置这样可以更加方面选择,如让选择对话框中只显示Word文档不显示别的文件,允许一下选择多个Word文档等。
With MyDialog
.Filters.Clear ′除所有文件筛选器中的项目
.Filters.Add "所有 WORD 文件","*.doc",1 ′增加筛选器的项目为所有WORD文件
.AllowMultiSelect=True′允许多项选择
当在对话框选择确定之后要设置一个循环语句,让每一个被选择的文档都进行按照要求的格式设置。
If.Show=-1 Then
·Application.ScreenUpdating=False
For Each vrtSelectedItem In.SelectedItems
Set Doc=Documents.Open(FileName:=vrtSelectedItem,Visible:=False)
这样第一步的任务选择Word文档的任务就完成了。下面就要根据要求对上面选择的Word第二步给文档进行统一的格式设置。一般的文档的格式设置包括对三个方面的格式设置,1.页面格式;2.段落格式;3.字符格式。下面我们就针对这三个方面去设置文档的格式。
1.页面格式设置
以下提供的部分页面格式设置效果的代码可供参考。
With Doc
With.PageSetup′进行页面设置
.Orientation=wdOrientPortrait′页面方向为纵向
.TopMargin=CentimetersToPoints(3.4)′上边距为3.4cm
.BottomMargin=CentimetersToPoints(3.6)′下边距为3.6cm
.LeftMargin=CentimetersToPoints(2.3)′左边距为2.3cm
.RightMargin=CentimetersToPoints(2.3)′右边距为2.3cm
.Gutter=CentimetersToPoints(0)′装订线0cm
.HeaderDistance=CentimetersToPoints(1.3)′页眉1.3cm
.FooterDistance=CentimetersToPoints(1.5)′页脚1.5cm
.PageWidth=CentimetersToPoints(21)′纸张宽21cm
.PageHeight=CentimetersToPoints(29.7)′纸张高29.7cm
.VerticalAlignment=wdAlignVerticalTop′页面垂直对齐方式为“顶端对齐”
.SuppressEndnotes=False′不隐藏尾注
.MirrorMargins=False′不设置首页的内外边距
.GutterPos=wdGutterPosLeft′装订线位于左侧
.LayoutMode=wdLayoutModeLineGrid′版式模式为“只指定行网格”
End With
代码括号中的数据既为设置的对应的距离,可以根据个人的需要进行合理设置。
2.段落格式设置
可以对段落格式中的所有的项目进行设置,这里列举一些常用的段落格式设置的代码。
With.Content.ParagraphFormat
.LeftIndent=CentimetersToPoints(0)′左缩进0cm
.RightIndent=CentimetersToPoints(0)′右缩进0cm
.LineSpacing=24′行距24磅
.Alignment=wdAlignParagraphJustify′段落设置为两端对齐
.WidowControl=False′不勾选“孤行控制”
.KeepWithNext=False′不勾选“与下段同页”
.KeepTogether=False′不勾选“段中不分页”
.PageBreakBefore=False′不勾选“段前同页”
.NoLineNumber=False′不勾选“取消行号”
.Hyphenation=True′不勾选“允许西文在单词中间换行”
.CharacterUnitFirstLineIndent=2′首行缩进2个字符
.OutlineLevel=wdOutlineLevelBodyText′大纲级别为“正文文本”
.LineUnitBefore=0′段前间距为0
.LineUnitAfter=0′段后间距为0
.DisableLineHeightGrid=False′勾选“如果定义了文档网格,则对齐网格”,即指定段落中的字符与行网格对齐
End With
3.字符格式设置
这里主要对字体进行设置代码如下。
With.Content
With.Font
.NameFarEast= "宋体"′输入中文字体为“宋体”
.NameAscii="Times New Roman" ′输入英文字体为“Times New Roman”
.Size=12 ′字号为“12”
End With
With.Paragraphs.First
.Range.Font.Size=16 ′标题字号为“16”
.Alignment=wdAlignParagraphCenter
End With
End With
.Close True
End With
这段代码中也可以根据需要去修改字体和文字大小。
第三步完成第一步的循环的代码,最后做出判断当所有的文档完成格式设置之后弹出对话框提示“格式化文档操作设置完毕”。
Next
Application.ScreenUpdating=True
End If
End With
MsgBox"格式化文档操作设置完毕!",vbInformation
本实例通过以上步骤就可以实现对多个Word文档进行统一的格式设置,虽然由于要求的不同可能对格式设置的代码有所差异,但只需根据要求对代码中的一些数据进行一些修改就可以达到目的。这里由于篇幅有限给出的格式种类的代码有限,如果还需要一些别的特殊的格式设置的代码可以,通过录制宏的方法得到。