利用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文檔進行統一的格式設置,雖然由於要求的不同可能對格式設置的代碼有所差異,但只需根據要求對代碼中的一些數據進行一些修改就可以達到目的。這里由於篇幅有限給出的格式種類的代碼有限,如果還需要一些別的特殊的格式設置的代碼可以,通過錄制宏的方法得到。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM