zt Microsoft Word 物件

zhengnx發表於2012-02-19

Microsoft Word 物件

目 錄

Visual Basic支援一個物件集合,該集合中的物件直接對應於Microsoft Word 97中的元素,並且透過使用者介面,使用者熟悉這些元素中的絕大多數。例如,Document 物件代表了一個開啟的文件,Bookmark物件代表了一個文件中的書籤,而Selection物件則代表了在一個文件視窗窗格中的選定內容。在Word中,每一類元素-文件、表格、段落、書籤、域等等-都可以用Visual Basic的物件來表示。要在Word中自動執行任務,可以使用這些物件的方法和屬性。

關於理解和使用Microsoft Office 97物件模型的一般性內容,請參閱本書的第二章“理解物件模型”。在Microsoft Office 97中的物件模型相當豐富,其中包含了大約180個物件。要檢視Word物件模型的層次關係圖,請參閱“幫助”中的“Microsoft Word 物件”。要獲得對某種特定物件的詳細描述,可以在此圖中單擊該物件的名字,或是在“幫助”的索引中對特定物件進行搜尋。

怎樣顯示Word Visual Basic幫助

要使用Word Visual Basic幫助,必須在安裝過程中選擇“自定義”的安裝方式,並且為Word選中“Visual Basic線上幫助”核取方塊。否則,安裝程式不會安裝Visual Basic幫助。如果使用者已經安裝好了Word,那麼可以再次執行Setup程式來安裝Visual Basic幫助。

要檢視Word Visual Basic 幫助,可以在“Visual Basic 編輯器裡的“幫助”選單中點選“目錄和索引”一項。在“幫助主題”對話方塊的“目錄”一表中,雙擊“Microsoft Word Visual Basic 參考”,然後再雙擊“Visual Basic 參考”。“幫助主題”對話方塊會重新出現,顯示出Microsoft Word Visual Basic的目錄和索引。

 

在使用者啟動一個Word 時段的同時,也建立了一個Application物件。使用者可以使用Application 物件的屬性或方法來控制或返回應用程式範圍內的特性、控制應用程式視窗的外觀或者調整Word 物件模型的其他方面。可以使用Application屬性來返回Word Application 物件。以下的示例從檢視狀態切換到列印預覽狀態。

Application. PrintPreview = True

Application物件的一些屬性控制著應用程式的外觀。例如,如果DisplayStatusBar屬性為True(真),那麼狀態列是可見的,如果WindowState屬性值為wdWindowStateMaximize,那麼應用程式視窗處於最大化狀態。以下的示例設定了螢幕上應用程式視窗的大小。

With Application

.WindowState = wdWindowStateNormal

.Height = 450

.Width = 600

End With

Application物件的屬性也可以訪問處於物件層次中較低階的物件,比如Windows集合(代表了當前所有開啟的視窗)和Documents集合(代表了當前所有開啟的文件)。使用者可以使用屬性,有時候也叫做訪問者,從物件層次中最高一級的Application物件向下訪問到較低階的物件(Document物件、Window物件、 Selection物件等等)。可以使用以下兩個示例之一來開啟MyDoc.doc。

Application. Documents. Open FileName :="C:DOCSMYDOC.DOC"

Documents. Open FileName :="C:DOCSMYDOC.DOC"

因為Document屬性是共用的,所以Application屬性是可選的。共用屬性和方法無需Application 物件限定符。要在“物件瀏覽器”中瀏覽共用屬性和方法的列表,可以在“類別”欄中單擊“”。共用項就會列在“成員”欄中。

註釋 Option物件包含了控制Word 共用行為的一些屬性。許多Option物件的屬性對應於Option對話方塊中的各項(Tools 選單)。使用Application 物件的Option屬性可以返回Option 物件。以下的示例設定了三個應用程式範圍內的選項(因為Option屬性是共用的,所以在本示例中無需Application屬性)。

With Application.Options

.AllowDragAndDrop = True

.ConfirmConversions = False

.MeasurementUnit = wdPoints

End With

運用Document物件

當使用者在Word中開啟或建立一個檔案的同時,也建立了一個Document物件。使用者可以使用Document物件或Documents集合的屬性或方法來開啟、建立、儲存、啟用或者關閉檔案。

返回Document物件

使用者可以使用語法Documents (index)來返回作為一個Document物件的任何開啟的文件,在這裡index是該文件的名字或索引號。在以下的示例中,變數myDoc包含一個Document物件,該物件代表名為“Report.doc”的開啟的文件。

Set myDoc = Documents ("Report.doc")

索引號代表了文件在Documents集合中的位置。在以下的示例中,變數myDoc包含了一個Document物件,該物件代表Documents集合中的第一個文件。

Set myDoc = Documents(1)

註釋 因為當使用者新增或關閉多個文件時,某個特定文件的索引號會發生改變,所以最好使用文件的名字來對Documents集合中的Document物件進行索引。

除了透過文件的名字或索引號來引用文件,還可以使用ActiveDocument屬性來返回一個引用活動文件(當前著眼的文件)的Document物件。以下的示例顯示產活動文件的名字;如果沒有開啟的文件,則該示例顯示一條訊息。

If Documents. Count >= 1 Then

MsgBox ActiveDocument. Name

Else

MsgBox "No documents are open"

End If

開啟文件

要開啟一個已經存在的文件,可以使用Open方法。Open方法應用於透過Document屬性返回的Documents集合。以下的示例開啟了檔案Test.doc(從當前資料夾)並且啟動了更改跟蹤。

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

myDoc. TrackRevisions = True

注意到在上例中Open方法的返回值是一個Document物件,該物件表示剛被開啟的文件。在此示例中的檔名不包含路徑;因此,是假定了該檔案在當前的資料夾中。但這會導致出現一個執行時錯誤,因為一旦使用者建立了與當前資料夾不同的資料夾,Visual Basic就再也找不到該檔案了。但是,使用者可以透過指明完整的路徑,就如同下表所示的那樣,來確保開啟正確的檔案。

