免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Microsoft Word 對(duì)象
目 錄
運(yùn)用Application對(duì)象運(yùn)用Document對(duì)象運(yùn)用Range對(duì)象運(yùn)用Selection對(duì)象運(yùn)用Find和Replacement對(duì)象運(yùn)用Table, Column, Row,和 Cell對(duì)象運(yùn)用其他普通對(duì)象判斷對(duì)象是否有效修改Word 命令運(yùn)用事件使用自動(dòng)宏使用自動(dòng)化
Visual Basic支持一個(gè)對(duì)象集合,該集合中的對(duì)象直接對(duì)應(yīng)于Microsoft Word 97中的元素,并且通過用戶界面,用戶熟悉這些元素中的絕大多數(shù)。例如,Document 對(duì)象代表了一個(gè)打開的文檔,Bookmark對(duì)象代表了一個(gè)文檔中的書簽,而Selection對(duì)象則代表了在一個(gè)文檔窗口窗格中的選定內(nèi)容。在Word中,每一類元素-文檔、表格、段落、書簽、域等等-都可以用Visual Basic的對(duì)象來表示。要在Word中自動(dòng)執(zhí)行任務(wù),可以使用這些對(duì)象的方法和屬性。
關(guān)于理解和使用Microsoft Office 97對(duì)象模型的一般性內(nèi)容,請(qǐng)參閱本書的第二章“理解對(duì)象模型”。在Microsoft Office 97中的對(duì)象模型相當(dāng)豐富,其中包含了大約180個(gè)對(duì)象。要查看Word對(duì)象模型的層次關(guān)系圖,請(qǐng)參閱“幫助”中的“Microsoft Word 對(duì)象”。要獲得對(duì)某種特定對(duì)象的詳細(xì)描述,可以在此圖中單擊該對(duì)象的名字,或是在“幫助”的索引中對(duì)特定對(duì)象進(jìn)行搜索。
怎樣顯示W(wǎng)ord Visual Basic幫助
要使用Word Visual Basic幫助,必須在安裝過程中選擇“自定義”的安裝方式,并且為Word選中“Visual Basic在線幫助”復(fù)選框。否則,安裝程序不會(huì)安裝Visual Basic幫助。如果用戶已經(jīng)安裝好了Word,那么可以再次運(yùn)行Setup程序來安裝Visual Basic幫助。
要查看Word Visual Basic 幫助,可以在“Visual Basic 編輯器里的“幫助”菜單中點(diǎn)擊“目錄和索引”一項(xiàng)。在“幫助主題”對(duì)話框的“目錄”一表中,雙擊“Microsoft Word Visual Basic 參考”,然后再雙擊“Visual Basic 參考”?!皫椭黝}”對(duì)話框會(huì)重新出現(xiàn),顯示出Microsoft Word Visual Basic的目錄和索引。
在用戶啟動(dòng)一個(gè)Word 時(shí)段的同時(shí),也創(chuàng)建了一個(gè)Application對(duì)象。用戶可以使用Application 對(duì)象的屬性或方法來控制或返回應(yīng)用程序范圍內(nèi)的特性、控制應(yīng)用程序窗口的外觀或者調(diào)整Word 對(duì)象模型的其他方面??梢允褂肁pplication屬性來返回Word Application 對(duì)象。以下的示例從視圖狀態(tài)切換到打印預(yù)覽狀態(tài)。
Application. PrintPreview = True
Application對(duì)象的一些屬性控制著應(yīng)用程序的外觀。例如,如果DisplayStatusBar屬性為True(真),那么狀態(tài)欄是可見的,如果WindowState屬性值為wdWindowStateMaximize,那么應(yīng)用程序窗口處于最大化狀態(tài)。以下的示例設(shè)置了屏幕上應(yīng)用程序窗口的大小。
With Application
.WindowState = wdWindowStateNormal
.Height = 450
.Width = 600
End With
Application對(duì)象的屬性也可以訪問處于對(duì)象層次中較低級(jí)的對(duì)象,比如Windows集合(代表了當(dāng)前所有打開的窗口)和Documents集合(代表了當(dāng)前所有打開的文檔)。用戶可以使用屬性,有時(shí)候也叫做訪問者,從對(duì)象層次中最高一級(jí)的Application對(duì)象向下訪問到較低級(jí)的對(duì)象(Document對(duì)象、Window對(duì)象、 Selection對(duì)象等等)??梢允褂靡韵聝蓚€(gè)示例之一來打開MyDoc.doc。
Application. Documents. Open FileName :="C:\DOCS\MYDOC.DOC"
Documents. Open FileName :="C:\DOCS\MYDOC.DOC"
因?yàn)镈ocument屬性是共用的,所以Application屬性是可選的。共用屬性和方法無需Application 對(duì)象限定符。要在“對(duì)象瀏覽器”中瀏覽共用屬性和方法的列表,可以在“類別”欄中單擊“<共用>”。共用項(xiàng)就會(huì)列在“成員”欄中。
注釋 Option對(duì)象包含了控制Word 共用行為的一些屬性。許多Option對(duì)象的屬性對(duì)應(yīng)于Option對(duì)話框中的各項(xiàng)(Tools 菜單)。使用Application 對(duì)象的Option屬性可以返回Option 對(duì)象。以下的示例設(shè)置了三個(gè)應(yīng)用程序范圍內(nèi)的選項(xiàng)(因?yàn)镺ption屬性是共用的,所以在本示例中無需Application屬性)。
With Application.Options
.AllowDragAndDrop = True
.ConfirmConversions = False
.MeasurementUnit = wdPoints
End With
當(dāng)用戶在Word中打開或創(chuàng)建一個(gè)文件的同時(shí),也創(chuàng)建了一個(gè)Document對(duì)象。用戶可以使用Document對(duì)象或Documents集合的屬性或方法來打開、創(chuàng)建、保存、激活或者關(guān)閉文件。
返回Document對(duì)象
用戶可以使用語法Documents (index)來返回作為一個(gè)Document對(duì)象的任何打開的文檔,在這里index是該文檔的名字或索引號(hào)。在以下的示例中,變量myDoc包含一個(gè)Document對(duì)象,該對(duì)象代表名為“Report.doc”的打開的文檔。
Set myDoc = Documents ("Report.doc")
索引號(hào)代表了文檔在Documents集合中的位置。在以下的示例中,變量myDoc包含了一個(gè)Document對(duì)象,該對(duì)象代表Documents集合中的第一個(gè)文檔。
Set myDoc = Documents(1)
注釋 因?yàn)楫?dāng)用戶添加或關(guān)閉多個(gè)文檔時(shí),某個(gè)特定文檔的索引號(hào)會(huì)發(fā)生改變,所以最好使用文檔的名字來對(duì)Documents集合中的Document對(duì)象進(jìn)行索引。
除了通過文檔的名字或索引號(hào)來引用文檔,還可以使用ActiveDocument屬性來返回一個(gè)引用活動(dòng)文檔(當(dāng)前著眼的文檔)的Document對(duì)象。以下的示例顯示產(chǎn)活動(dòng)文檔的名字;如果沒有打開的文檔,則該示例顯示一條消息。
If Documents. Count >= 1 Then
MsgBox ActiveDocument. Name
Else
MsgBox "No documents are open"
End If
打開文檔
要打開一個(gè)已經(jīng)存在的文檔,可以使用Open方法。Open方法應(yīng)用于通過Document屬性返回的Documents集合。以下的示例打開了文件Test.doc(從當(dāng)前文件夾)并且啟動(dòng)了更改跟蹤。
Set myDoc = Documents. Open (FileName :="TEST.DOC")
myDoc. TrackRevisions = True
注意到在上例中Open方法的返回值是一個(gè)Document對(duì)象,該對(duì)象表示剛被打開的文檔。在此示例中的文件名不包含路徑;因此,是假定了該文件在當(dāng)前的文件夾中。但這會(huì)導(dǎo)致出現(xiàn)一個(gè)運(yùn)行時(shí)錯(cuò)誤,因?yàn)橐坏┯脩魟?chuàng)建了與當(dāng)前文件夾不同的文件夾,Visual Basic就再也找不到該文件了。但是,用戶可以通過指明完整的路徑,就如同下表所示的那樣,來確保打開正確的文件。
操作系統(tǒng)
FileName參數(shù)
Windows
FileName :="C:\Documents\Temporary File.doc"
Macintosh
FileName :="Hard Drive:Documents:Temporary File"
如果用戶的宏只用于一種文件系統(tǒng),那么可以在FileName參數(shù)中指定路徑分隔符(“\”或者“:”),就如同上表所示的那樣。以下示例顯示了與文件系統(tǒng)無關(guān)的代碼,可以用來打開Sales.doc,并且假定Sales.doc已經(jīng)保存在Word 的程序文件夾中。
programPath = Options. DefaultFilePath (wdProgramPath)
Documents. Open FileName :=programPath & Application. PathSeparator & "SALES.DOC"
PathSeparator屬性返回當(dāng)前文件系統(tǒng)(例如,“\”用于MS-DOS/Windows的文件分配表,或者“:”用于Macintosh)的正確的文件分隔符。DefaultFilePath屬性返回文件的位置,比如文檔所在文件夾的路徑、程序文件夾或者當(dāng)前文件夾。
如果所指定的文件名既沒有在當(dāng)前文件夾(如果沒有指定路徑)出現(xiàn)也沒有在指定的文件夾(如果指定了路徑)中出現(xiàn),那么就會(huì)發(fā)生錯(cuò)誤。以下的示例使用FileSearch對(duì)象的屬性和方法來判斷名為“Test.doc”的文件是否存在于用戶的默認(rèn)文檔文件夾中。如果找到了該文件(FoundFiles. Count = 1),那么就打開它;否則,顯示一條消息。
defaultDir = Options. DefaultFilePath (wdDocumentsPath)
With Application. FileSearch
.FileName = "Test.doc"
.LookIn = defaultDir
.Execute
If .FoundFiles. Count = 1 Then
Documents. Open FileName :=defaultDir & Application. PathSeparator & "TEST.DOC"
Else
MsgBox "Test.doc file was not found"
End If
End With
也可以允許用戶選擇要打開的文件,而不是定死Open方法的FileName參數(shù)值。如同以下示例所示的那樣,可以使用帶有wdDialogFileOpen常量的Dialogs屬性來返回一個(gè)Dialog 對(duì)象,該對(duì)象表示“打開”對(duì)話框(在“文件”菜單中)。Show方法可以顯示并且執(zhí)行在“打開”對(duì)話框中完成的動(dòng)作。
Dialogs (wdDialogFileOpen). Show
Display 方法只是用來顯示特定的對(duì)話框而不作任何更多的操作。以下的示例檢查Display方法的返回值。如果用戶單擊“確定”來關(guān)閉對(duì)話框,返回值-1并且打開所選擇的文件,該文件的名字保存在變量fSelected中。
Set dlg = Dialogs (wdDialogFileOpen)
aButton = dlg. Display
fSelected = dlg. Name
If aButton = -1 Then
Documents. Open FileName :=fSelected
End If
要對(duì)如何顯示W(wǎng)ord對(duì)話框作進(jìn)一步了解,請(qǐng)參閱“幫助”中的“顯示內(nèi)置Word 對(duì)話框”一節(jié)的內(nèi)容。
要判斷某個(gè)特殊的文檔是否打開,可以使用一條For Each…Next語句來對(duì)Documents集合進(jìn)行列舉。如果名為“Sample.doc”的文檔已經(jīng)被打開了,以下的示例就激活它;如果它尚未被打開,則該示例會(huì)打開它。
docFound = True
For Each aDoc In Documents
If InStr (1, aDoc. Name, "sample.doc", 1) Then
aDoc. Activate
Exit For
Else
docFound = False
End If
Next aDoc
If docFound = False Then Documents. Open _
FileName :="C:\Documents\Sample.doc"
可以使用Count屬性來確定當(dāng)前打開文檔的數(shù)目。Count屬性應(yīng)用于Documents集合,可以使用Document屬性返回該集合。如果沒有已打開的文檔,以下的示例會(huì)顯示一條消息。
If Documents. Count = 0 Then MsgBox "No documents are open"
創(chuàng)建和保存文檔
要?jiǎng)?chuàng)建一個(gè)新文檔,可以對(duì)Documents集合應(yīng)用Add 方法。以下的示例創(chuàng)建了一個(gè)新文檔。
Documents. Add
Add方法返回了僅作為一個(gè)Document對(duì)象而創(chuàng)建的文檔。當(dāng)用戶添加一個(gè)文檔時(shí),可以設(shè)置Add 方法的返回值是一個(gè)對(duì)象變量,以便用戶可以在自己的代碼中引用該新文檔。以下的示例創(chuàng)建了一個(gè)新文檔,并且設(shè)置它的上邊距為1.25英寸。
Dim myDoc As Document
Set myDoc = Documents. Add
myDoc. PageSetup. TopMargin = InchesToPoints(1.25)
第一次保存新文檔時(shí),可以隨Document對(duì)象使用SaveAs方法。以下的示例將名為“Temp.doc”的活動(dòng)文檔保存在當(dāng)前文件夾中。
ActiveDocument. SaveAs FileName :="Temp.doc"
在文檔被保存之后,用戶可以使用它的文檔名來調(diào)整Document對(duì)象。以下的示例創(chuàng)建了一個(gè)新文檔并且立刻把它保存為“1996 Sales.doc”。然后,該示例使用新名字來作Documents集合中的該文檔的索引,并且向該文檔添加一張表格。
Documents. Add.SaveAs FileName :="1996 Sales.doc"
Documents ("1996 Sales.doc").Tables.Add _
Range :=Selection. Range, NumRows :=2, NumColumns :=4
要保存對(duì)一個(gè)已經(jīng)存在的文檔所進(jìn)行的更改,可以隨同Document對(duì)象使用Save方法。以下的指令保存了名為“Sales.doc”的文檔。
Documents ("Sales.doc"). Save
如果用戶隨同一個(gè)尚未保存的文檔或模板使用Save方法,將會(huì)顯示“另存為”對(duì)話框來提示用戶為該文件取名。要保存所有打開的文檔,可以對(duì)Documents集合應(yīng)用Save方法。以下的示例保存了所有打開的文檔,但沒有提示用戶為文件取名。
Documents. Save NoPrompt :=True
激活一個(gè)文檔
要使另一個(gè)文檔成為活動(dòng)文檔,可以對(duì)Document對(duì)象應(yīng)用Activate方法。以下的示例激活了打開的文檔(MyDocument.doc)。
Documents ("MyDocument.doc"). Activate
以下的示例打開了兩個(gè)文檔,然后激活其中的第一個(gè)文檔(Sample.doc)。
Set Doc1 = Documents. Open (FileName :="C:\Documents\Sample.doc")
Set Doc2 = Documents.Open (FileName :="C:\Documents\Other.doc")
Doc1. Activate
打印一個(gè)文檔
要打印一個(gè)文檔,可以對(duì)Document對(duì)象應(yīng)用PrintOut 方法,如以下示例所示。
ActiveDocument. PrintOut
要通過程序來設(shè)置那些也可以在“打印”對(duì)話框(在“文件”菜單中)里進(jìn)行設(shè)置的打印選項(xiàng),可以使用PrintOut 方法的參數(shù)來實(shí)現(xiàn)。用戶可以使用Options 對(duì)象的屬性來設(shè)置打印選項(xiàng),這些選項(xiàng)也可以在“選項(xiàng)”對(duì)話框(在“工具”菜單中)“打印”一表里進(jìn)行設(shè)置。以下示例設(shè)置活動(dòng)文檔打印隱藏的文字,并且只打印出前三頁。
Options. PrintHiddenText = True
ActiveDocument. PrintOut Range :=wdPrintFromTo, From :="1", To :="3"
關(guān)閉文檔
要關(guān)閉一個(gè)文檔,可以對(duì)Document對(duì)象應(yīng)用Close方法。以下的示例關(guān)閉了名為“Sales.doc”的文檔。
Documents ("Sales.doc"). Close
如果對(duì)文檔進(jìn)行過修改,Word會(huì)顯示出一條消息來詢問用戶是否要保存所進(jìn)行的修改。用戶可以隨SaveChanges參數(shù)使用wdDoNotSaveChanges或 wdSaveChanges常量來使該提示不再出現(xiàn)。以下的示例保存并且關(guān)閉了Sales.doc。
Documents ("Sales.doc"). Close SaveChanges :=wdSaveChanges
要關(guān)閉所有已打開的文檔,可以對(duì)Documents集合應(yīng)用Close方法。以下的示例沒有保存修改就關(guān)閉了所有的文檔。
Documents. Close SaveChanges :=wdDoNotSaveChanges
訪問文檔中的對(duì)象
用戶可以從Document對(duì)象來訪問返回對(duì)象的一系列屬性和方法。要查看在Document對(duì)象中所能使用的對(duì)象的層次關(guān)系圖,可以參閱“幫助”中的“Microsoft Word對(duì)象(Documents)”。例如,Table屬性,它能夠返回一個(gè)Table對(duì)象的集合,可以在Document對(duì)象中使用。隨著一個(gè)集合對(duì)象使用的Count屬性能夠判斷在該集合中所包含的項(xiàng)數(shù)。以下的示例顯示一條消息來指出在活動(dòng)文檔中有多少表格。
MsgBox ActiveDocument. Tables. Count & " table(s) in this document"
使用Table(index)可以返回一個(gè)單張表格對(duì)象,這里的index是索引號(hào)。在以下的示例中,myTable代表“Sales.doc”文檔里的第一張表格。
Set myTable = Documents ("Sales.doc"). Tables(1)
關(guān)于返回一個(gè)特殊對(duì)象的信息可以從“幫助”中的對(duì)象主題本身 (例如,“Table 對(duì)象”)和相應(yīng)的集合對(duì)象主題(例如,“Table集合對(duì)象”)中獲得。
向文檔添加對(duì)象
可以使用隨著能在Document對(duì)象中訪問的集合對(duì)象的Add方法來向文檔添加諸如腳注、備注或表格這樣的對(duì)象。例如,以下命令在myRange變量(myRange是一個(gè)包含了一個(gè)Range對(duì)象的對(duì)象變量)所指定的位置上添加了一張3x3的表格。
ActiveDocument. Tables. Add Range :=myRange, NumRows :=3, NumColumns :=3
以下的示例在myRange變量所指定的位置上添加了一個(gè)腳注。
ActiveDocument. Footnotes. Add Range :=myRange, Text :="The Willow Tree"A
要獲得支持Add方法的集合對(duì)象列表,請(qǐng)參閱“幫助”中的“Add 方法”。
當(dāng)使用Visual Basic時(shí)一個(gè)常見的任務(wù)就是在文檔中指定一塊區(qū)域,然后對(duì)它進(jìn)行處理,比如插入文字或應(yīng)用格式等。例如,用戶可能想編寫一個(gè)宏,來對(duì)文檔中某個(gè)部分里的某個(gè)單詞或短語進(jìn)行定位。那就可以使用一個(gè)Range對(duì)象來表示想在其中搜索特定單詞或短語的部分文檔。在確定Range對(duì)象后,用戶能夠應(yīng)用該對(duì)象的方法和屬性來修改相應(yīng)范圍中的內(nèi)容。
一個(gè)Range對(duì)象代表了文檔中的一塊連續(xù)的區(qū)域。每一個(gè)Range對(duì)象都由一個(gè)起始字符位置和一個(gè)終止字符位置來定義。與用戶在文檔中使用書簽的方法類似,可以在Visual Basic中使用Range對(duì)象來識(shí)別一個(gè)文檔的特定部分。一個(gè)Range對(duì)象既可以和插入點(diǎn)一樣小,也可以和整個(gè)文檔一樣大。但是,與書簽不同,Range對(duì)象僅僅在定義它的過程正在運(yùn)行時(shí)才存在。
Range對(duì)象同選定內(nèi)容相互獨(dú)立;也就是說,可以定義和修改范圍而不會(huì)改變選定內(nèi)容。用戶也可以在文檔中定義多個(gè)范圍,而此時(shí)每個(gè)文檔窗格中僅有一個(gè)選定內(nèi)容。
Start、End和StoryType屬性唯一地確定了一個(gè)Range對(duì)象。Start和End屬性分別返回或者設(shè)置Range對(duì)象的起始和結(jié)束字符的位置。每個(gè)文檔構(gòu)成部分起始處的字符位置是0 (zero),而第一個(gè)字符之后的位置是1,依此類推。StoryType 屬性的WdStoryType常量可以表示十一種不同的文檔構(gòu)成部分類型。例如,如果在注腳區(qū)域中有一個(gè)Range對(duì)象,那么StoryType屬性返回wdFootnotesStory。要對(duì)文檔構(gòu)成部分作進(jìn)一步了解,請(qǐng)參閱本節(jié)后面的“運(yùn)用文檔構(gòu)成部分”一節(jié)的有關(guān)內(nèi)容。
使用Range對(duì)象來代替Selection對(duì)象
宏錄制器會(huì)經(jīng)常創(chuàng)建一個(gè)使用Selection屬性來控制操縱Selection對(duì)象的宏。但是,用戶通??梢杂靡粋€(gè)或幾個(gè)Range對(duì)象來以很少的命令完成相同的任務(wù)。以下的示例是用宏錄制器創(chuàng)建的。該宏對(duì)文檔中的前兩個(gè)單詞進(jìn)行加粗。
Selection. HomeKey Unit :=wdStory
Selection. MoveRight Unit :=wdWord, Count:=2, Extend :=wdExtend
Selection. Font.Bold = wdToggle
以下的示例沒有使用Selection對(duì)象而完成了相同的任務(wù)。
ActiveDocument. Range (Start:=0, End :=ActiveDocument. Words(2). End) .Bold = True
以下的示例對(duì)文檔中的前兩個(gè)單詞進(jìn)行加粗,然后插入一個(gè)新的段落。
Selection. HomeKey Unit :=wdStory
Selection. MoveRight Unit :=wdWord, Count :=2, Extend :=wdExtend
Selection. Font.Bold = wdToggle
Selection. MoveRight Unit :=wdCharacter, Count:=1
Selection. TypeParagraph
以下的示例沒有使用Selection對(duì)象就完成了上述示例中的同樣任務(wù)。
Set myRange = ActiveDocument. Range(Start:=0, End :=ActiveDocument. Words(2). End)
myRange. Bold = True
myRange. InsertParagraphAfter
前面的兩個(gè)示例改變了活動(dòng)文檔中的格式但沒有改變選定內(nèi)容。在大多數(shù)的場(chǎng)合下,Range對(duì)象比Selection對(duì)象更可取,原因如下:
用戶可以定義和使用多個(gè)Range對(duì)象,而在每個(gè)文檔窗口中只能有一個(gè)Selection對(duì)象。 控制管理Range對(duì)象不會(huì)改變所選擇的文字內(nèi)容。 控制管理Range對(duì)象比運(yùn)用Selection對(duì)象速度要快。
使用Range方法返回Range對(duì)象
可以使用Range方法在特定文檔中創(chuàng)建一個(gè)Range對(duì)象。Range方法(可以從Document對(duì)象使用)返回一個(gè)Range對(duì)象,該對(duì)象定位于主文檔構(gòu)成部分中,有給定的起始點(diǎn)和結(jié)束點(diǎn)。以下示例創(chuàng)建了一個(gè)Range對(duì)象,并且賦給myRange變量。
Set myRange = ActiveDocument. Range (Start :=0, End :=10)
在上述示例中,myRange表示活動(dòng)文檔中的前十個(gè)字符。當(dāng)對(duì)保存在myRange變量中的Range對(duì)象應(yīng)用一種屬性或方法時(shí),就可以看到已經(jīng)創(chuàng)建的Range對(duì)象。以下的示例對(duì)活動(dòng)文檔中的前十個(gè)字符進(jìn)行加粗。
Set myRange = ActiveDocument. Range(Start :=0, End :=10)
myRange. Bold = True
當(dāng)用戶需要對(duì)一個(gè)Range對(duì)象進(jìn)行多次引用時(shí),可以使用Set語句來設(shè)置一個(gè)等價(jià)于Range對(duì)象的變量。但是,如果用戶需要在一個(gè)對(duì)象上執(zhí)行一次操作,那么就沒有必要將對(duì)象保存到變量中。用戶可以使用一條確定范圍并且改變Bold屬性的命令來取得同樣的結(jié)果;如以下示例所示。
ActiveDocument. Range(Start :=0, End :=10). Bold = True
和書簽類似,一個(gè)范圍能夠在文檔中橫跨一組字符,也可以標(biāo)記其中的一個(gè)位置。在以下的示例中,Range對(duì)象的起始和終止點(diǎn)相同,并且該范圍內(nèi)不包含任何文字。該示例在活動(dòng)文檔的起始處插入文字。
ActiveDocument. Range(Start :=0, End :=0). InsertBefore Text :="Hello "
用戶可以通過使用如上述示例所示的字符位置數(shù)字,或者隨同Selection對(duì)象、Bookmark對(duì)象或Range對(duì)象使用Start屬性和End屬性,來定義一個(gè)范圍的起始和終止位置。以下示例創(chuàng)建了一個(gè)Range對(duì)象,來表示活動(dòng)文檔中的第三和第四個(gè)句子。
Set myDoc = ActiveDocument
Set myRange = myDoc. Range (Start :=myDoc. Sentences(3). Start, _
End :=myDoc. Sentences (4). End)
技巧 Range對(duì)象在文檔中的表示不可見。但是,用戶可以使用Select方法來選定一個(gè)Range對(duì)象,以保證Range對(duì)象表示正確的文字范圍。在以下示例中的Range對(duì)象表示活動(dòng)文檔中的前三個(gè)段落。在該宏運(yùn)行完畢之后,選定內(nèi)容是指包含在aRange變量中的文字范圍。
Set aRange = ActiveDocument.Range (Start :=0, _
End :=ActiveDocument. Paragraphs (3). Range. End)
aRange. Select
使用Range屬性來返回一個(gè)Range對(duì)象
在許多對(duì)象都可以使用Range屬性-例如,Paragraph對(duì)象、Bookmark對(duì)象、Endnote對(duì)象以及Cell對(duì)象-Range屬性用來返回一個(gè)Range對(duì)象。以下的示例返回了一個(gè)Range對(duì)象,該對(duì)象表示活動(dòng)文檔的第一段。
Set myRange = ActiveDocument.Paragraphs (1). Range
在創(chuàng)建了對(duì)Range對(duì)象的引用之后,用戶可以使用它的任何屬性或方法來修改該范圍。以下的示例復(fù)制了活動(dòng)文檔中的第一段。
Set myRange = ActiveDocument. Paragraphs (1). Range
myRange. Copy
以下的示例復(fù)制了活動(dòng)文檔中表格一的第一行。
ActiveDocument. Tables(1). Rows(1). Range. Copy
以下的示例顯示了活動(dòng)文檔中由第一個(gè)書簽標(biāo)記的文字。Range屬性可以在Bookmark對(duì)象中使用。
MsgBox ActiveDocument. Bookmarks (1). Range. Text
如果用戶需要對(duì)同一個(gè)Range對(duì)象應(yīng)用多種屬性或方法,那么可以使用With…End With語句。以下的示例為活動(dòng)文檔的第一段設(shè)定了文字的格式。
Set myRange = ActiveDocument. Paragraphs (1). Range
With myRange
.Bold = True
.ParagraphFormat. Alignment = wdAlignParagraphCenter
.Font. Name = "Arial"
End With
要獲得關(guān)于返回Range對(duì)象的其他示例,請(qǐng)參閱“幫助”中的“Range屬性”。
修改文檔的一部分
Visual Basic包含了一些對(duì)象,可以使用它們來修改以下類型的文檔元素:字符、單詞、句子、段落以及節(jié)。下面的表格包含了對(duì)應(yīng)于這些文檔元素的屬性和屬性所返回的對(duì)象。
表 達(dá) 式
返 回 的 對(duì) 象
Word (index)
Range對(duì)象
Characters (index)
Range對(duì)象
Sentences (index)
Range對(duì)象
Paragraphs (index)
Paragraph對(duì)象
Sections (index)
Section對(duì)象
當(dāng)用戶不帶index來使用這些屬性時(shí),就返回一個(gè)同名的集合-例如,Paragraphs屬性返回Paragraphs集合。但是,如果用戶使用index來確定在某個(gè)集合中的一項(xiàng),就返回上述表格第二列中的對(duì)象-例如,Words(1)返回一個(gè)Range對(duì)象。用戶可以使用任何范圍屬性或方法來修改Range對(duì)象,如以下示例所示,該示例將選定內(nèi)容中的第一個(gè)單詞復(fù)制到剪貼板中。
Selection. Words (1). Copy
在Paragraphs集合以及Sections集合中的集合項(xiàng)分別是Paragraph對(duì)象和Section對(duì)象,而不是Range對(duì)象。但是,在Paragraph對(duì)象和Section對(duì)象中都可以使用Range屬性(它返回一個(gè)Range對(duì)象)。以下的示例將獲得文檔中的第一段復(fù)制到剪貼板中。
ActiveDocument. Paragraphs(1). Range. Copy
上述表格中所有的文檔元素屬性都可以在Document對(duì)象、Selection對(duì)象以及Range對(duì)象中使用,如以下三個(gè)示例所示。
本例設(shè)置活動(dòng)文檔中第一個(gè)單詞的大小寫。
ActiveDocument. Words(1). Case = wdUpperCase
本例設(shè)置選中的第一節(jié)的下邊距為0.5英寸。
Selection.Sections(1). PageSetup. BottomMargin = InchesToPoints(0.5)
本例設(shè)置活動(dòng)文檔中的文字為兩倍行距(Content屬性返回一個(gè)Range對(duì)象,該對(duì)象表示主文檔構(gòu)成部分)。
ActiveDocument. Content. ParagraphFormat. Space2
修改一組文檔元素
要修改由一組文本元素(字符、單詞、句子、段落或節(jié))構(gòu)成的范圍,可以創(chuàng)建一個(gè)包含文檔元素的Range對(duì)象。隨同Range對(duì)象使用Start和End屬性,用戶可以新建一個(gè)Range對(duì)象,該對(duì)象引用了一組文檔元素。以下的示例創(chuàng)建了一個(gè)Range對(duì)象(myRange),該對(duì)象引用了活動(dòng)文檔中的前三個(gè)單詞,然后將這些單詞的字體改為Arial。
Set Doc = ActiveDocument
Set myRange = Doc.Range (Start :=Doc. Words(1). Start, End :=Doc. Words(3). End)
myRange. Font. Name = "Arial"
以下的示例創(chuàng)建了一個(gè)Range對(duì)象,該對(duì)象起始于第二段的開頭,到第四段之后結(jié)束。
Set myDoc = ActiveDocument
Set myRange = myDoc. Range (Start :=myDoc. Paragraphs(2). Range. Start, _
End :=myDoc. Paragraphs(4). Range. End)
以下的示例創(chuàng)建了一個(gè)Range對(duì)象(aRange),該對(duì)象起始于第二段的開頭,到第三段之后結(jié)束。ParagraphFormat屬性用來訪問諸如SpaceBefore和SpaceAfter這樣的設(shè)置段落格式的屬性。
Set Doc = ActiveDocument
Set aRange = Doc. Range (Start :=Doc. Paragraphs(2). Range. Start, _
End :=Doc. Paragraphs(3). Range. End)
With aRange. ParagraphFormat
.Space1
.SpaceAfter = 6
.SpaceBefore = 6
End With
返回或設(shè)置范圍中的文字
可以使用Text屬性來返回或設(shè)置一個(gè)Range對(duì)象中的內(nèi)容。以下的示例返回了活動(dòng)文檔中的第一個(gè)單詞。
strText = ActiveDocument. Words(1). Text
以下示例將活動(dòng)文檔中的第一個(gè)單詞改為“Hello”。
ActiveDocument. Words(1). Text = "Hello"
可以使用InsertAfter 方法或者InsertBefore方法在一個(gè)范圍的前面或后面插入文字。以下的示例在活動(dòng)文檔的第二段之前插入文字。
ActiveDocument. Paragraphs(2). Range. InsertBefore Text :="In the beginning "
在使用InsertAfter 方法或者InsertBefore方法之后,范圍隨之?dāng)U大,包含新的文字。但是,也可以使用Collapse方法將范圍折疊到起始位置或終止位置。以下的示例在現(xiàn)有文檔之前插入單詞“Hello”,然后將范圍折疊到它的起始位置(在單詞“Hello”之前)。
With ActiveDocument.Paragraphs(2).Range
.InsertBefore Text:="Hello "
.Collapse Direction:=wdCollapseStart
End With
設(shè)置范圍中文字的格式
可以使用Font屬性來取得設(shè)置字符格式的屬性和方法,而使用ParagraphFormat屬性來取得設(shè)置段落格式的屬性和方法。以下的示例設(shè)置了活動(dòng)文檔中第一段的字符格式和段落格式。
With ActiveDocument. Paragraphs(1). Range. Font
.Name = "Times New Roman"
.Size = 14
.AllCaps = True
End With
With ActiveDocument. Paragraphs(1). Range. ParagraphFormat
.LeftIndent = InchesToPoints(0.5)
.Space1
End With
重新定義Range對(duì)象
可以使用SetRange方法來重新定義一個(gè)已經(jīng)存在的Range對(duì)象。以下的示例定義myRange為當(dāng)前的選定內(nèi)容。SetRange方法重新定義myRange,使它表示當(dāng)前的選定內(nèi)容加上隨后的十個(gè)字符。
Set myRange = Selection. Range
myRange. SetRange Start :=myRange. Start, End :=myRange. End + 10
要獲得重新定義Range對(duì)象的其他信息和示例,請(qǐng)參閱“幫助”中“SetRange方法”。
用戶也可以通過改變Start屬性和End屬性的值,或者使用MoveStart方法或MoveEnd方法來重新定義一個(gè)Range對(duì)象。以下的示例重新定義myRange對(duì)象,使它表示當(dāng)前的選定內(nèi)容加上隨后的十個(gè)字符。
Set myRange = Selection. Range
myRange. End = myRange. End + 10
以下的示例使用MoveEnd方法擴(kuò)展了myRange,使它包含下一段。
Set myRange = ActiveDocument. Paragraphs(2)
myRange. MoveEnd Unit :=wdParagraph, Count :=1
在范圍內(nèi)的段落中循環(huán)
可以通過幾種不同的方法在范圍內(nèi)的段落中進(jìn)行循環(huán)。本節(jié)包含使用For Each...Next語句和Next屬性及方法在范圍內(nèi)的段落中進(jìn)行循環(huán)的內(nèi)容。也可以使用同樣的技術(shù)在范圍內(nèi)的字符、單詞或句子中進(jìn)行循環(huán)。
使用For Each...Next語句
建議在范圍內(nèi)進(jìn)行段落循環(huán)時(shí)使用For Each...Next語句,另外建議在集合內(nèi)進(jìn)行循環(huán)時(shí)也同樣使用該語句。以下的示例在獲得文檔的前五段中進(jìn)行循環(huán),在每段之前添加文字。
Set myDoc = ActiveDocument
Set myRange = myDoc.Range (Start:=myDoc. Paragraphs(1). Range. Start, _
End :=myDoc. Paragraphs(5). Range. End)
For Each para In myRange. Paragraphs
para.Range. InsertBefore "Question:" & vbTab
Next para
假定用戶想修改上述的代碼,在范圍內(nèi)對(duì)用戶選定的段落進(jìn)行循環(huán)??梢允褂肧election屬性來表示選定內(nèi)容中的各個(gè)段落。以下的示例在選定內(nèi)容的段落中進(jìn)行循環(huán),去除加粗格式。
For Each para In Selection. Paragraphs
para.Range. Bold = False
Next para
使用Next屬性或方法
用戶也可以使用Next屬性和方法在范圍的段落中進(jìn)行循環(huán)。以下的示例說明了怎樣在范圍的單詞中進(jìn)行循環(huán),將每個(gè)單詞增大一點(diǎn)字號(hào)。
Set myRange = ActiveDocument.Words(1)
For i = 1 To 5
myRange. Font. Size = myRange. Font. Size + i
Set myRange = myRange. Next(Unit :=wdWord, Count :=1)
Next i
以下的示例在范圍的段落中進(jìn)行循環(huán),將范圍的對(duì)齊方式由居中改為左對(duì)齊。該示例也使用Next屬性重新定義了myRange,使它表示下一段。
Set myRange = ActiveDocument. Paragraphs(1). Range
For i = 1 To 5
If myRange. Paragraphs(1). Alignment = wdAlignParagraphCenter Then
myRange. Paragraphs(1). Alignment = wdAlignParagraphLeft
End If
Set myRange = myRange. Paragraphs(1). Next. Range
Next i
將Range對(duì)象賦值給變量
可以通過幾種途徑來把一個(gè)已經(jīng)存在的Range對(duì)象賦給一個(gè)變量。在以下示例中,變量Range1和變量Range2都表示Range對(duì)象。在該示例中命令把活動(dòng)文檔中第一和第二個(gè)單詞分別賦值給變量Range1和Range2。
Set Range1 = ActiveDocument. Words(1)
Set Range2 = ActiveDocument. Words(2)
設(shè)置一個(gè)Range對(duì)象變量等價(jià)于另一個(gè)Range對(duì)象變量
以下的示例創(chuàng)建變量Range2,并且與Range1相同。
Set Range2 = Range1
現(xiàn)在就有兩個(gè)變量表示著同樣的范圍。當(dāng)用戶調(diào)整Range2的起始位置、終止位置或者文字時(shí),所做的更改也同樣會(huì)影響到Range1,反之亦然。
以下的示例將Range1默認(rèn)屬性 (Text屬性)的值賦給Range2的默認(rèn)屬性。在此示例中的代碼等價(jià)于Range2. Text = Range1. Text,它沒有改變Range對(duì)象實(shí)際所表示的內(nèi)容,它僅僅改變Range2的contents (text)。
Range2 = Range1
這兩個(gè)范圍(Range2和Range1)包含有相同的內(nèi)容,但是它們可能指向文檔中的不同位置,或者干脆是不同的文檔。
使用Duplicate屬性
以下的示例創(chuàng)建了一個(gè)新復(fù)制的Range對(duì)象,Range2,該對(duì)象有著和Range1一樣的起始位置、終止位置以及文字內(nèi)容。
Set Range2 = Range1. Duplicate
如果改變了Range1的起始位置或是終止位置,這種改變并不會(huì)影響到Range2,反之亦然。但是,因?yàn)檫@兩個(gè)范圍指向文檔的相同位置,改變一個(gè)范圍中的文字內(nèi)容也會(huì)同時(shí)改變另一個(gè)范圍的文字內(nèi)容。
運(yùn)用文檔構(gòu)成部分
一個(gè)文檔構(gòu)成部分是文檔中的一個(gè)區(qū)域,該區(qū)域中的文字區(qū)別于文檔中的其他區(qū)域。例如,如果一個(gè)文檔包含了正文文字、腳注和頁眉,則該文檔就包含了文檔正文部分、腳注部分和頁眉部分。
可以使用StoryType屬性來返回指定范圍、選定內(nèi)容或書簽的文檔構(gòu)成部分。如果在腳注部分中包含了選定內(nèi)容,那么下例將關(guān)閉活動(dòng)窗口中的腳注窗格。
ActiveWindow. View. Type = wdNormalView
If Selection. StoryType = wdFootnotesStory Then ActiveWindow. ActivePane. Close
StoryRanges集合包含了一個(gè)文檔中每種有效的文檔構(gòu)成部分類型的第一個(gè)過程部分范圍。可以使用NextStoryRange方法來返回以后的文檔構(gòu)成部分。以下的示例搜索活動(dòng)文檔中的每個(gè)文檔過程部分來找出文字“Microsoft Word”。該示例也將它每次找到的文字全部設(shè)置為斜體。
For Each myStoryRange In ActiveDocument. StoryRanges
myStoryRange. Find. Execute FindText :="Microsoft Word", Forward :=True
While myStoryRange. Find. Found
myStoryRange. Italic = True
myStoryRange. Find.Execute FindText :="Microsoft Word", _
Forward :=True, Format :=True
Wend
While Not (myStoryRange. NextStoryRange Is Nothing)
Set myStoryRange = myStoryRange. NextStoryRange
myStoryRange. Find.Execute FindText :="Microsoft Word", Forward :=True
While myStoryRange. Find. Found
myStoryRange. Italic = True
myStoryRange. Find.Execute FindText :="Microsoft Word", _
Forward :=True, Format :=True
Wend
Wend
Next myStoryRange
當(dāng)用戶使用Word中的某個(gè)文檔時(shí),通常會(huì)先選擇文字,然后再執(zhí)行一項(xiàng)操作,比如設(shè)定以有文字的格式,或是鍵入新文字。在Visual Basic中,通常沒有必要在修改文字之前先選定該文字;而是創(chuàng)建一個(gè)表示文檔特定部分的Range對(duì)象并對(duì)其進(jìn)行操作。但是,當(dāng)用戶想要自己的代碼對(duì)選定內(nèi)容作出響應(yīng)或是改變選定內(nèi)容,就可以通過Selection對(duì)象來完成任務(wù)。
可以使用Selection屬性來返回Selection對(duì)象。在文檔窗口的每個(gè)窗格中只能有一個(gè)Selection對(duì)象,在任何時(shí)刻,也只能有一個(gè)活動(dòng)的Selection對(duì)象。選定內(nèi)容可以包含文檔的一塊區(qū)域,也可以被折疊到一個(gè)插入點(diǎn)。以下的示例改變了選定內(nèi)容中各個(gè)段的段落格式。
Selection. Paragraphs. SpaceBefore = InchesToPoints (0.25)
Selection屬性可以在Application對(duì)象、Window對(duì)象和Pane對(duì)象中使用。如果隨同Application對(duì)象使用Selection屬性,則該Selection對(duì)象表示活動(dòng)的選定內(nèi)容。
Selection. InsertAfter Text :="Next Text"
也可以隨同一個(gè)Window對(duì)象或Pane對(duì)象使用Selection屬性來返回一個(gè)在特定窗口或窗口窗格中Selection對(duì)象。以下的示例隨同Window對(duì)象使用Selection屬性,在文檔窗口“Document2”中插入文字。
Windows ("Document2"). Selection.InsertAfter Text :="New Text"
以下的示例隨同Pane對(duì)象使用Selection屬性,在主頁眉窗格中插入文字。
With ActiveWindow
.View. Type = wdPageView
.View. SeekView = wdSeekPrimaryHeader
.ActivePane. Selection. InsertAfter Text :="Header"
End With
在使用InsertAfter方法或InsertBefore方法之后,選定內(nèi)容隨之?dāng)U大,包括了新的文字。但是,用戶也可以使用Collapse方法將選定內(nèi)容折疊到它的起始或終止位置。以下的示例在選定內(nèi)容的文字之后插入單詞“Hello”,任何將選定內(nèi)容折疊到單詞“Hello”之后的插入點(diǎn)。
Selection. InsertAfter Text :="Hello"
Selection. Collapse Direction :=wdCollapseEnd
移動(dòng)和擴(kuò)展選定內(nèi)容
用戶可以通過幾種方法來移動(dòng)或擴(kuò)展由Selection對(duì)象所表示的選定內(nèi)容(例如,Move和MoveEnd)。以下的示例將選定內(nèi)容移動(dòng)到下一段的開頭。
Selection. MoveDown Unit :=wdParagraph, Count :=1, Extend :=wdMove
用戶也可以通過改變Selection對(duì)象的Start屬性及End屬性的值,或者通過MoveStart和MoveEnd方法來移動(dòng)或擴(kuò)展選定內(nèi)容。以下的示例通過把終止位置移動(dòng)到段尾來對(duì)選定內(nèi)容進(jìn)行擴(kuò)展。
Selection. MoveEnd Unit :=wdParagraph, Count :=1
因?yàn)樵谝粋€(gè)文檔窗口或窗格中只能有一個(gè)選定內(nèi)容,用戶也可以通過選定另一個(gè)對(duì)象來移動(dòng)選定內(nèi)容??梢允褂肧elect方法,選擇文檔的一項(xiàng)。在使用Select方法之后,就可以使用Selection屬性返回一個(gè)Selection對(duì)象。以下的示例選定了活動(dòng)文檔中的第一個(gè)單詞,然后把該單詞變?yōu)椤癏ello”。
ActiveDocument. Words(1). Select
Selection. Text = "Hello "
用戶也可以通過GoToNext方法、GoToPrevious方法或GoTo方法來移動(dòng)選定內(nèi)容。以下的示例將選定內(nèi)容移動(dòng)到文檔中的第四行。
Selection. GoTo What :=wdGoToLine, Which :=wdGoToAbsolute, Count :=4
以下的示例將選定內(nèi)容恰好移動(dòng)到活動(dòng)文檔中的下一個(gè)域之前。
Selection. GoToNext What :=wdGoToField
在Selection對(duì)象使用的對(duì)象
可以在Range對(duì)象和Document對(duì)象中使用的許多其他對(duì)象也能在Selection對(duì)象中使用,這使得用戶可以在一個(gè)選定內(nèi)容中控制操縱對(duì)象。要獲得能在Selection對(duì)象使用的對(duì)象的完整列表,請(qǐng)參閱“幫助”中的“Microsoft Word 對(duì)象(Selection)”,或者“Selection對(duì)象”。
以下的示例更新了選定內(nèi)容中各個(gè)域的結(jié)果。
If Selection. Fields. Count >= 1 Then Selection. Fields. Update
以下的示例將一節(jié)中的各個(gè)段落縮進(jìn)了0.5英寸。
Selection. Paragraphs. LeftIndent = InchesToPoints (0.5)
用戶可以使用For Each...Next語句在選定內(nèi)容中的單個(gè)對(duì)象上進(jìn)行循環(huán)操作,來代替對(duì)選定內(nèi)容中的所有對(duì)象逐個(gè)進(jìn)行控制操縱。以下的示例在選定內(nèi)容的每個(gè)段落上進(jìn)行循環(huán)操作,將找到的任何居中的段落變?yōu)樽髮?duì)齊。
For Each para In Selection. Paragraphs
If para. Alignment = wdAlignParagraphCenter Then para. Alignment = _
wdAlignParagraphLeft
Next para
以下的示例顯示出選定內(nèi)容中每個(gè)書簽的名字。
For Each aBook In Selection. Bookmarks
MsgBox aBook. Name
Next aBook
Selection對(duì)象的屬性和方法
本節(jié)突出介紹Selection對(duì)象的一些常用屬性和方法。
返回或設(shè)置選定內(nèi)容中的文字
可以使用Text屬性來返回或設(shè)置一個(gè)Selection對(duì)象的內(nèi)容。以下的示例返回所選的文字。
strText = Selection. Text
以下的示例將所選文字改為“Hello World”。
Selection. Text = "Hello World"
可以InsertBefore 方法或InsertBefore方法,在選定內(nèi)容之前或之后插入文字。以下的示例在選定內(nèi)容之前插入了文字。
Selection. InsertBefore Text :="And furthermore "
為許多文字設(shè)定格式
可以使用Font屬性來訪問設(shè)置字符格式的屬性和方法,也可以使用ParagraphFormat屬性來訪問設(shè)置段落格式的屬性和方法。以下的示例設(shè)置了選定內(nèi)容的字符和段落格式。
With Selection. Font
.Name = "Times New Roman"
.Size = 14
End With
Selection. ParagraphFormat. LeftIndent = InchesToPoints (0.5)
返回一個(gè)Range對(duì)象
如果一種方法或?qū)傩允窃赗ange對(duì)象而不是Selection對(duì)象中使用的(例如,CheckSpelling方法),那么可以使用Range屬性來從Selection對(duì)象返回一個(gè)Range對(duì)象。以下的示例對(duì)所選單詞進(jìn)行拼寫檢查。
Selection. Range. CheckSpelling
返回關(guān)于選定內(nèi)容的信息
可以使用Information屬性來返回關(guān)于選定內(nèi)容的信息。例如,用戶可以判斷當(dāng)前頁的頁碼、文檔的總頁數(shù),或是判斷選定內(nèi)容是否在一個(gè)頁眉或注腳中。Information屬性可取三十五種不同的常量(wdActiveEndPageNumber, wdNumberOfPagesInDocument 和 wdInHeaderFooter等等),用戶可以使用它們來返回關(guān)于選定內(nèi)容的不同信息。舉個(gè)例子,如果選定內(nèi)容處于一張表格中,那么以下的示例將顯示表格中的行號(hào)或列號(hào)。
If Selection. Information (wdWithInTable) = True Then
MsgBox "Columns = " & Selection. Information (wdMaximumNumberOfColumns) _
& vbCr & "Rows = " & Selection. Information (wdMaximumNumberOfRows)
End If
要獲得可以隨Information屬性一起使用的常量的完整列表和說明,請(qǐng)參閱“幫助”中的“Information屬性”。
判斷文字是否被選定
可以使用Type屬性來設(shè)置或返回選定內(nèi)容在文檔中被指定的方式。例如,可以使用wdSelectionBlock常量來判斷一個(gè)文字塊是否被選定。如果選定內(nèi)容是一個(gè)插入點(diǎn),那么以下的示例選定包含該插入點(diǎn)的段落。
If Selection. Type = wdSelectionIP Then
Selection. Paragraphs(1). Range. Select
End If
可以使用Find和Replacement對(duì)象來查找并且替換文檔中文字的特定范圍。Find對(duì)象可以在Selection對(duì)象或Range對(duì)象中使用(根據(jù)Find對(duì)象是從Selection對(duì)象還是從Range對(duì)象返回的,查找操作也略有不同)。
使用Selection.Find
如果是在Selection對(duì)象中使用Find對(duì)象,那么當(dāng)找到符合選擇條件的文本后選定內(nèi)容將會(huì)改變。以下的示例選定下一次出現(xiàn)的單詞“Hello”。如果在找到單詞“Hello”之前已經(jīng)到達(dá)了文檔的末尾,那么停止搜索。
With Selection. Find
.Forward = True
.Wrap = wdFindStop
.Text = "Hello"
.Execute
End With
Find對(duì)象包含與“查找”和“替換”對(duì)話框(在“編輯”菜單中)里的選項(xiàng)有關(guān)的屬性。用戶既可對(duì)Find對(duì)象的屬性逐一進(jìn)行設(shè)置,也可以隨同Execute方法使用參數(shù)來進(jìn)行設(shè)置,如果以下示例所示。
Selection. Find. Execute FindText :="Hello", Forward :=True, Wrap :=wdFindStop
使用Range.Find
如果是在Range對(duì)象中使用Find對(duì)象,選定內(nèi)容不會(huì)改變,但是當(dāng)找到符合選擇條件的文本時(shí)范圍會(huì)被重新定義。以下的示例確定活動(dòng)文檔中第一次出現(xiàn)的單詞“blue”的位置。如果查找操作成功,將重新定義范圍并且設(shè)置單詞“blue”的格式為粗體。
With ActiveDocument. Content. Find
.Text = "blue"
.Forward = True
.Execute
If .Found = True Then .Parent.Bold = True
End With
以下的示例執(zhí)行了和上述示例相同的操作,只是使用了Execute方法的參數(shù)。
Set myRange = ActiveDocument. Content
myRange. Find. Execute FindText :="blue", Forward :=True
If myRange. Find. Found = True Then myRange. Bold = True
使用Replacement對(duì)象
Replacement對(duì)象表示查找-替換操作的替換條件。Replacement對(duì)象的屬性和方法對(duì)應(yīng)于“查找”和“替換”對(duì)話框(在“編輯”菜單中)里的選項(xiàng)。
可以在Find對(duì)象中使用Replacement對(duì)象。以下的示例將所有出現(xiàn)單詞“hi”的地方替換為“hello”。當(dāng)找到符合選擇條件的文本時(shí),選定內(nèi)容將會(huì)改變,因?yàn)榇a從Selection對(duì)象返回Find對(duì)象。
With Selection. Find
.ClearFormatting
.Text = "hi"
.Replacement. ClearFormatting
.Replacement. Text = "hello"
.Execute Replace :=wdReplaceAll, Forward :=True, Wrap :=wdFindContinue
End With
以下的示例去除了活動(dòng)文檔中所有的粗體格式。Bold屬性對(duì)Find對(duì)象為True(真),對(duì)Replacement屬性為False(假)。要查找和替換格式,需設(shè)置查找和替換文本為空字符串(“”),并且設(shè)置Execute方法的Format參數(shù)為True(真)。選定內(nèi)容保持不變,因?yàn)榇a在Range對(duì)象中返回Find對(duì)象(Content屬性返回一個(gè)Range對(duì)象)。
With ActiveDocument. Content. Find
.ClearFormatting
.Font. Bold = True
With .Replacement
.ClearFormatting
.Font. Bold = False
End With
.Execute FindText :="", ReplaceWith :="", Format :=True, Replace :=wdReplaceAll
End With
Word對(duì)象模型包含了表格對(duì)象,也包含了表格中各種不同元素的對(duì)象??梢噪S同Document對(duì)象、Range對(duì)象、Selection對(duì)象使用Table屬性來返回Table集合。Table(index)返回了一個(gè)單獨(dú)的Table對(duì)象,在這里index是表格的索引號(hào)。索引號(hào)代表在選定內(nèi)容、范圍或文檔中表格的位置。以下的示例將選定內(nèi)容中的第一個(gè)表格轉(zhuǎn)換為文本。
If Selection. Tables. Count >= 1 Then
Selection. Tables(1). ConvertToText Separator :=wdSeparateByTabs
End If
可以隨同Column對(duì)象、 Range 對(duì)象、Row對(duì)象或 Selection對(duì)象使用Cells屬性來返回Cells集合。用戶可以通過使用Table對(duì)象的Cell方法或是索引Cells集合來獲得一個(gè)Cell對(duì)象。以下的兩條語句都能夠設(shè)置myCell為一個(gè)Cell 對(duì)象,該Cell對(duì)象代表活動(dòng)文檔中表格一的第一個(gè)單元格。
Set myCell = ActiveDocument. Tables(1). Cell(Row :=1, Column :=1)
Set myCell = ActiveDocument. Tables(1). Columns(1). Cells(1)
注釋 要在一個(gè)表格的一個(gè)單元格中插入文字,可以使用Text屬性、InsertAfter方法或者隨Range對(duì)象使用InsertBefore方法??梢噪SCell對(duì)象使用Range屬性來返回一個(gè)Range對(duì)象。以下的示例在表格一的每一個(gè)單元格中插入連續(xù)的單元格序號(hào)。
i = 1
For Each c In ActiveDocument. Tables(1). Range. Cells
c. Range. InsertBefore Text :="Cell " & i
i = i + 1
Next c
可以隨同Table對(duì)象、Range對(duì)象或Selection對(duì)象使用Column屬性來返回Columns集合。Columns(index)返回了一個(gè)單獨(dú)的Column對(duì)象,在這里index是索引號(hào)。以下的示例選擇了表格一的第一列。
ActiveDocument. Tables(1). Columns(1). Select
可以隨同Table對(duì)象、Range對(duì)象或Selection對(duì)象使用Row屬性來返回Rows集合。Rows(index)返回了一個(gè)單獨(dú)的Row對(duì)象,在這里index是索引號(hào)。以下的示例給表格一的第一行加底紋。
ActiveDocument. Tables(1). Rows(1). Shading. Texture = wdTexture10Percent
修改圖形表格的行與列
當(dāng)用戶試圖使用在一個(gè)圖形表格(或者任何表格,其中有兩個(gè)以上相鄰的單元格被合并,但是行與列沒有統(tǒng)一)中某一單獨(dú)的行或列時(shí),就可能出現(xiàn)一個(gè)運(yùn)行時(shí)錯(cuò)誤。如果活動(dòng)文檔中的第一個(gè)表格的每列含有不一致的行號(hào),以下的示例就會(huì)出錯(cuò)。
ActiveDocument. Tables(1). Rows(1). Borders.Enable = False
用戶可以首先使用SelectColumn或SelectRow方法來選定某個(gè)特定行或列的單元格,以此避免這樣的錯(cuò)誤。當(dāng)用戶選好了行或列,再隨Selection對(duì)象使用Cells屬性。以下的示例選定了活動(dòng)文檔中表格一的第一行。該示例使用Cells屬性返回所選的單元格(在第一行中所有單元格),以便可以刪除邊框。
If ActiveDocument. Tables(1). Uniform = False
ActiveDocument. Tables(1). Cell(1, 1). Select
With Selection
.SelectRow
.Cells. Borders. Enable = False
End With
End If
以下的示例選定了表格一的第一列。該示例使用了一個(gè)For Each...Next循環(huán)來向選定內(nèi)容(第一列的所有單元格)中的每個(gè)單元格添加文字。
If ActiveDocument. Tables(1). Uniform = False
ActiveDocument. Tables(1). Cell(1, 1). Select
Selection. SelectColumn
i = 1
For Each oCell In Selection. Cells
oCell.Range. Text = "Cell " & i
i = i + 1
Next oCell
End If
本節(jié)提供了關(guān)于運(yùn)用一些普通Word對(duì)象的信息和技巧。
使用HeaderFooter對(duì)象
HeaderFooter對(duì)象既可以表示一個(gè)頁眉也可以表示一個(gè)注腳。HeaderFooter對(duì)象是HeaderFooter集合的一個(gè)成員,它可以在Section對(duì)象中使用。Headers(index)或Footer(index)屬性返回了一個(gè)單獨(dú)的HeaderFooter對(duì)象,在這里index是WdHeaderFooterIndex常量的一個(gè)值。
以下的示例創(chuàng)建了一個(gè)Range對(duì)象(aRange),該對(duì)象表示活動(dòng)文檔第一節(jié)的主要注腳。在該示例設(shè)置Range對(duì)象之后,它刪除了已有的注腳文本。它還向注腳添加了AUTHOR域以及兩個(gè)表和FILENAME域。
Set oRange = ActiveDocument. Sections(1). Footers (wdHeaderFooterPrimary). Range
With oRange
.Delete
.Fields. Add Range :=oRange, Type :=wdFieldFileName, Text :="\p"
.InsertAfter Text :=vbTab
.InsertAfter Text :=vbTab
.Collapse Direction :=wdCollapseStart
.Fields.Add Range :=oRange, Type :=wdFieldAuthor
End With
注釋 PageNumbers集合僅僅能在HeaderFooter對(duì)象中使用??梢詫?duì)PageNumbers集合應(yīng)用Add方法來向一個(gè)頁眉或注腳添加頁碼。
使用Styles集合
Styles集合可以在Document對(duì)象中使用。以下的示例改變了活動(dòng)文檔中“標(biāo)題1”樣式的格式。
ActiveDocument. Styles (wdStyleHeading1). Font. Name = "Arial"
Styles集合不能在Template對(duì)象中使用。如果想修改一個(gè)模板中的樣式,可以使用OpenAsDocument方法按文檔來打開模板,這樣用戶就可以對(duì)樣式進(jìn)行修改。以下的示例改變了活動(dòng)文檔所附的模板中“標(biāo)題1”樣式的格式。
Set aDoc = ActiveDocument. AttachedTemplate. OpenAsDocument
With aDoc
.Styles(wdStyleHeading1). Font. Name = "Arial"
.Close SaveChanges :=wdSaveChanges
End With
指定CommandBars
在使用CommandBars集合(表示菜單欄和工具欄)之前,可以使用CustomizationContext屬性來設(shè)置保存著對(duì)菜單欄和工具欄的更改的Template或Document對(duì)象。以下的示例給“格式”工具欄添加了“雙下劃線”命令。因?yàn)樽远x更改保存在Normal模板中,所有的文檔都會(huì)受到影響。
CustomizationContext = NormalTemplate
CommandBars ("Formatting"). Controls. Add Type :=msoControlButton, _
ID :=60, Before :=7
要了解關(guān)于菜單欄和工具欄的更改范圍的更多信息,請(qǐng)參閱第八章,“菜單欄和工具欄”。
使用Dialogs集合
可以使用Dialogs屬性返回Dialogs集合,該集合表示內(nèi)置Word對(duì)話框(例如,“打開”和“保存”對(duì)話框等)。用戶不能新建內(nèi)置對(duì)話框,也不能向Dialogs集合添加內(nèi)置對(duì)話框。要了解關(guān)于創(chuàng)建用ActiveX控件創(chuàng)建自定義對(duì)話框的內(nèi)容,請(qǐng)參閱第十二章,“ActiveX 控件和對(duì)話框”。
返回MailMerge和MailMerge對(duì)象
可以使用Document對(duì)象的MailMerge屬性來返回一個(gè)MailMerge對(duì)象。無論所指定的文檔是否是一個(gè)郵件合并文檔,都可以使用MailMerge屬性。在用戶使用Execute方法執(zhí)行合并之前,可以使用State屬性來確定郵件合并操作的狀態(tài)。如果活動(dòng)文檔是附加了數(shù)據(jù)源的主文檔,那么以下的示例將執(zhí)行郵件合并。
Set myMerge = ActiveDocument.MailMerge
If myMerge. State = wdMainAndDataSource Then myMerge. Execute
使用Document對(duì)象的Envelope屬性可以返回一個(gè)Envelope對(duì)象。無論用戶是否向所指定的文檔添加了一個(gè)信封,都可以使用Envelope對(duì)象。但是,如果用戶使用以下屬性而沒有向文檔添加信封,那么會(huì)出現(xiàn)錯(cuò)誤:Address屬性, AddressFromLeft屬性, AddressFromTop屬性,F(xiàn)eedSource屬性, ReturnAddress屬性,ReturnAddressFromLeft屬性, ReturnAddressFromTop屬性或 UpdateDocument屬性。
以下的示例使用On Error GoTo語句來捕獲用戶沒有向活動(dòng)文檔添加信封的錯(cuò)誤。但是,如果用戶已經(jīng)向文檔添加了信封,將顯示收件人地址。
On Error GoTo ErrorHandler
MsgBox ActiveDocument. Envelope. Address
ErrorHandler:
If Err = 5852 Then MsgBox "Envelope is not in the specified document"
在文檔中添加和編輯域
用戶可以通過對(duì)Field集合應(yīng)用Add方法來給文檔添加域。以下的示例添加了一個(gè)DATE域來替換選定內(nèi)容。
ActiveDocument. Fields. Add Range:=Selection. Range, Type :=wdFieldDate
在添加一個(gè)域之后,用戶可以通過使用Result或Code屬性來返回或設(shè)置域結(jié)果和域代碼,這兩種屬性都可以返回一個(gè)Range對(duì)象。以下的示例更改選定內(nèi)容的第一個(gè)域代碼,更新該域,然后顯示域結(jié)果。
If Selection. Fields. Count >= 1 Then
With Selection. Fields (1)
.Code. Text = "CREATEDATE \*MERGEFORMAT"
.Update
MsgBox . Result. Text
End With
End If
InlineShape對(duì)象同Shape對(duì)象的對(duì)比
一個(gè)Shape對(duì)象代表圖形層的一個(gè)對(duì)象,諸如自選圖形、任意多邊形、OLE對(duì)象、ActiveX控件、圖片等。Shape對(duì)象鎖定于文本范圍內(nèi),但是能夠任意移動(dòng),使用戶可以將它們定位于頁面的任何位置。要了解運(yùn)用Shape對(duì)象的信息,請(qǐng)參閱第十章,“形狀和圖形層”,也可以參閱“幫助”中的“Shape對(duì)象”。
一個(gè)InlineShape對(duì)象代表文檔文字層的一個(gè)對(duì)象。一個(gè)嵌入式形狀可能是圖片、OLE對(duì)象或ActiveX控件??梢詫nlineShape對(duì)象視為字符,并將其象字符一樣放在一行文本中。要了解關(guān)于InlineShape對(duì)象的信息,請(qǐng)參閱“幫助”中的“InlineShape集合對(duì)象”或“InlineShape對(duì)象”。
在Word窗體中使用FormField對(duì)象
用戶可以創(chuàng)建一個(gè)Word在線窗體,該窗體包含復(fù)選框、文本文本框和下拉式列表框。使用“窗體”工具欄可以插入這些窗體元素。對(duì)應(yīng)的Visual Basic對(duì)象是CheckBox, TextInput, 和DropDown。所有這些對(duì)象都可以在FormFields集合的任何一個(gè)FormField對(duì)象中使用;但是,用戶應(yīng)當(dāng)使用按照窗體域的類型使用相應(yīng)的對(duì)象。例如,以下命令從活動(dòng)文檔的“Check1”域中選擇復(fù)選框。
ActiveDocument. FormFields ("Check1").CheckBox. Value = True
除了“窗體”工具欄中的窗體元素之外,用戶還可以向一個(gè)在線窗體添加ActiveX控件。使用“控件工具箱”可以插入ActiveX控件。用戶可以把控件插入文字層或圖形層;控件將分別由一個(gè)InlineShape 對(duì)象或一個(gè)Shape對(duì)象來表示。要了解關(guān)于運(yùn)用ActiveX控件的更多內(nèi)容,請(qǐng)參閱第十二章,“ActiveX控件和對(duì)話框”。
可以通過在用戶代碼中包含判斷語句來判斷由一個(gè)表達(dá)式返回的特定對(duì)象或者一個(gè)變量所引用的對(duì)象是否有效,以此避免代碼在運(yùn)行時(shí)的錯(cuò)誤。本節(jié)討論了一些檢查表達(dá)式返回值或變量保存值有效性的技術(shù)。
用戶可以隨同一個(gè)變量或表達(dá)式使用TypeName函數(shù)來確定對(duì)象的類型。如果Selection. NextField返回了一個(gè)Field對(duì)象,那么以下的示例將在狀態(tài)欄中顯示一條消息。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Word VBA參考教程(摘錄)
Word VBA教程:處理 Range對(duì)象
Word VBA 學(xué)習(xí)交流(五)
處理Selection對(duì)象和Range對(duì)象——Word VBA中重要的兩個(gè)對(duì)象
vba設(shè)置word文檔的格式
Word文檔中Range區(qū)域的擴(kuò)展
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服