ドロップダウンワードドキュメントで無制限のテキスト値を設定する方法

ドロップダウンワードドキュメントで無制限のテキスト値を設定する方法

Word のドロップダウン選択に基づいてテキストを入力する必要があります。ただし、255 文字までしか入力できません。

それ以上入力する方法はありますか?

おそらくそれを回避する方法があるのでしょうか?

それについてはあまり情報が見つかりませんでした。正しい道を教えてください。

ここに画像の説明を入力してください

答え1

価値255 文字を超えることはできません。また、いずれの場合もドキュメントには表示されません。そのためには、コンテンツ コントロールをカスタム XML パーツ内の要素に「マップ」し、プレーン テキスト コンテンツ コントロールをその要素にマップして、そのコントロールをドキュメントに配置する必要があります。

したがって、別の方法でこれを行う必要があります。いくつかの方法があり、それぞれに長所と短所があります。たとえば、すべてのテキストを特定のギャラリー (「カスタム 1」など) とカテゴリ (このコントロール専用に作成したカテゴリなど) のビルディング ブロック エントリに配置します。b. 従来のフォーム フィールド ドロップダウンと、選択した値に応じて必要な値を挿入するフィールドを使用します。c. 「VBA を使用する」。

(a) と (b) は、VBA を必要としない唯一のアプローチとして思いつくものです。VBA を使用すると、さまざまな可能性が生まれます。

(a) の場合、ビルディング ブロック エントリは Word テンプレートまたは特別なビルディング ブロック テンプレートになければなりません。したがって、単一ファイルのソリューションが必要な場合は、ドキュメントを .docx ではなく .dotx にする必要があります。私の知る限り、ビルディング ブロック メカニズムは Mac では利用できません。基本的には、定義済みのギャラリーを選択してカテゴリを作成し、ドロップダウンに表示するすべてのエントリをそのギャラリー/カテゴリに配置し、そのギャラリー/カテゴリを使用するようにビルディング ブロック コンテンツ コントロールのプロパティを設定します。選択したエントリのコンテンツは、コントロールに直接表示されます。ビルディング ブロック名前内容は「ドロップダウン」に表示されます。名前には長さ制限があります (32 文字だと思います)。

(b) の場合、必要な「表示名」を含む従来のフォームフィールド ドロップダウンを作成し、フォーム フィールドを「終了時に計算」するように設定します。オプションは 25 個までに制限されていると思います。表示名は 50 文字程度に制限されています。

次に、「表示名」を使用して、必要なテキストを表示するフィールドを1つ以上設定します。最も単純な方法は、ドロップダウンの値ごとに1つの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配置しtb1、ドロップダウンの「表示名」がなどであるとします。次に、次の VBA をモジュールに配置できます。これは、ドロップダウン コントロールの外側をクリックするか、ドロップダウン コントロールからタブ移動すると「起動」します。my display name 1my display name 2ThisDocument

注意:これを機能させるには、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

個人的には、コンテンツ コントロール マッピングとデータストア イベントを使用することを好みますが、これはより複雑であり、上記のアプローチは、説明した要件を満たすはずだと思います。

関連情報