使用內容控制項
何謂內容控制項?
內容控制項是指文件中具有界限且可能具有標籤的區域,這些區域會做為特定內容類型的容器。 個別內容控制項可以容納的內容像是日期、清單或格式化文字段落。 在某些情況下,內容控制項可能會提醒您表單。 不過,它們更強大、更有彈性且實用,因為它們可讓您建立豐富、結構化的內容區塊。 內容控制項可讓您撰寫將定義完善的區塊插入檔中的範本。 內容控制項可讓您:
在範本中指定結構化區域。 每一個結構化區域都有它自己的識別碼,好讓您可以從中讀取及寫入。 結構化區域 (或內容控制項) 類型的範例包括下拉式方塊、圖片、文字區塊和行事曆。
判斷內容控制項的行為。 每個內容控制項都會佔用檔的一部分,而身為範本作者,您可以指定每個區域的用途。 例如,如果您想要將範本的區域設為行事曆,您可以在檔的該區域中插入行事曆內容控制項,這會自動決定該內容區塊的作用。 同樣地,如果您想要範本的區段顯示影像,請在該區域中建立圖片內容控制項。 如此一來,您就可以使用預先定義的區塊類型來建置範本。
限制修改檔內內容控制項的能力。 每一個內容控制項都可加以限制,讓使用者無法刪除或編輯它。 舉例來說,如果您在範本中具有使用者應該閱讀但不能編輯的著作權資訊,這樣的限制會很有用處。 或者,另一個範例是,您也可以鎖定放置在範本檔內的內容控制項,讓使用者不會不小心刪除內容控制項中包含的內容。 如此一來,範本會比舊版中的範本更為強固。
將內容控制項的內容對應至自訂 XML 元件中的資料。 例如,如果您將純文字內容控制項插入股票價格資料表的儲存格中,您可以將資料表單元格中的內容控制項對應至包含目前股價的 XML 檔案中的節點。 當價格變更時,增益集可以程式設計方式更新附加的 XML 檔案,該檔案會系結至每個純文字內容控制項,而新的更新價格會自動出現在資料表中。
建立內容控制項的最簡單方式是透過使用者介面 (,雖然您也可以以程式設計方式建立) 。 若要透過使用者介面 (UI) 建立內容控制項,請選取您想要轉換為內容控制項的內容 (例如,某些文字或圖片) ,然後從 [開發人員] 功能區的 [內容控制項] 區段中選擇您想要的內容控制項類型。 這會在選取的內容周圍建立內容控制項。
Word 物件模型中的內容控制項
下表顯示 Word 物件模型中與內容控制項相關的物件。
名稱 | 描述 |
---|---|
ContentControl | 每一個 ContentControl 物件都代表文件內的個別內容控制項。 使用 ContentControls 集合可存取個別的 ContentControl 物件。 |
ContentControls | 使用Document、Range和Selection物件的ContentControls屬性來存取內容控制項的集合。 您也可以使用 Document物件的SelectContentControlsByTitle方法和SelectContentControlsByTag方法來存取ContentControls集合,其中包含所有具有相同標題或標記值的特定內容控制項。 |
ContentControlListEntry | 當內容控制項為下拉式清單或下拉式方塊時,ContentControlListEntry 物件會代表清單內的個別項目。 |
ContentControlListEntries | 使用ContentControl物件的DropdownListEntries屬性可存取個別下拉式清單或下拉式方塊中的所有專案。 |
這些物件或集合當中的每一個都有一些方法和屬性,好讓您可以透過個別方式或集合方式來處理內容控制項。 由於內容控制項有許多不同的類型 (請參閱以下章節「內容控制項的類型」),所以 ContentControl 物件可能會有一些成員無法套用到所有不同類型的內容控制項。 下表顯示 ContentControl 物件的這些屬性和方法,這些屬性和方法只適用于特定類型的內容控制項。
注意事項
如需 ContentControl 物件之所有屬性和方法的完整清單,請參閱 內容控制項。
屬性/方法 | 適用於 |
---|---|
BuildingBlockCategory 屬性 | BuildingBlock 資源庫內容控制項 (wdContentControlBuildingBlockGallery) |
BuildingBlockType 屬性 | BuildingBlock 資源庫內容控制項 (wdContentControlBuildingBlockGallery) |
DateDisplayFormat 屬性 | wdContentControlDate (日期內容控制項) |
DateDisplayLocale 屬性 | wdContentControlDate (日期內容控制項) |
DateStorageFormat 屬性 | wdContentControlDate (日期內容控制項) |
DropdownListEntries 屬性 | 下拉式方塊和下拉式清單內容控制項 (wdContentControlComboBox 和 wdContentControlDropdownList) |
MultiLine 屬性 | 純文字內容控制項 (wdContentControlText) |
Ungroup 方法 | 將內容控制項 (wdContentControlGroup) |
SetCheckedSymbol 方法 | wdContentControlCheckBox (核取方塊內容控制項) |
SetUncheckedSymbol 方法 | wdContentControlCheckBox (核取方塊內容控制項) |
內容控制項的類型
您可以將八種不同類型的內容控制項新增至檔,每個控制項都會以名為 WdContentControlType的新列舉表示。
內容控制項類型 | 描述 | WdContentControlType 常數 |
---|---|---|
核取方塊。 | wdContentControlCheckBox | |
行事曆 | 日期 - 時間選擇器。 | wdContentControlDate |
建置組塊 | 可讓使用者從指定的建置組塊中進行選擇。 | wdContentControlBuildingBlockGallery |
下拉式清單 | 下拉式清單。 | wdContentControlDropDownList |
群組 | 定義使用者無法編輯或刪除之檔的受保護區域。 群組控制項可以包含任何檔專案,例如文字、資料表、圖形和其他內容控制項。 | wdContentControlGroup |
下拉式方塊 | 下拉式方塊。 | wdContentControlComboBox |
圖片 | 圖片。 | wdContentControlBlockPicture |
RTF 格式 | RTF 格式區塊。 | wdContentControlRichText |
純文字 | 純文字區塊。 | wdContentControlText |
內容控制項事件
除了 Word 中內容控制項物件模型可用的屬性和方法之外,您也可以使用數個事件,讓您在新增或移除內容控制項或使用者編輯內容控制項時執行程式碼。 下列清單描述每個事件以及事件程式碼執行的時機。 所有這些事件都是 Document 物件的成員。
事件名稱 | 描述 |
---|---|
ContentControlAfterAdd | 發生在將新的內容控制項加入到文件之後。 不論使用者是使用使用者介面中的工具還是使用程式碼來加入內容控制項,都會執行這個事件。 |
ContentControlBeforeContentUpdate | 發生在 Word 更新內容控制項中的內容以前。 |
ContentControlBeforeDelete | 發生在使用者刪除內容控制項之前。 不論使用者是使用使用者介面中的工具還是使用程式碼來刪除內容控制項,都會執行這個事件。 |
ContentControlBeforeStoreUpdate | 發生在 Word 從文件資料儲存區內的資料來更新內容控制項的內容以前。 |
ContentControlOnEnter | 發生在使用者輸入內容控制項時。 |
ContentControlOnExit | 發生在使用者結束內容控制項時。 |
使用程式碼
不論您是要加入內容控制項、刪除內容控制項,還是存取及管理現有的內容控制項,都可以使用程式碼來處理。 以下章節提供了您可以進行這類處理的幾個範例。
加入內容控制項
如先前所述,您可以將八種不同類型的內容控制項新增至檔。 使用 ContentControls 集合的 Add 方法可將內容控制項加入到文件中。 下列範例會將日期選擇器加入到使用中文件內,並將日期值設為目前的日期。
Sub AddDatePicker()
Dim objCC As ContentControl
Dim objDate As Date
Set objCC = ActiveDocument.ContentControls _
.Add(wdContentControlDate)
objDate = Date
objCC.Range.Text = objDate
End Sub
使用相同的基本建構,將任何不同類型的內容控制項新增至檔。
將標題加入到內容控制項
使用 Title 屬性可將標題加入到內容控制項中。 這就是使用者所看到的文字,而且可用來協助使用者,讓他們知道要輸入到內容控制項的資料類型。 下列範例會將新的純文字內容控制項加入到使用中文件,並為此控制項設定標題或顯示文字。
Sub SetTitleForContentControl()
Dim objCC As ContentControl
Set objCC = ActiveDocument.ContentControls _
.Add(wdContentControlText)
objCC.Title = "Please enter your name"
End Sub
修改內容控制項的預留位置文字
預留位置文字是暫存文字。 它可以是簡單的單字或兩字描述 (類似于標題) ,也可以是更完整的描述 (例如編號的步驟) 。 不論內容控制項的類型或內容控制項的預期內容為何,修改預留位置文字都相同。 下列範例會將下拉式清單新增至使用中檔、設定控制項的預留位置文字,然後在清單中填入數只動物的名稱。
Sub SetPlaceholderText()
Dim objCC As ContentControl
Set objCC = Selection.ContentControls _
.Add(wdContentControlComboBox)
objCC.Title = "Favorite Animal"
objCC.SetPlaceholderText _
Text:="Please select your favorite animal "
'List entries
objCC.DropdownListEntries.Add "Cat"
objCC.DropdownListEntries.Add "Dog"
objCC.DropdownListEntries.Add "Horse"
objCC.DropdownListEntries.Add "Monkey"
objCC.DropdownListEntries.Add "Snake"
objCC.DropdownListEntries.Add "Other"
End Sub
只有幾個方法可讓您使用物件模型來管理文件中的內容控制項。 如需詳細範例,請參閱操作方法一節。
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。