乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Microsoft Word 對(duì)象

       zhanglei1371 2012-09-20
       

      Microsoft Word 對(duì)象

      目 錄

      Visual Basic支持一個(gè)對(duì)象集合,該集合中的對(duì)象直接對(duì)應(yīng)于Microsoft Word 97中的元素,并且通過(guò)用戶界面,用戶熟悉這些元素中的絕大多數(shù)。例如,Document 對(duì)象代表了一個(gè)打開(kāi)的文檔,Bookmark對(duì)象代表了一個(gè)文檔中的書(shū)簽,而Selection對(duì)象則代表了在一個(gè)文檔窗口窗格中的選定內(nèi)容。在Word中,每一類元素-文檔、表格、段落、書(shū)簽、域等等-都可以用Visual Basic的對(duì)象來(lái)表示。要在Word中自動(dòng)執(zhí)行任務(wù),可以使用這些對(duì)象的方法和屬性。

      關(guān)于理解和使用Microsoft Office 97對(duì)象模型的一般性內(nèi)容,請(qǐng)參閱本書(shū)的第二章“理解對(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幫助,必須在安裝過(guò)程中選擇“自定義”的安裝方式,并且為Word選中“Visual Basic在線幫助”復(fù)選框。否則,安裝程序不會(huì)安裝Visual Basic幫助。如果用戶已經(jīng)安裝好了Word,那么可以再次運(yùn)行Setup程序來(lái)安裝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的目錄和索引。

       

      運(yùn)用Application 對(duì)象

      在用戶啟動(dòng)一個(gè)Word 時(shí)段的同時(shí),也創(chuàng)建了一個(gè)Application對(duì)象。用戶可以使用Application 對(duì)象的屬性或方法來(lái)控制或返回應(yīng)用程序范圍內(nèi)的特性、控制應(yīng)用程序窗口的外觀或者調(diào)整Word 對(duì)象模型的其他方面。可以使用Application屬性來(lái)返回Word Application 對(duì)象。以下的示例從視圖狀態(tài)切換到打印預(yù)覽狀態(tài)。

      Application. PrintPreview = True

      Application對(duì)象的一些屬性控制著應(yīng)用程序的外觀。例如,如果DisplayStatusBar屬性為True(真),那么狀態(tài)欄是可見(jiàn)的,如果WindowState屬性值為wdWindowStateMaximize,那么應(yīng)用程序窗口處于最大化狀態(tài)。以下的示例設(shè)置了屏幕上應(yīng)用程序窗口的大小。

      With Application

      .WindowState = wdWindowStateNormal

      .Height = 450

      .Width = 600

      End With

      Application對(duì)象的屬性也可以訪問(wèn)處于對(duì)象層次中較低級(jí)的對(duì)象,比如Windows集合(代表了當(dāng)前所有打開(kāi)的窗口)和Documents集合(代表了當(dāng)前所有打開(kāi)的文檔)。用戶可以使用屬性,有時(shí)候也叫做訪問(wèn)者,從對(duì)象層次中最高一級(jí)的Application對(duì)象向下訪問(wèn)到較低級(jí)的對(duì)象(Document對(duì)象、Window對(duì)象、 Selection對(duì)象等等)。可以使用以下兩個(gè)示例之一來(lái)打開(kāi)MyDoc.doc。

      Application. Documents. Open FileName :="C:\DOCS\MYDOC.DOC"

      Documents. Open FileName :="C:\DOCS\MYDOC.DOC"

      因?yàn)镈ocument屬性是共用的,所以Application屬性是可選的。共用屬性和方法無(wú)需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屬性是共用的,所以在本示例中無(wú)需Application屬性)。

      With Application.Options

      .AllowDragAndDrop = True

      .ConfirmConversions = False

      .MeasurementUnit = wdPoints

      End With

      運(yùn)用Document對(duì)象

      當(dāng)用戶在Word中打開(kāi)或創(chuàng)建一個(gè)文件的同時(shí),也創(chuàng)建了一個(gè)Document對(duì)象。用戶可以使用Document對(duì)象或Documents集合的屬性或方法來(lái)打開(kāi)、創(chuàng)建、保存、激活或者關(guān)閉文件。

      返回Document對(duì)象

      用戶可以使用語(yǔ)法Documents (index)來(lái)返回作為一個(gè)Document對(duì)象的任何打開(kāi)的文檔,在這里index是該文檔的名字或索引號(hào)。在以下的示例中,變量myDoc包含一個(gè)Document對(duì)象,該對(duì)象代表名為“Report.doc”的打開(kāi)的文檔。

      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ā)生改變,所以最好使用文檔的名字來(lái)對(duì)Documents集合中的Document對(duì)象進(jìn)行索引。

      除了通過(guò)文檔的名字或索引號(hào)來(lái)引用文檔,還可以使用ActiveDocument屬性來(lái)返回一個(gè)引用活動(dòng)文檔(當(dāng)前著眼的文檔)的Document對(duì)象。以下的示例顯示產(chǎn)活動(dòng)文檔的名字;如果沒(méi)有打開(kāi)的文檔,則該示例顯示一條消息。

      If Documents. Count >= 1 Then

      MsgBox ActiveDocument. Name

      Else

      MsgBox "No documents are open"

      End If

      打開(kāi)文檔

      要打開(kāi)一個(gè)已經(jīng)存在的文檔,可以使用Open方法。Open方法應(yīng)用于通過(guò)Document屬性返回的Documents集合。以下的示例打開(kāi)了文件Test.doc(從當(dāng)前文件夾)并且啟動(dòng)了更改跟蹤。

      Set myDoc = Documents. Open (FileName :="TEST.DOC")

      myDoc. TrackRevisions = True

      注意到在上例中Open方法的返回值是一個(gè)Document對(duì)象,該對(duì)象表示剛被打開(kāi)的文檔。在此示例中的文件名不包含路徑;因此,是假定了該文件在當(dāng)前的文件夾中。但這會(huì)導(dǎo)致出現(xiàn)一個(gè)運(yùn)行時(shí)錯(cuò)誤,因?yàn)橐坏┯脩魟?chuàng)建了與當(dāng)前文件夾不同的文件夾,Visual Basic就再也找不到該文件了。但是,用戶可以通過(guò)指明完整的路徑,就如同下表所示的那樣,來(lái)確保打開(kāi)正確的文件。

      操作系統(tǒng)

      FileName參數(shù)

      Windows

      FileName :="C:\Documents\Temporary File.doc"

      Macintosh

      FileName :="Hard Drive:Documents:Temporary File"

      如果用戶的宏只用于一種文件系統(tǒng),那么可以在FileName參數(shù)中指定路徑分隔符(“\”或者“:”),就如同上表所示的那樣。以下示例顯示了與文件系統(tǒng)無(wú)關(guān)的代碼,可以用來(lái)打開(kāi)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)前文件夾。

      如果所指定的文件名既沒(méi)有在當(dāng)前文件夾(如果沒(méi)有指定路徑)出現(xiàn)也沒(méi)有在指定的文件夾(如果指定了路徑)中出現(xiàn),那么就會(huì)發(fā)生錯(cuò)誤。以下的示例使用FileSearch對(duì)象的屬性和方法來(lái)判斷名為“Test.doc”的文件是否存在于用戶的默認(rèn)文檔文件夾中。如果找到了該文件(FoundFiles. Count = 1),那么就打開(kāi)它;否則,顯示一條消息。

      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

      也可以允許用戶選擇要打開(kāi)的文件,而不是定死Open方法的FileName參數(shù)值。如同以下示例所示的那樣,可以使用帶有wdDialogFileOpen常量的Dialogs屬性來(lái)返回一個(gè)Dialog 對(duì)象,該對(duì)象表示“打開(kāi)”對(duì)話框(在“文件”菜單中)。Show方法可以顯示并且執(zhí)行在“打開(kāi)”對(duì)話框中完成的動(dòng)作。

      Dialogs (wdDialogFileOpen). Show

      Display 方法只是用來(lái)顯示特定的對(duì)話框而不作任何更多的操作。以下的示例檢查Display方法的返回值。如果用戶單擊“確定”來(lái)關(guān)閉對(duì)話框,返回值-1并且打開(kāi)所選擇的文件,該文件的名字保存在變量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è)特殊的文檔是否打開(kāi),可以使用一條For Each…Next語(yǔ)句來(lái)對(duì)Documents集合進(jìn)行列舉。如果名為“Sample.doc”的文檔已經(jīng)被打開(kāi)了,以下的示例就激活它;如果它尚未被打開(kāi),則該示例會(huì)打開(kāi)它。

      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屬性來(lái)確定當(dāng)前打開(kāi)文檔的數(shù)目。Count屬性應(yīng)用于Documents集合,可以使用Document屬性返回該集合。如果沒(méi)有已打開(kāi)的文檔,以下的示例會(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"

      在文檔被保存之后,用戶可以使用它的文檔名來(lái)調(diào)整Document對(duì)象。以下的示例創(chuàng)建了一個(gè)新文檔并且立刻把它保存為“1996 Sales.doc”。然后,該示例使用新名字來(lái)作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ì)話框來(lái)提示用戶為該文件取名。要保存所有打開(kāi)的文檔,可以對(duì)Documents集合應(yīng)用Save方法。以下的示例保存了所有打開(kāi)的文檔,但沒(méi)有提示用戶為文件取名。

      Documents. Save NoPrompt :=True

      激活一個(gè)文檔

      要使另一個(gè)文檔成為活動(dòng)文檔,可以對(duì)Document對(duì)象應(yīng)用Activate方法。以下的示例激活了打開(kāi)的文檔(MyDocument.doc)。

      Documents ("MyDocument.doc"). Activate

      以下的示例打開(kāi)了兩個(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

      要通過(guò)程序來(lái)設(shè)置那些也可以在“打印”對(duì)話框(在“文件”菜單中)里進(jìn)行設(shè)置的打印選項(xiàng),可以使用PrintOut 方法的參數(shù)來(lái)實(shí)現(xiàn)。用戶可以使用Options 對(duì)象的屬性來(lái)設(shè)置打印選項(xiàng),這些選項(xiàng)也可以在“選項(xiàng)”對(duì)話框(在“工具”菜單中)“打印”一表里進(jìn)行設(shè)置。以下示例設(shè)置活動(dòng)文檔打印隱藏的文字,并且只打印出前三頁(yè)。

      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)行過(guò)修改,Word會(huì)顯示出一條消息來(lái)詢問(wèn)用戶是否要保存所進(jìn)行的修改。用戶可以隨SaveChanges參數(shù)使用wdDoNotSaveChanges或 wdSaveChanges常量來(lái)使該提示不再出現(xiàn)。以下的示例保存并且關(guān)閉了Sales.doc。

      Documents ("Sales.doc"). Close SaveChanges :=wdSaveChanges

      要關(guān)閉所有已打開(kāi)的文檔,可以對(duì)Documents集合應(yīng)用Close方法。以下的示例沒(méi)有保存修改就關(guān)閉了所有的文檔。

      Documents. Close SaveChanges :=wdDoNotSaveChanges

      訪問(wèn)文檔中的對(duì)象

      用戶可以從Document對(duì)象來(lái)訪問(wèn)返回對(duì)象的一系列屬性和方法。要查看在Document對(duì)象中所能使用的對(duì)象的層次關(guān)系圖,可以參閱“幫助”中的“Microsoft Word對(duì)象(Documents)”。例如,Table屬性,它能夠返回一個(gè)Table對(duì)象的集合,可以在Document對(duì)象中使用。隨著一個(gè)集合對(duì)象使用的Count屬性能夠判斷在該集合中所包含的項(xiàng)數(shù)。以下的示例顯示一條消息來(lái)指出在活動(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ì)象中訪問(wèn)的集合對(duì)象的Add方法來(lái)向文檔添加諸如腳注、備注或表格這樣的對(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 方法”。

       

      運(yùn)用Range對(duì)象

      當(dāng)使用Visual Basic時(shí)一個(gè)常見(jiàn)的任務(wù)就是在文檔中指定一塊區(qū)域,然后對(duì)它進(jìn)行處理,比如插入文字或應(yīng)用格式等。例如,用戶可能想編寫(xiě)一個(gè)宏,來(lái)對(duì)文檔中某個(gè)部分里的某個(gè)單詞或短語(yǔ)進(jìn)行定位。那就可以使用一個(gè)Range對(duì)象來(lái)表示想在其中搜索特定單詞或短語(yǔ)的部分文檔。在確定Range對(duì)象后,用戶能夠應(yīng)用該對(duì)象的方法和屬性來(lái)修改相應(yīng)范圍中的內(nèi)容。

      一個(gè)Range對(duì)象代表了文檔中的一塊連續(xù)的區(qū)域。每一個(gè)Range對(duì)象都由一個(gè)起始字符位置和一個(gè)終止字符位置來(lái)定義。與用戶在文檔中使用書(shū)簽的方法類似,可以在Visual Basic中使用Range對(duì)象來(lái)識(shí)別一個(gè)文檔的特定部分。一個(gè)Range對(duì)象既可以和插入點(diǎn)一樣小,也可以和整個(gè)文檔一樣大。但是,與書(shū)簽不同,Range對(duì)象僅僅在定義它的過(guò)程正在運(yùn)行時(shí)才存在。

      Range對(duì)象同選定內(nèi)容相互獨(dú)立;也就是說(shuō),可以定義和修改范圍而不會(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ì)象來(lái)代替Selection對(duì)象

      宏錄制器會(huì)經(jīng)常創(chuàng)建一個(gè)使用Selection屬性來(lái)控制操縱Selection對(duì)象的宏。但是,用戶通??梢杂靡粋€(gè)或幾個(gè)Range對(duì)象來(lái)以很少的命令完成相同的任務(wù)。以下的示例是用宏錄制器創(chuàng)建的。該宏對(duì)文檔中的前兩個(gè)單詞進(jìn)行加粗。

      Selection. HomeKey Unit :=wdStory

      Selection. MoveRight Unit :=wdWord, Count:=2, Extend :=wdExtend

      Selection. Font.Bold = wdToggle

      以下的示例沒(méi)有使用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

      以下的示例沒(méi)有使用Selection對(duì)象就完成了上述示例中的同樣任務(wù)。

      Set myRange = ActiveDocument. Range(Start:=0, End :=ActiveDocument. Words(2). End)

      myRange. Bold = True

      myRange. InsertParagraphAfter

      前面的兩個(gè)示例改變了活動(dòng)文檔中的格式但沒(méi)有改變選定內(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語(yǔ)句來(lái)設(shè)置一個(gè)等價(jià)于Range對(duì)象的變量。但是,如果用戶需要在一個(gè)對(duì)象上執(zhí)行一次操作,那么就沒(méi)有必要將對(duì)象保存到變量中。用戶可以使用一條確定范圍并且改變Bold屬性的命令來(lái)取得同樣的結(jié)果;如以下示例所示。

      ActiveDocument. Range(Start :=0, End :=10). Bold = True

      和書(shū)簽類似,一個(gè)范圍能夠在文檔中橫跨一組字符,也可以標(biāo)記其中的一個(gè)位置。在以下的示例中,Range對(duì)象的起始和終止點(diǎn)相同,并且該范圍內(nèi)不包含任何文字。該示例在活動(dòng)文檔的起始處插入文字。

      ActiveDocument. Range(Start :=0, End :=0). InsertBefore Text :="Hello "

      用戶可以通過(guò)使用如上述示例所示的字符位置數(shù)字,或者隨同Selection對(duì)象、Bookmark對(duì)象或Range對(duì)象使用Start屬性和End屬性,來(lái)定義一個(gè)范圍的起始和終止位置。以下示例創(chuàng)建了一個(gè)Range對(duì)象,來(lái)表示活動(dòng)文檔中的第三和第四個(gè)句子。

      Set myDoc = ActiveDocument

      Set myRange = myDoc. Range (Start :=myDoc. Sentences(3). Start, _

      End :=myDoc. Sentences (4). End)

      技巧 Range對(duì)象在文檔中的表示不可見(jiàn)。但是,用戶可以使用Select方法來(lái)選定一個(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屬性來(lái)返回一個(gè)Range對(duì)象

      在許多對(duì)象都可以使用Range屬性-例如,Paragraph對(duì)象、Bookmark對(duì)象、Endnote對(duì)象以及Cell對(duì)象-Range屬性用來(lái)返回一個(gè)Range對(duì)象。以下的示例返回了一個(gè)Range對(duì)象,該對(duì)象表示活動(dòng)文檔的第一段。

      Set myRange = ActiveDocument.Paragraphs (1). Range

      在創(chuàng)建了對(duì)Range對(duì)象的引用之后,用戶可以使用它的任何屬性或方法來(lái)修改該范圍。以下的示例復(fù)制了活動(dòng)文檔中的第一段。

      Set myRange = ActiveDocument. Paragraphs (1). Range

      myRange. Copy

      以下的示例復(fù)制了活動(dòng)文檔中表格一的第一行。

      ActiveDocument. Tables(1). Rows(1). Range. Copy

      以下的示例顯示了活動(dòng)文檔中由第一個(gè)書(shū)簽標(biāo)記的文字。Range屬性可以在Bookmark對(duì)象中使用。

      MsgBox ActiveDocument. Bookmarks (1). Range. Text

      如果用戶需要對(duì)同一個(gè)Range對(duì)象應(yīng)用多種屬性或方法,那么可以使用With…End With語(yǔ)句。以下的示例為活動(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ì)象,可以使用它們來(lái)修改以下類型的文檔元素:字符、單詞、句子、段落以及節(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來(lái)使用這些屬性時(shí),就返回一個(gè)同名的集合-例如,Paragraphs屬性返回Paragraphs集合。但是,如果用戶使用index來(lái)確定在某個(gè)集合中的一項(xiàng),就返回上述表格第二列中的對(duì)象-例如,Words(1)返回一個(gè)Range對(duì)象。用戶可以使用任何范圍屬性或方法來(lái)修改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è)示例所示。

      1. 本例設(shè)置活動(dòng)文檔中第一個(gè)單詞的大小寫(xiě)。

        ActiveDocument. Words(1). Case = wdUpperCase

      2. 本例設(shè)置選中的第一節(jié)的下邊距為0.5英寸。

        Selection.Sections(1). PageSetup. BottomMargin = InchesToPoints(0.5)

      3. 本例設(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ì)象起始于第二段的開(kāi)頭,到第四段之后結(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ì)象起始于第二段的開(kāi)頭,到第三段之后結(jié)束。ParagraphFormat屬性用來(lái)訪問(wèn)諸如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屬性來(lái)返回或設(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屬性來(lái)取得設(shè)置字符格式的屬性和方法,而使用ParagraphFormat屬性來(lái)取得設(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方法來(lái)重新定義一個(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方法”。

      用戶也可以通過(guò)改變Start屬性和End屬性的值,或者使用MoveStart方法或MoveEnd方法來(lái)重新定義一個(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)

      可以通過(guò)幾種不同的方法在范圍內(nèi)的段落中進(jìn)行循環(huán)。本節(jié)包含使用For Each...Next語(yǔ)句和Next屬性及方法在范圍內(nèi)的段落中進(jìn)行循環(huán)的內(nèi)容。也可以使用同樣的技術(shù)在范圍內(nèi)的字符、單詞或句子中進(jìn)行循環(huán)。

      使用For Each...Next語(yǔ)句

      建議在范圍內(nèi)進(jìn)行段落循環(huán)時(shí)使用For Each...Next語(yǔ)句,另外建議在集合內(nèi)進(jìn)行循環(huán)時(shí)也同樣使用該語(yǔ)句。以下的示例在獲得文檔的前五段中進(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)。可以使用Selection屬性來(lái)表示選定內(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)。以下的示例說(shuō)明了怎樣在范圍的單詞中進(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ì)象賦值給變量

      可以通過(guò)幾種途徑來(lái)把一個(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,它沒(méi)有改變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è)文檔包含了正文文字、腳注和頁(yè)眉,則該文檔就包含了文檔正文部分、腳注部分和頁(yè)眉部分。

      可以使用StoryType屬性來(lái)返回指定范圍、選定內(nèi)容或書(shū)簽的文檔構(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è)過(guò)程部分范圍??梢允褂肗extStoryRange方法來(lái)返回以后的文檔構(gòu)成部分。以下的示例搜索活動(dòng)文檔中的每個(gè)文檔過(guò)程部分來(lái)找出文字“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

       

      運(yùn)用Selection對(duì)象

      當(dāng)用戶使用Word中的某個(gè)文檔時(shí),通常會(huì)先選擇文字,然后再執(zhí)行一項(xiàng)操作,比如設(shè)定以有文字的格式,或是鍵入新文字。在Visual Basic中,通常沒(méi)有必要在修改文字之前先選定該文字;而是創(chuàng)建一個(gè)表示文檔特定部分的Range對(duì)象并對(duì)其進(jìn)行操作。但是,當(dāng)用戶想要自己的代碼對(duì)選定內(nèi)容作出響應(yīng)或是改變選定內(nèi)容,就可以通過(guò)Selection對(duì)象來(lái)完成任務(wù)。

      可以使用Selection屬性來(lái)返回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屬性來(lái)返回一個(gè)在特定窗口或窗口窗格中Selection對(duì)象。以下的示例隨同Window對(duì)象使用Selection屬性,在文檔窗口“Document2”中插入文字。

      Windows ("Document2"). Selection.InsertAfter Text :="New Text"

      以下的示例隨同Pane對(duì)象使用Selection屬性,在主頁(yè)眉窗格中插入文字。

      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)容

      用戶可以通過(guò)幾種方法來(lái)移動(dòng)或擴(kuò)展由Selection對(duì)象所表示的選定內(nèi)容(例如,Move和MoveEnd)。以下的示例將選定內(nèi)容移動(dòng)到下一段的開(kāi)頭。

      Selection. MoveDown Unit :=wdParagraph, Count :=1, Extend :=wdMove

      用戶也可以通過(guò)改變Selection對(duì)象的Start屬性及End屬性的值,或者通過(guò)MoveStart和MoveEnd方法來(lái)移動(dòng)或擴(kuò)展選定內(nèi)容。以下的示例通過(guò)把終止位置移動(dòng)到段尾來(lái)對(duì)選定內(nèi)容進(jìn)行擴(kuò)展。

      Selection. MoveEnd Unit :=wdParagraph, Count :=1

      因?yàn)樵谝粋€(gè)文檔窗口或窗格中只能有一個(gè)選定內(nèi)容,用戶也可以通過(guò)選定另一個(gè)對(duì)象來(lái)移動(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 "

      用戶也可以通過(guò)GoToNext方法、GoToPrevious方法或GoTo方法來(lái)移動(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語(yǔ)句在選定內(nèi)容中的單個(gè)對(duì)象上進(jìn)行循環(huán)操作,來(lái)代替對(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è)書(shū)簽的名字。

      For Each aBook In Selection. Bookmarks

      MsgBox aBook. Name

      Next aBook

      Selection對(duì)象的屬性和方法

      本節(jié)突出介紹Selection對(duì)象的一些常用屬性和方法。

      返回或設(shè)置選定內(nèi)容中的文字

      可以使用Text屬性來(lái)返回或設(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屬性來(lái)訪問(wèn)設(shè)置字符格式的屬性和方法,也可以使用ParagraphFormat屬性來(lái)訪問(wèn)設(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屬性來(lái)從Selection對(duì)象返回一個(gè)Range對(duì)象。以下的示例對(duì)所選單詞進(jìn)行拼寫(xiě)檢查。

      Selection. Range. CheckSpelling

      返回關(guān)于選定內(nèi)容的信息

      可以使用Information屬性來(lái)返回關(guān)于選定內(nèi)容的信息。例如,用戶可以判斷當(dāng)前頁(yè)的頁(yè)碼、文檔的總頁(yè)數(shù),或是判斷選定內(nèi)容是否在一個(gè)頁(yè)眉或注腳中。Information屬性可取三十五種不同的常量(wdActiveEndPageNumber, wdNumberOfPagesInDocument 和 wdInHeaderFooter等等),用戶可以使用它們來(lái)返回關(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屬性一起使用的常量的完整列表和說(shuō)明,請(qǐng)參閱“幫助”中的“Information屬性”。

      判斷文字是否被選定

      可以使用Type屬性來(lái)設(shè)置或返回選定內(nèi)容在文檔中被指定的方式。例如,可以使用wdSelectionBlock常量來(lái)判斷一個(gè)文字塊是否被選定。如果選定內(nèi)容是一個(gè)插入點(diǎn),那么以下的示例選定包含該插入點(diǎn)的段落。

      If Selection. Type = wdSelectionIP Then

      Selection. Paragraphs(1). Range. Select

      End If

       

      運(yùn)用Find和Replacement對(duì)象

      可以使用Find和Replacement對(duì)象來(lái)查找并且替換文檔中文字的特定范圍。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ù)來(lái)進(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

       

      運(yùn)用Table、Column、Row和Cell對(duì)象

      Word對(duì)象模型包含了表格對(duì)象,也包含了表格中各種不同元素的對(duì)象。可以隨同Document對(duì)象、Range對(duì)象、Selection對(duì)象使用Table屬性來(lái)返回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屬性來(lái)返回Cells集合。用戶可以通過(guò)使用Table對(duì)象的Cell方法或是索引Cells集合來(lái)獲得一個(gè)Cell對(duì)象。以下的兩條語(yǔ)句都能夠設(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屬性來(lái)返回一個(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屬性來(lái)返回Columns集合。Columns(index)返回了一個(gè)單獨(dú)的Column對(duì)象,在這里index是索引號(hào)。以下的示例選擇了表格一的第一列。

      ActiveDocument. Tables(1). Columns(1). Select

      可以隨同Table對(duì)象、Range對(duì)象或Selection對(duì)象使用Row屬性來(lái)返回Rows集合。Rows(index)返回了一個(gè)單獨(dú)的Row對(duì)象,在這里index是索引號(hào)。以下的示例給表格一的第一行加底紋。

      ActiveDocument. Tables(1). Rows(1). Shading. Texture = wdTexture10Percent

      修改圖形表格的行與列

      當(dāng)用戶試圖使用在一個(gè)圖形表格(或者任何表格,其中有兩個(gè)以上相鄰的單元格被合并,但是行與列沒(méi)有統(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方法來(lái)選定某個(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)來(lái)向選定內(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

       

      運(yùn)用其他普通對(duì)象

      本節(jié)提供了關(guān)于運(yùn)用一些普通Word對(duì)象的信息和技巧。

      使用HeaderFooter對(duì)象

      HeaderFooter對(duì)象既可以表示一個(gè)頁(yè)眉也可以表示一個(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方法來(lái)向一個(gè)頁(yè)眉或注腳添加頁(yè)碼。

      使用Styles集合

      Styles集合可以在Document對(duì)象中使用。以下的示例改變了活動(dòng)文檔中“標(biāo)題1”樣式的格式。

      ActiveDocument. Styles (wdStyleHeading1). Font. Name = "Arial"

      Styles集合不能在Template對(duì)象中使用。如果想修改一個(gè)模板中的樣式,可以使用OpenAsDocument方法按文檔來(lái)打開(kāi)模板,這樣用戶就可以對(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屬性來(lái)設(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ì)話框(例如,“打開(kāi)”和“保存”對(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屬性來(lái)返回一個(gè)MailMerge對(duì)象。無(wú)論所指定的文檔是否是一個(gè)郵件合并文檔,都可以使用MailMerge屬性。在用戶使用Execute方法執(zhí)行合并之前,可以使用State屬性來(lái)確定郵件合并操作的狀態(tài)。如果活動(dòng)文檔是附加了數(shù)據(jù)源的主文檔,那么以下的示例將執(zhí)行郵件合并。

      Set myMerge = ActiveDocument.MailMerge

      If myMerge. State = wdMainAndDataSource Then myMerge. Execute

      使用Document對(duì)象的Envelope屬性可以返回一個(gè)Envelope對(duì)象。無(wú)論用戶是否向所指定的文檔添加了一個(gè)信封,都可以使用Envelope對(duì)象。但是,如果用戶使用以下屬性而沒(méi)有向文檔添加信封,那么會(huì)出現(xiàn)錯(cuò)誤:Address屬性, AddressFromLeft屬性, AddressFromTop屬性,F(xiàn)eedSource屬性, ReturnAddress屬性,ReturnAddressFromLeft屬性, ReturnAddressFromTop屬性或 UpdateDocument屬性。

      以下的示例使用On Error GoTo語(yǔ)句來(lái)捕獲用戶沒(méi)有向活動(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"

      在文檔中添加和編輯域

      用戶可以通過(guò)對(duì)Field集合應(yīng)用Add方法來(lái)給文檔添加域。以下的示例添加了一個(gè)DATE域來(lái)替換選定內(nèi)容。

      ActiveDocument. Fields. Add Range:=Selection. Range, Type :=wdFieldDate

      在添加一個(gè)域之后,用戶可以通過(guò)使用Result或Code屬性來(lái)返回或設(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è)面的任何位置。要了解運(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ì)象來(lái)表示。要了解關(guān)于運(yùn)用ActiveX控件的更多內(nèi)容,請(qǐng)參閱第十二章,“ActiveX控件和對(duì)話框”。

       

      判斷對(duì)象是否有效

      可以通過(guò)在用戶代碼中包含判斷語(yǔ)句來(lái)判斷由一個(gè)表達(dá)式返回的特定對(duì)象或者一個(gè)變量所引用的對(duì)象是否有效,以此避免代碼在運(yùn)行時(shí)的錯(cuò)誤。本節(jié)討論了一些檢查表達(dá)式返回值或變量保存值有效性的技術(shù)。

      用戶可以隨同一個(gè)變量或表達(dá)式使用TypeName函數(shù)來(lái)確定對(duì)象的類型。如果Selection. NextField返回了一個(gè)Field對(duì)象,那么以下的示例將在狀態(tài)欄中顯示一條消息。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多