作業系統

FileName引數

Windows

FileName :="C:DocumentsTemporary File.doc"

Macintosh

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

如果使用者的宏只用於一種檔案系統,那麼可以在FileName引數中指定路徑分隔符(“”或者“:”),就如同上表所示的那樣。以下示例顯示了與檔案系統無關的程式碼,可以用來開啟Sales.doc,並且假定Sales.doc已經儲存在Word 的程式資料夾中。

programPath = Options. DefaultFilePath (wdProgramPath)

Documents. Open FileName :=programPath & Application. PathSeparator & "SALES.DOC"

PathSeparator屬性返回當前檔案系統(例如,“”用於MS-DOS/Windows的檔案分配表,或者“:”用於Macintosh)的正確的檔案分隔符。DefaultFilePath屬性返回檔案的位置,比如文件所在資料夾的路徑、程式資料夾或者當前資料夾。

如果所指定的檔名既沒有在當前資料夾(如果沒有指定路徑)出現也沒有在指定的資料夾(如果指定了路徑)中出現,那麼就會發生錯誤。以下的示例使用FileSearch物件的屬性和方法來判斷名為“Test.doc”的檔案是否存在於使用者的預設文件資料夾中。如果找到了該檔案(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引數值。如同以下示例所示的那樣,可以使用帶有wdDialogFileOpen常量的Dialogs屬性來返回一個Dialog 物件,該物件表示“開啟”對話方塊(在“檔案”選單中)。Show方法可以顯示並且執行在“開啟”對話方塊中完成的動作。

Dialogs (wdDialogFileOpen). Show

Display 方法只是用來顯示特定的對話方塊而不作任何更多的操作。以下的示例檢查Display方法的返回值。如果使用者單擊“確定”來關閉對話方塊,返回值-1並且開啟所選擇的檔案,該檔案的名字儲存在變數fSelected中。

Set dlg = Dialogs (wdDialogFileOpen)

aButton = dlg. Display

fSelected = dlg. Name

If aButton = -1 Then

Documents. Open FileName :=fSelected

End If

要對如何顯示Word對話方塊作進一步瞭解,請參閱“幫助”中的“顯示內建Word 對話方塊”一節的內容。

要判斷某個特殊的文件是否開啟,可以使用一條For Each…Next語句來對Documents集合進行列舉。如果名為“Sample.doc”的文件已經被開啟了,以下的示例就啟用它;如果它尚未被開啟,則該示例會開啟它。

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:DocumentsSample.doc"

可以使用Count屬性來確定當前開啟文件的數目。Count屬性應用於Documents集合,可以使用Document屬性返回該集合。如果沒有已開啟的文件,以下的示例會顯示一條訊息。

If Documents. Count = 0 Then MsgBox "No documents are open"

建立和儲存文件

要建立一個新文件,可以對Documents集合應用Add 方法。以下的示例建立了一個新文件。

Documents. Add

Add方法返回了僅作為一個Document物件而建立的文件。當使用者新增一個文件時,可以設定Add 方法的返回值是一個物件變數,以便使用者可以在自己的程式碼中引用該新文件。以下的示例建立了一個新文件,並且設定它的上邊距為1.25英寸。

Dim myDoc As Document

Set myDoc = Documents. Add

myDoc. PageSetup. TopMargin = InchesToPoints(1.25)

第一次儲存新文件時,可以隨Document物件使用SaveAs方法。以下的示例將名為“Temp.doc”的活動文件儲存在當前資料夾中。

ActiveDocument. SaveAs FileName :="Temp.doc"

在文件被儲存之後,使用者可以使用它的文件名來調整Document物件。以下的示例建立了一個新文件並且立刻把它儲存為“1996 Sales.doc”。然後,該示例使用新名字來作Documents集合中的該文件的索引,並且向該文件新增一張表格。

Documents. Add.SaveAs FileName :="1996 Sales.doc"

Documents ("1996 Sales.doc").Tables.Add _

Range :=Selection. Range, NumRows :=2, NumColumns :=4

要儲存對一個已經存在的文件所進行的更改,可以隨同Document物件使用Save方法。以下的指令儲存了名為“Sales.doc”的文件。

Documents ("Sales.doc"). Save

如果使用者隨同一個尚未儲存的文件或模板使用Save方法,將會顯示“另存為”對話方塊來提示使用者為該檔案取名。要儲存所有開啟的文件,可以對Documents集合應用Save方法。以下的示例儲存了所有開啟的文件,但沒有提示使用者為檔案取名。

Documents. Save NoPrompt :=True

啟用一個文件

要使另一個文件成為活動文件,可以對Document物件應用Activate方法。以下的示例啟用了開啟的文件(MyDocument.doc)。

Documents ("MyDocument.doc"). Activate

以下的示例開啟了兩個文件,然後啟用其中的第一個文件(Sample.doc)。

Set Doc1 = Documents. Open (FileName :="C:DocumentsSample.doc")

Set Doc2 = Documents.Open (FileName :="C:DocumentsOther.doc")

Doc1. Activate

列印一個文件

要列印一個文件,可以對Document物件應用PrintOut 方法,如以下示例所示。

ActiveDocument. PrintOut

要透過程式來設定那些也可以在“列印”對話方塊(在“檔案”選單中)裡進行設定的列印選項,可以使用PrintOut 方法的引數來實現。使用者可以使用Options 物件的屬性來設定列印選項,這些選項也可以在“選項”對話方塊(在“工具”選單中)“列印”一表裡進行設定。以下示例設定活動文件列印隱藏的文字,並且只列印出前三頁。

Options. PrintHiddenText = True

ActiveDocument. PrintOut Range :=wdPrintFromTo, From :="1", To :="3"

關閉文件

要關閉一個文件,可以對Document物件應用Close方法。以下的示例關閉了名為“Sales.doc”的文件。

Documents ("Sales.doc"). Close

如果對文件進行過修改,Word會顯示出一條訊息來詢問使用者是否要儲存所進行的修改。使用者可以隨SaveChanges引數使用wdDoNotSaveChanges或 wdSaveChanges常量來使該提示不再出現。以下的示例儲存並且關閉了Sales.doc。

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

要關閉所有已開啟的文件,可以對Documents集合應用Close方法。以下的示例沒有儲存修改就關閉了所有的文件。

Documents. Close SaveChanges :=wdDoNotSaveChanges

訪問文件中的物件

使用者可以從Document物件來訪問返回物件的一系列屬性和方法。要檢視在Document物件中所能使用的物件的層次關係圖,可以參閱“幫助”中的“Microsoft Word物件(Documents)”。例如,Table屬性,它能夠返回一個Table物件的集合,可以在Document物件中使用。隨著一個集合物件使用的Count屬效能夠判斷在該集合中所包含的項數。以下的示例顯示一條訊息來指出在活動文件中有多少表格。

MsgBox ActiveDocument. Tables. Count & " table(s) in this document"

使用Table(index)可以返回一個單張表格物件,這裡的index是索引號。在以下的示例中,myTable代表“Sales.doc”文件裡的第一張表格。

Set myTable = Documents ("Sales.doc"). Tables(1)

關於返回一個特殊物件的資訊可以從“幫助”中的物件主題本身 (例如,“Table 物件”)和相應的集合物件主題(例如,“Table集合物件”)中獲得。

向文件新增物件

可以使用隨著能在Document物件中訪問的集合物件的Add方法來向文件新增諸如腳註、備註或表格這樣的物件。例如,以下命令在myRange變數(myRange是一個包含了一個Range物件的物件變數)所指定的位置上新增了一張3x3的表格。

ActiveDocument. Tables. Add Range :=myRange, NumRows :=3, NumColumns :=3

以下的示例在myRange變數所指定的位置上新增了一個腳註。

ActiveDocument. Footnotes. Add Range :=myRange, Text :="The Willow Tree"A

要獲得支援Add方法的集合物件列表,請參閱“幫助”中的“Add 方法”。

 

當使用Visual Basic時一個常見的任務就是在文件中指定一塊區域,然後對它進行處理,比如插入文字或應用格式等。例如,使用者可能想編寫一個宏,來對文件中某個部分裡的某個單詞或短語進行定位。那就可以使用一個Range物件來表示想在其中搜尋特定單詞或短語的部分文件。在確定Range物件後,使用者能夠應用該物件的方法和屬性來修改相應範圍中的內容。

一個Range物件代表了文件中的一塊連續的區域。每一個Range物件都由一個起始字元位置和一個終止字元位置來定義。與使用者在文件中使用書籤的方法類似,可以在Visual Basic中使用Range物件來識別一個文件的特定部分。一個Range物件既可以和插入點一樣小,也可以和整個文件一樣大。但是,與書籤不同,Range物件僅僅在定義它的過程正在執行時才存在。

Range物件同選定內容相互獨立;也就是說,可以定義和修改範圍而不會改變選定內容。使用者也可以在文件中定義多個範圍,而此時每個文件窗格中僅有一個選定內容。

Start、End和StoryType屬性唯一地確定了一個Range物件。Start和End屬性分別返回或者設定Range物件的起始和結束字元的位置。每個文件構成部分起始處的字元位置是0 (zero),而第一個字元之後的位置是1,依此類推。StoryType 屬性的WdStoryType常量可以表示十一種不同的文件構成部分型別。例如,如果在註腳區域中有一個Range物件,那麼StoryType屬性返回wdFootnotesStory。要對文件構成部分作進一步瞭解,請參閱本節後面的“運用文件構成部分”一節的有關內容。

使用Range物件來代替Selection物件

宏錄製器會經常建立一個使用Selection屬性來控制操縱Selection物件的宏。但是,使用者通常可以用一個或幾個Range物件來以很少的命令完成相同的任務。以下的示例是用宏錄製器建立的。該宏對文件中的前兩個單詞進行加粗。

Selection. HomeKey Unit :=wdStory

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

Selection. Font.Bold = wdToggle

以下的示例沒有使用Selection物件而完成了相同的任務。

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

以下的示例對文件中的前兩個單詞進行加粗,然後插入一個新的段落。

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物件就完成了上述示例中的同樣任務。

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

myRange. Bold = True

myRange. InsertParagraphAfter

前面的兩個示例改變了活動文件中的格式但沒有改變選定內容。在大多數的場合下,Range物件比Selection物件更可取,原因如下:

  • 使用者可以定義和使用多個Range物件,而在每個文件視窗中只能有一個Selection物件。
  • 控制管理Range物件不會改變所選擇的文字內容。
  • 控制管理Range物件比運用Selection物件速度要快。

使用Range方法返回Range物件

可以使用Range方法在特定文件中建立一個Range物件。Range方法(可以從Document物件使用)返回一個Range物件,該物件定位於主文件構成部分中,有給定的起始點和結束點。以下示例建立了一個Range物件,並且賦給myRange變數。

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

在上述示例中,myRange表示活動文件中的前十個字元。當對儲存在myRange變數中的Range物件應用一種屬性或方法時,就可以看到已經建立的Range物件。以下的示例對活動文件中的前十個字元進行加粗。

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

myRange. Bold = True

當使用者需要對一個Range物件進行多次引用時,可以使用Set語句來設定一個等價於Range物件的變數。但是,如果使用者需要在一個物件上執行一次操作,那麼就沒有必要將物件儲存到變數中。使用者可以使用一條確定範圍並且改變Bold屬性的命令來取得同樣的結果;如以下示例所示。

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

和書籤類似,一個範圍能夠在文件中橫跨一組字元,也可以標記其中的一個位置。在以下的示例中,Range物件的起始和終止點相同,並且該範圍內不包含任何文字。該示例在活動文件的起始處插入文字。

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

使用者可以透過使用如上述示例所示的字元位置數字,或者隨同Selection物件、Bookmark物件或Range物件使用Start屬性和End屬性,來定義一個範圍的起始和終止位置。以下示例建立了一個Range物件,來表示活動文件中的第三和第四個句子。

Set myDoc = ActiveDocument

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

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

技巧 Range物件在文件中的表示不可見。但是,使用者可以使用Select方法來選定一個Range物件,以保證Range物件表示正確的文字範圍。在以下示例中的Range物件表示活動文件中的前三個段落。在該宏執行完畢之後,選定內容是指包含在aRange變數中的文字範圍。

Set aRange = ActiveDocument.Range (Start :=0, _

End :=ActiveDocument. Paragraphs (3). Range. End)

aRange. Select

使用Range屬性來返回一個Range物件

在許多物件都可以使用Range屬性-例如,Paragraph物件、Bookmark物件、Endnote物件以及Cell物件-Range屬性用來返回一個Range物件。以下的示例返回了一個Range物件,該物件表示活動文件的第一段。

Set myRange = ActiveDocument.Paragraphs (1). Range

在建立了對Range物件的引用之後,使用者可以使用它的任何屬性或方法來修改該範圍。以下的示例複製了活動文件中的第一段。

Set myRange = ActiveDocument. Paragraphs (1). Range

myRange. Copy

以下的示例複製了活動文件中表格一的第一行。

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

以下的示例顯示了活動文件中由第一個書籤標記的文字。Range屬性可以在Bookmark物件中使用。

MsgBox ActiveDocument. Bookmarks (1). Range. Text

如果使用者需要對同一個Range物件應用多種屬性或方法,那麼可以使用With…End With語句。以下的示例為活動文件的第一段設定了文字的格式。

Set myRange = ActiveDocument. Paragraphs (1). Range

With myRange

.Bold = True

.ParagraphFormat. Alignment = wdAlignParagraphCenter

.Font. Name = "Arial"

End With

要獲得關於返回Range物件的其他示例,請參閱“幫助”中的“Range屬性”。

修改文件的一部分

Visual Basic包含了一些物件,可以使用它們來修改以下型別的文件元素:字元、單詞、句子、段落以及節。下面的表格包含了對應於這些文件元素的屬性和屬性所返回的物件。

表 達 式

返 回 的 對 象

Word (index)

Range物件

Characters (index)

Range物件

Sentences (index)

Range物件

Paragraphs (index)

Paragraph物件

Sections (index)

Section物件

當使用者不帶index來使用這些屬性時,就返回一個同名的集合-例如,Paragraphs屬性返回Paragraphs集合。但是,如果使用者使用index來確定在某個集合中的一項,就返回上述表格第二列中的物件-例如,Words(1)返回一個Range物件。使用者可以使用任何範圍屬性或方法來修改Range物件,如以下示例所示,該示例將選定內容中的第一個單詞複製到剪貼簿中。

Selection. Words (1). Copy

在Paragraphs集合以及Sections集合中的集合項分別是Paragraph物件和Section物件,而不是Range物件。但是,在Paragraph物件和Section物件中都可以使用Range屬性(它返回一個Range物件)。以下的示例將獲得文件中的第一段複製到剪貼簿中。

ActiveDocument. Paragraphs(1). Range. Copy

上述表格中所有的文件元素屬性都可以在Document物件、Selection物件以及Range物件中使用,如以下三個示例所示。

  1. 本例設定活動文件中第一個單詞的大小寫。

    ActiveDocument. Words(1). Case = wdUpperCase

  2. 本例設定選中的第一節的下邊距為0.5英寸。

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

  3. 本例設定活動文件中的文字為兩倍行距(Content屬性返回一個Range物件,該物件表示主文件構成部分)。

ActiveDocument. Content. ParagraphFormat. Space2

修改一組文件元素

要修改由一組文字元素(字元、單詞、句子、段落或節)構成的範圍,可以建立一個包含文件元素的Range物件。隨同Range物件使用Start和End屬性,使用者可以新建一個Range物件,該物件引用了一組文件元素。以下的示例建立了一個Range物件(myRange),該物件引用了活動文件中的前三個單詞,然後將這些單詞的字型改為Arial。

Set Doc = ActiveDocument

Set myRange = Doc.Range (Start :=Doc. Words(1). Start, End :=Doc. Words(3). End)

myRange. Font. Name = "Arial"

以下的示例建立了一個Range物件,該物件起始於第二段的開頭,到第四段之後結束。

Set myDoc = ActiveDocument

Set myRange = myDoc. Range (Start :=myDoc. Paragraphs(2). Range. Start, _

End :=myDoc. Paragraphs(4). Range. End)

以下的示例建立了一個Range物件(aRange),該物件起始於第二段的開頭,到第三段之後結束。ParagraphFormat屬性用來訪問諸如SpaceBefore和SpaceAfter這樣的設定段落格式的屬性。

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

返回或設定範圍中的文字

可以使用Text屬性來返回或設定一個Range物件中的內容。以下的示例返回了活動文件中的第一個單詞。

strText = ActiveDocument. Words(1). Text

以下示例將活動文件中的第一個單詞改為“Hello”。

ActiveDocument. Words(1). Text = "Hello"

可以使用InsertAfter 方法或者InsertBefore方法在一個範圍的前面或後面插入文字。以下的示例在活動文件的第二段之前插入文字。

ActiveDocument. Paragraphs(2). Range. InsertBefore Text :="In the beginning "

在使用InsertAfter 方法或者InsertBefore方法之後,範圍隨之擴大,包含新的文字。但是,也可以使用Collapse方法將範圍摺疊到起始位置或終止位置。以下的示例在現有文件之前插入單詞“Hello”,然後將範圍摺疊到它的起始位置(在單詞“Hello”之前)。

With ActiveDocument.Paragraphs(2).Range

.InsertBefore Text:="Hello "

.Collapse Direction:=wdCollapseStart

End With

設定範圍中文字的格式

可以使用Font屬性來取得設定字元格式的屬性和方法,而使用ParagraphFormat屬性來取得設定段落格式的屬性和方法。以下的示例設定了活動文件中第一段的字元格式和段落格式。

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物件

可以使用SetRange方法來重新定義一個已經存在的Range物件。以下的示例定義myRange為當前的選定內容。SetRange方法重新定義myRange,使它表示當前的選定內容加上隨後的十個字元。

Set myRange = Selection. Range

myRange. SetRange Start :=myRange. Start, End :=myRange. End + 10

要獲得重新定義Range物件的其他資訊和示例,請參閱“幫助”中“SetRange方法”。

使用者也可以透過改變Start屬性和End屬性的值,或者使用MoveStart方法或MoveEnd方法來重新定義一個Range物件。以下的示例重新定義myRange物件,使它表示當前的選定內容加上隨後的十個字元。

Set myRange = Selection. Range

myRange. End = myRange. End + 10

以下的示例使用MoveEnd方法擴充套件了myRange,使它包含下一段。

Set myRange = ActiveDocument. Paragraphs(2)

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

在範圍內的段落中迴圈

可以透過幾種不同的方法在範圍內的段落中進行迴圈。本節包含使用For Each...Next語句和Next屬性及方法在範圍內的段落中進行迴圈的內容。也可以使用同樣的技術在範圍內的字元、單詞或句子中進行迴圈。

使用For Each...Next語句

建議在範圍內進行段落迴圈時使用For Each...Next語句,另外建議在集合內進行迴圈時也同樣使用該語句。以下的示例在獲得文件的前五段中進行迴圈,在每段之前新增文字。

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

假定使用者想修改上述的程式碼,在範圍內對使用者選定的段落進行迴圈。可以使用Selection屬性來表示選定內容中的各個段落。以下的示例在選定內容的段落中進行迴圈,去除加粗格式。

For Each para In Selection. Paragraphs

para.Range. Bold = False

Next para

使用Next屬性或方法

使用者也可以使用Next屬性和方法在範圍的段落中進行迴圈。以下的示例說明了怎樣在範圍的單詞中進行迴圈,將每個單詞增大一點字號。

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

以下的示例在範圍的段落中進行迴圈,將範圍的對齊方式由居中改為左對齊。該示例也使用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物件賦值給變數

可以透過幾種途徑來把一個已經存在的Range物件賦給一個變數。在以下示例中,變數Range1和變數Range2都表示Range物件。在該示例中命令把活動文件中第一和第二個單詞分別賦值給變數Range1和Range2。

Set Range1 = ActiveDocument. Words(1)

Set Range2 = ActiveDocument. Words(2)

設定一個Range物件變數等價於另一個Range物件變數

以下的示例建立變數Range2,並且與Range1相同。

Set Range2 = Range1

現在就有兩個變數表示著同樣的範圍。當使用者調整Range2的起始位置、終止位置或者文字時,所做的更改也同樣會影響到Range1,反之亦然。

以下的示例將Range1預設屬性 (Text屬性)的值賦給Range2的預設屬性。在此示例中的程式碼等價於Range2. Text = Range1. Text,它沒有改變Range物件實際所表示的內容,它僅僅改變Range2的contents (text)。

Range2 = Range1

這兩個範圍(Range2和Range1)包含有相同的內容,但是它們可能指向文件中的不同位置,或者乾脆是不同的文件。

使用Duplicate屬性

以下的示例建立了一個新複製的Range物件,Range2,該物件有著和Range1一樣的起始位置、終止位置以及文字內容。

Set Range2 = Range1. Duplicate

如果改變了Range1的起始位置或是終止位置,這種改變並不會影響到Range2,反之亦然。但是,因為這兩個範圍指向文件的相同位置,改變一個範圍中的文字內容也會同時改變另一個範圍的文字內容。

運用文件構成部分

一個文件構成部分是文件中的一個區域,該區域中的文字區別於文件中的其他區域。例如,如果一個文件包含了正文文字、腳註和頁首,則該文件就包含了文件正文部分、腳註部分和頁首部分。

可以使用StoryType屬性來返回指定範圍、選定內容或書籤的文件構成部分。如果在腳註部分中包含了選定內容,那麼下例將關閉活動視窗中的腳註窗格。

ActiveWindow. View. Type = wdNormalView

If Selection. StoryType = wdFootnotesStory Then ActiveWindow. ActivePane. Close

StoryRanges集合包含了一個文件中每種有效的文件構成部分型別的第一個過程部分範圍。可以使用NextStoryRange方法來返回以後的文件構成部分。以下的示例搜尋活動文件中的每個文件過程部分來找出文字“Microsoft Word”。該示例也將它每次找到的文字全部設定為斜體。

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

 

當使用者使用Word中的某個文件時,通常會先選擇文字,然後再執行一項操作,比如設定以有文字的格式,或是鍵入新文字。在Visual Basic中,通常沒有必要在修改文字之前先選定該文字;而是建立一個表示文件特定部分的Range物件並對其進行操作。但是,當使用者想要自己的程式碼對選定內容作出響應或是改變選定內容,就可以透過Selection物件來完成任務。

可以使用Selection屬性來返回Selection物件。在文件視窗的每個窗格中只能有一個Selection物件,在任何時刻,也只能有一個活動的Selection物件。選定內容可以包含文件的一塊區域,也可以被摺疊到一個插入點。以下的示例改變了選定內容中各個段的段落格式。

Selection. Paragraphs. SpaceBefore = InchesToPoints (0.25)

Selection屬性可以在Application物件、Window物件和Pane物件中使用。如果隨同Application物件使用Selection屬性,則該Selection物件表示活動的選定內容。

Selection. InsertAfter Text :="Next Text"

也可以隨同一個Window物件或Pane物件使用Selection屬性來返回一個在特定視窗或視窗窗格中Selection物件。以下的示例隨同Window物件使用Selection屬性,在文件視窗“Document2”中插入文字。

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

以下的示例隨同Pane物件使用Selection屬性,在主頁首窗格中插入文字。

With ActiveWindow

.View. Type = wdPageView

.View. SeekView = wdSeekPrimaryHeader

.ActivePane. Selection. InsertAfter Text :="Header"

End With

在使用InsertAfter方法或InsertBefore方法之後,選定內容隨之擴大,包括了新的文字。但是,使用者也可以使用Collapse方法將選定內容摺疊到它的起始或終止位置。以下的示例在選定內容的文字之後插入單詞“Hello”,任何將選定內容摺疊到單詞“Hello”之後的插入點。

Selection. InsertAfter Text :="Hello"

Selection. Collapse Direction :=wdCollapseEnd

移動和擴充套件選定內容

使用者可以透過幾種方法來移動或擴充套件由Selection物件所表示的選定內容(例如,Move和MoveEnd)。以下的示例將選定內容移動到下一段的開頭。

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

使用者也可以透過改變Selection物件的Start屬性及End屬性的值,或者透過MoveStart和MoveEnd方法來移動或擴充套件選定內容。以下的示例透過把終止位置移動到段尾來對選定內容進行擴充套件。

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

因為在一個文件視窗或窗格中只能有一個選定內容,使用者也可以透過選定另一個物件來移動選定內容。可以使用Select方法,選擇文件的一項。在使用Select方法之後,就可以使用Selection屬性返回一個Selection物件。以下的示例選定了活動文件中的第一個單詞,然後把該單詞變為“Hello”。

ActiveDocument. Words(1). Select

Selection. Text = "Hello "

使用者也可以透過GoToNext方法、GoToPrevious方法或GoTo方法來移動選定內容。以下的示例將選定內容移動到文件中的第四行。

Selection. GoTo What :=wdGoToLine, Which :=wdGoToAbsolute, Count :=4

以下的示例將選定內容恰好移動到活動文件中的下一個域之前。

Selection. GoToNext What :=wdGoToField

在Selection物件使用的物件

可以在Range物件和Document物件中使用的許多其他物件也能在Selection物件中使用,這使得使用者可以在一個選定內容中控制操縱物件。要獲得能在Selection物件使用的物件的完整列表,請參閱“幫助”中的“Microsoft Word 物件(Selection)”,或者“Selection物件”。

以下的示例更新了選定內容中各個域的結果。

If Selection. Fields. Count >= 1 Then Selection. Fields. Update

以下的示例將一節中的各個段落縮排了0.5英寸。

Selection. Paragraphs. LeftIndent = InchesToPoints (0.5)

使用者可以使用For Each...Next語句在選定內容中的單個物件上進行迴圈操作,來代替對選定內容中的所有物件逐個進行控制操縱。以下的示例在選定內容的每個段落上進行迴圈操作,將找到的任何居中的段落變為左對齊。

For Each para In Selection. Paragraphs

If para. Alignment = wdAlignParagraphCenter Then para. Alignment = _

wdAlignParagraphLeft

Next para

以下的示例顯示出選定內容中每個書籤的名字。

For Each aBook In Selection. Bookmarks

MsgBox aBook. Name

Next aBook

Selection物件的屬性和方法

本節突出介紹Selection物件的一些常用屬性和方法。

返回或設定選定內容中的文字

可以使用Text屬性來返回或設定一個Selection物件的內容。以下的示例返回所選的文字。

strText = Selection. Text

以下的示例將所選文字改為“Hello World”。

Selection. Text = "Hello World"

可以InsertBefore 方法或InsertBefore方法,在選定內容之前或之後插入文字。以下的示例在選定內容之前插入了文字。

Selection. InsertBefore Text :="And furthermore "

為許多文字設定格式

可以使用Font屬性來訪問設定字元格式的屬性和方法,也可以使用ParagraphFormat屬性來訪問設定段落格式的屬性和方法。以下的示例設定了選定內容的字元和段落格式。

With Selection. Font

.Name = "Times New Roman"

.Size = 14

End With

Selection. ParagraphFormat. LeftIndent = InchesToPoints (0.5)

返回一個Range物件

如果一種方法或屬性是在Range物件而不是Selection物件中使用的(例如,CheckSpelling方法),那麼可以使用Range屬性來從Selection物件返回一個Range物件。以下的示例對所選單詞進行拼寫檢查。

Selection. Range. CheckSpelling

返回關於選定內容的資訊

可以使用Information屬性來返回關於選定內容的資訊。例如,使用者可以判斷當前頁的頁碼、文件的總頁數,或是判斷選定內容是否在一個頁首或註腳中。Information屬性可取三十五種不同的常量(wdActiveEndPageNumber, wdNumberOfPagesInDocument 和 wdInHeaderFooter等等),使用者可以使用它們來返回關於選定內容的不同資訊。舉個例子,如果選定內容處於一張表格中,那麼以下的示例將顯示錶格中的行號或列號。

If Selection. Information (wdWithInTable) = True Then

MsgBox "Columns = " & Selection. Information (wdMaximumNumberOfColumns) _

& vbCr & "Rows = " & Selection. Information (wdMaximumNumberOfRows)

End If

要獲得可以隨Information屬性一起使用的常量的完整列表和說明,請參閱“幫助”中的“Information屬性”。

判斷文字是否被選定

可以使用Type屬性來設定或返回選定內容在文件中被指定的方式。例如,可以使用wdSelectionBlock常量來判斷一個文字塊是否被選定。如果選定內容是一個插入點,那麼以下的示例選定包含該插入點的段落。

If Selection. Type = wdSelectionIP Then

Selection. Paragraphs(1). Range. Select

End If

 

可以使用Find和Replacement物件來查詢並且替換文件中文字的特定範圍。Find物件可以在Selection物件或Range物件中使用(根據Find物件是從Selection物件還是從Range物件返回的,查詢操作也略有不同)。

使用Selection.Find

如果是在Selection物件中使用Find物件,那麼當找到符合選擇條件的文字後選定內容將會改變。以下的示例選定下一次出現的單詞“Hello”。如果在找到單詞“Hello”之前已經到達了文件的末尾,那麼停止搜尋。

With Selection. Find

.Forward = True

.Wrap = wdFindStop

.Text = "Hello"

.Execute

End With

Find物件包含與“查詢”和“替換”對話方塊(在“編輯”選單中)裡的選項有關的屬性。使用者既可對Find物件的屬性逐一進行設定,也可以隨同Execute方法使用引數來進行設定,如果以下示例所示。

Selection. Find. Execute FindText :="Hello", Forward :=True, Wrap :=wdFindStop

使用Range.Find

如果是在Range物件中使用Find物件,選定內容不會改變,但是當找到符合選擇條件的文字時範圍會被重新定義。以下的示例確定活動文件中第一次出現的單詞“blue”的位置。如果查詢操作成功,將重新定義範圍並且設定單詞“blue”的格式為粗體。

With ActiveDocument. Content. Find

.Text = "blue"

.Forward = True

.Execute

If .Found = True Then .Parent.Bold = True

End With

以下的示例執行了和上述示例相同的操作,只是使用了Execute方法的引數。

Set myRange = ActiveDocument. Content

myRange. Find. Execute FindText :="blue", Forward :=True

If myRange. Find. Found = True Then myRange. Bold = True

使用Replacement物件

Replacement物件表示查詢-替換操作的替換條件。Replacement物件的屬性和方法對應於“查詢”和“替換”對話方塊(在“編輯”選單中)裡的選項。

可以在Find物件中使用Replacement物件。以下的示例將所有出現單詞“hi”的地方替換為“hello”。當找到符合選擇條件的文字時,選定內容將會改變,因為程式碼從Selection物件返回Find物件。

With Selection. Find

.ClearFormatting

.Text = "hi"

.Replacement. ClearFormatting

.Replacement. Text = "hello"

.Execute Replace :=wdReplaceAll, Forward :=True, Wrap :=wdFindContinue

End With

以下的示例去除了活動文件中所有的粗體格式。Bold屬性對Find物件為True(真),對Replacement屬性為False(假)。要查詢和替換格式,需設定查詢和替換文字為空字串(“”),並且設定Execute方法的Format引數為True(真)。選定內容保持不變,因為程式碼在Range物件中返回Find物件(Content屬性返回一個Range物件)。

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物件模型包含了表格物件,也包含了表格中各種不同元素的物件。可以隨同Document物件、Range物件、Selection物件使用Table屬性來返回Table集合。Table(index)返回了一個單獨的Table物件,在這裡index是表格的索引號。索引號代表在選定內容、範圍或文件中表格的位置。以下的示例將選定內容中的第一個表格轉換為文字。

If Selection. Tables. Count >= 1 Then

Selection. Tables(1). ConvertToText Separator :=wdSeparateByTabs

End If

可以隨同Column物件、 Range 物件、Row物件或 Selection物件使用Cells屬性來返回Cells集合。使用者可以透過使用Table物件的Cell方法或是索引Cells集合來獲得一個Cell物件。以下的兩條語句都能夠設定myCell為一個Cell 物件,該Cell物件代表活動文件中表格一的第一個單元格。

Set myCell = ActiveDocument. Tables(1). Cell(Row :=1, Column :=1)

Set myCell = ActiveDocument. Tables(1). Columns(1). Cells(1)

註釋 要在一個表格的一個單元格中插入文字,可以使用Text屬性、InsertAfter方法或者隨Range物件使用InsertBefore方法。可以隨Cell物件使用Range屬性來返回一個Range物件。以下的示例在表格一的每一個單元格中插入連續的單元格序號。

i = 1

For Each c In ActiveDocument. Tables(1). Range. Cells

c. Range. InsertBefore Text :="Cell " & i

i = i + 1

Next c

可以隨同Table物件、Range物件或Selection物件使用Column屬性來返回Columns集合。Columns(index)返回了一個單獨的Column物件,在這裡index是索引號。以下的示例選擇了表格一的第一列。

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

可以隨同Table物件、Range物件或Selection物件使用Row屬性來返回Rows集合。Rows(index)返回了一個單獨的Row物件,在這裡index是索引號。以下的示例給表格一的第一行加底紋。

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

修改圖形表格的行與列

當使用者試圖使用在一個圖形表格(或者任何表格,其中有兩個以上相鄰的單元格被合併,但是行與列沒有統一)中某一單獨的行或列時,就可能出現一個執行時錯誤。如果活動文件中的第一個表格的每列含有不一致的行號,以下的示例就會出錯。

ActiveDocument. Tables(1). Rows(1). Borders.Enable = False

使用者可以首先使用SelectColumn或SelectRow方法來選定某個特定行或列的單元格,以此避免這樣的錯誤。當使用者選好了行或列,再隨Selection物件使用Cells屬性。以下的示例選定了活動文件中表格一的第一行。該示例使用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

以下的示例選定了表格一的第一列。該示例使用了一個For Each...Next迴圈來向選定內容(第一列的所有單元格)中的每個單元格新增文字。

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

 

本節提供了關於運用一些普通Word物件的資訊和技巧。

使用HeaderFooter物件

HeaderFooter物件既可以表示一個頁首也可以表示一個註腳。HeaderFooter物件是HeaderFooter集合的一個成員,它可以在Section物件中使用。Headers(index)或Footer(index)屬性返回了一個單獨的HeaderFooter物件,在這裡index是WdHeaderFooterIndex常量的一個值。

以下的示例建立了一個Range物件(aRange),該物件表示活動文件第一節的主要註腳。在該示例設定Range物件之後,它刪除了已有的註腳文字。它還向註腳新增了AUTHOR域以及兩個表和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物件中使用。可以對PageNumbers集合應用Add方法來向一個頁首或註腳新增頁碼。

使用Styles集合

Styles集合可以在Document物件中使用。以下的示例改變了活動文件中“標題1”樣式的格式。

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

Styles集合不能在Template物件中使用。如果想修改一個模板中的樣式,可以使用OpenAsDocument方法按文件來開啟模板,這樣使用者就可以對樣式進行修改。以下的示例改變了活動文件所附的模板中“標題1”樣式的格式。

Set aDoc = ActiveDocument. AttachedTemplate. OpenAsDocument

With aDoc

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

.Close SaveChanges :=wdSaveChanges

End With

指定CommandBars

在使用CommandBars集合(表示選單欄和工具欄)之前,可以使用CustomizationContext屬性來設定儲存著對選單欄和工具欄的更改的Template或Document物件。以下的示例給“格式”工具欄新增了“雙下劃線”命令。因為自定義更改儲存在Normal模板中,所有的文件都會受到影響。

CustomizationContext = NormalTemplate

CommandBars ("Formatting"). Controls. Add Type :=msoControlButton, _

ID :=60, Before :=7

要了解關於選單欄和工具欄的更改範圍的更多資訊,請參閱第八章,“選單欄和工具欄”。

使用Dialogs集合

可以使用Dialogs屬性返回Dialogs集合,該集合表示內建Word對話方塊(例如,“開啟”和“儲存”對話方塊等)。使用者不能新建內建對話方塊,也不能向Dialogs集合新增內建對話方塊。要了解關於建立用ActiveX控制元件建立自定義對話方塊的內容,請參閱第十二章,“ActiveX 控制元件和對話方塊”。

返回MailMerge和MailMerge物件

可以使用Document物件的MailMerge屬性來返回一個MailMerge物件。無論所指定的文件是否是一個郵件合併文件,都可以使用MailMerge屬性。在使用者使用Execute方法執行合併之前,可以使用State屬性來確定郵件合併操作的狀態。如果活動文件是附加了資料來源的主文件,那麼以下的示例將執行郵件合併。

Set myMerge = ActiveDocument.MailMerge

If myMerge. State = wdMainAndDataSource Then myMerge. Execute

使用Document物件的Envelope屬性可以返回一個Envelope物件。無論使用者是否向所指定的文件新增了一個信封,都可以使用Envelope物件。但是,如果使用者使用以下屬性而沒有向文件新增信封,那麼會出現錯誤:Address屬性, AddressFromLeft屬性, AddressFromTop屬性,FeedSource屬性, ReturnAddress屬性,ReturnAddressFromLeft屬性, ReturnAddressFromTop屬性或 UpdateDocument屬性。

以下的示例使用On Error GoTo語句來捕獲使用者沒有向活動文件新增信封的錯誤。但是,如果使用者已經向文件新增了信封,將顯示收件人地址。

On Error GoTo ErrorHandler

MsgBox ActiveDocument. Envelope. Address

ErrorHandler:

If Err = 5852 Then MsgBox "Envelope is not in the specified document"

在文件中新增和編輯域

使用者可以透過對Field集合應用Add方法來給文件新增域。以下的示例新增了一個DATE域來替換選定內容。

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

在新增一個域之後,使用者可以透過使用Result或Code屬性來返回或設定域結果和域程式碼,這兩種屬性都可以返回一個Range物件。以下的示例更改選定內容的第一個域程式碼,更新該域,然後顯示域結果。

If Selection. Fields. Count >= 1 Then

With Selection. Fields (1)

.Code. Text = "CREATEDATE *MERGEFORMAT"

.Update

MsgBox . Result. Text

End With

End If

InlineShape物件同Shape物件的對比

一個Shape物件代表圖形層的一個物件,諸如自選圖形、任意多邊形、OLE物件、ActiveX控制元件、圖片等。Shape物件鎖定於文字範圍內,但是能夠任意移動,使使用者可以將它們定位於頁面的任何位置。要了解運用Shape物件的資訊,請參閱第十章,“形狀和圖形層”,也可以參閱“幫助”中的“Shape物件”。

一個InlineShape物件代表文件文字層的一個物件。一個嵌入式形狀可能是圖片、OLE物件或ActiveX控制元件。可以將InlineShape物件視為字元,並將其象字元一樣放在一行文字中。要了解關於InlineShape物件的資訊,請參閱“幫助”中的“InlineShape集合物件”或“InlineShape物件”。

在Word窗體中使用FormField物件

使用者可以建立一個Word線上窗體,該窗體包含核取方塊、文字文字框和下拉式列表框。使用“窗體”工具欄可以插入這些窗體元素。對應的Visual Basic物件是CheckBox, TextInput, 和DropDown。所有這些物件都可以在FormFields集合的任何一個FormField物件中使用;但是,使用者應當使用按照窗體域的型別使用相應的物件。例如,以下命令從活動文件的“Check1”域中選擇核取方塊。

ActiveDocument. FormFields ("Check1").CheckBox. Value = True

除了“窗體”工具欄中的窗體元素之外,使用者還可以向一個線上窗體新增ActiveX控制元件。使用“控制元件工具箱”可以插入ActiveX控制元件。使用者可以把控制元件插入文字層或圖形層;控制元件將分別由一個InlineShape 物件或一個Shape物件來表示。要了解關於運用ActiveX控制元件的更多內容,請參閱第十二章,“ActiveX控制元件和對話方塊”。

 

可以透過在使用者程式碼中包含判斷語句來判斷由一個表示式返回的特定物件或者一個變數所引用的物件是否有效,以此避免程式碼在執行時的錯誤。本節討論了一些檢查表示式返回值或變數儲存值有效性的技術。

使用者可以隨同一個變數或表示式使用TypeName函式來確定物件的型別。如果Selection. NextField返回了一個Field物件,那麼以下的示例將在狀態列中顯示一條訊息。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7868752/viewspace-1057389/,如需轉載,請註明出處,否則將追究法律責任。

相關文章