答案1
這價值不能超過255 個字符,並且在任何情況下都不會顯示在文檔中- 即使要做到這一點,您也必須將內容控件“映射”到自定義XML 部件中的元素,將純文本內容控件映射到該元素元素並將該控制項放入文件中。
所以你必須以其他方式做到這一點。有多種可能性,每種都有各自的優點和缺點。 ega 將所有文字放入特定庫中的Building Block 項目中(例如「自訂1」和類別(例如您專為此控制項所建立的類別)。b. 使用舊版表單欄位下拉清單和一個插入您想要的值的字段,取決於c. “使用 VBA”。
(a) 和 (b) 是我能想到的唯一不需要 VBA 的方法。一旦使用 VBA,就會有多種可能性。
對於 (a),Building Block 項目必須位於 Word 範本或特殊 Building Block 範本中。因此,如果您想要單一文件解決方案,則必須將文件設為 .dotx 而不是 .docx。 AFAIK 構建塊機制在 Mac 上不可用。您基本上選擇一個(預先定義的庫並建立一個類別,將要顯示的所有項目放入該庫/類別的下拉清單中,然後設定Building Block Content 控制項的屬性以使用該庫/類別。所選項目的內容是直接顯示在建構塊中。名字內容顯示在「下拉式選單」中。名稱有長度限制(我認為是 32 個字元)。
對於 (b),您可以使用所需的「顯示名稱」建立一個舊版表單欄位下拉列表,並將表單欄位設定為「退出時計算」。我認為你的選擇僅限於 25 個。顯示名稱限制為 50 個字元左右。
然後,您可以使用「顯示名稱」設定多個顯示所需文字的欄位之一。最簡單的情況是,您可以為每個下拉列表值使用一個 IF 字段,因此如果下拉列表具有值“abc”、“def”、“ghi”等,您可以使用
{ IF "{ Dropdown1 }" = "abc" "The chunk of text you want for abc" "" }{ IF "{ Dropdown1 }" = "def" "The chunk of text you want for def" "" }
然後,您必須“保護表單文件”,這意味著使用者除了填寫表單之外無法進行任何編輯。或者,您可以保護文件的一部分,在這種情況下,使用者可以編輯文件的其餘部分,但有一些限制。
如果您選擇 VBA 路線,我們假設您將使用內容控制下拉清單。然後,您需要一個事件來執行 VBA - 您可以使用內容控制項事件,或者如果您將內容控制項對應到自訂 XML 元件,則可以使用「資料儲存」事件(連結到 XML 元件)。然後,您的 VBA 需要知道在哪裡顯示文字以及要顯示什麼文字。
因此,讓我們假設您的下拉清單具有 Title dd1
,您將把文字放入名為 title 的純文字內容控制項中tb1
,而下拉清單的「顯示名稱」是my display name 1
,my display name 2
依此類推。然後您可以將以下 VBA 放入您的ThisDocument
模組中。當您單擊下拉控制項外部或從其中跳出選項卡時,這將「觸發」。
請注意,要實現此功能,tb1 的「內容無法編輯」屬性必須是未經檢查的
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
Dim cc1 As ContentControl
Select Case ContentControl.Title
' the dropdown
Case "dd1"
' Assumes "tb1" exists
Set cc1 = ContentControl.Range.Document.SelectContentControlsByTitle("tb1")(1)
If ContentControl.ShowingPlaceholderText Then
' Resets tb1 to its placeholder text
cc1.Range.Text = ""
Else
Select Case ContentControl.Range.Text
Case "my display name 1"
cc1.Range.Text = "whatever text you want for abc"
Case "my display name 2"
cc1.Range.Text = "whatever text you want for def"
Case Else
'
End Select
End If
Set cc1 = Nothing
Case Else
'
End Select
End Sub
我個人更喜歡使用內容控制映射和資料儲存事件,但它更複雜,我認為上述方法應該滿足您所描述的要求。