So erhalten Sie einen unbegrenzten Textwert in einem Dropdown-Word-Dokument

So erhalten Sie einen unbegrenzten Textwert in einem Dropdown-Word-Dokument

Ich muss basierend auf der Dropdown-Auswahl in Word einen Text eingeben. Es sind jedoch nur 255 Zeichen zulässig.

Gibt es eine Möglichkeit, mehr einzugeben?

Vielleicht gibt es dafür eine Problemumgehung?

Ich habe nicht viele Informationen dazu gefunden. Bitte weisen Sie mich in die richtige Richtung.

Bildbeschreibung hier eingeben

Antwort1

DerWertdarf nicht mehr als 255 Zeichen haben und wird auf keinen Fall im Dokument angezeigt – selbst dazu müssten Sie das Inhaltssteuerelement einem Element in einem benutzerdefinierten XML-Teil „zuordnen“, diesem Element ein Inhaltssteuerelement im Nur-Text-Format zuordnen und dieses Steuerelement in das Dokument einfügen.

Sie müssen dies also anders machen. Es gibt mehrere Möglichkeiten, jede mit ihren eigenen Vor- und Nachteilen. Fügen Sie beispielsweise alle Ihre Texte in Bausteineinträge in einer bestimmten Galerie (z. B. „Benutzerdefiniert 1“ und Kategorie (z. B. eine, die Sie speziell für dieses Steuerelement erstellen) ein. Verwenden Sie ein Dropdown-Menü für Legacy-Formularfelder und ein Feld, das den gewünschten Wert je nach ausgewähltem Wert einfügt. c. „Verwenden Sie VBA“.

(a) und (b) sind die einzigen Ansätze, die mir einfallen, die kein VBA erfordern. Sobald Sie VBA verwenden, gibt es eine Reihe von Möglichkeiten.

Für (a) müssen Building Block-Einträge in einer Word-Vorlage oder einer speziellen Building Block-Vorlage vorliegen. Wenn Sie also eine Einzeldateilösung wünschen, müssen Sie Ihr Dokument in eine .dotx-Datei umwandeln, nicht in eine .docx-Datei. Soweit ich weiß, ist der Building Block-Mechanismus auf dem Mac nicht verfügbar. Sie wählen einfach eine (vordefinierte Galerie) und erstellen eine Kategorie, fügen alle Einträge, die Sie anzeigen möchten, in die Dropdown-Liste dieser Galerie/Kategorie ein und richten dann die Eigenschaften des Building Block Content-Steuerelements so ein, dass diese Galerie/Kategorie verwendet wird. Der Inhalt des ausgewählten Eintrags wird direkt im Steuerelement angezeigt. Der Building BlockNamenund Inhalt werden im „Dropdown“ angezeigt. Die Namen haben eine Längenbeschränkung (32 Zeichen, glaube ich).

Für (b) erstellen Sie ein Legacy-Formularfeld-Dropdown mit den gewünschten „Anzeigenamen“ und stellen das Formularfeld auf „Beim Beenden berechnen“ ein. Ich glaube, Sie sind auf 25 Optionen beschränkt. Die Anzeigenamen sind auf etwa 50 Zeichen beschränkt.

Anschließend richten Sie mithilfe des „Anzeigenamens“ ein oder mehrere Felder ein, die den gewünschten Text anzeigen. Am einfachsten können Sie für jeden Dropdown-Wert ein IF-Feld verwenden. Wenn das Dropdown also die Werte „abc“, „def“, „ghi“ usw. enthält, können Sie Folgendes verwenden:

{ IF  "{ Dropdown1 }" = "abc" "The chunk of text you want for abc" "" }{ IF  "{ Dropdown1 }" = "def" "The chunk of text you want for def" "" }

Sie müssen dann das Dokument „für Formulare schützen“, was bedeutet, dass der Benutzer keine anderen Änderungen vornehmen kann als das Formular auszufüllen. Oder Sie können einen Abschnitt des Dokuments schützen. In diesem Fall kann der Benutzer den Rest des Dokuments mit einigen Einschränkungen bearbeiten.

Wenn Sie sich für VBA entscheiden, nehmen wir an, dass Sie ein Dropdown-Menü für Inhaltssteuerung verwenden. Dann benötigen Sie ein Ereignis, um VBA auszuführen. Sie können entweder ein Inhaltssteuerungsereignis verwenden oder, wenn Sie Ihre Inhaltssteuerung einem benutzerdefinierten XML-Teil zuordnen, ein „Datastore“-Ereignis (mit dem XML-Teil verknüpft) verwenden. Ihr VBA muss dann wissen, wo und welcher Text angezeigt werden soll.

Stellen wir uns also vor, Ihr Dropdown-Menü hat den Titel dd1, Sie werden Ihren Text in ein reines Textinhaltssteuerelement mit dem Titel einfügen tb1und die „Anzeigenamen“ Ihres Dropdown-Menüs lauten my display name 1usw. my display name 2Dann können Sie das folgende VBA in Ihr ThisDocumentModul einfügen. Dies wird „ausgelöst“, wenn Sie außerhalb des Dropdown-Steuerelements klicken oder es mit der Tabulatortaste verlassen.

NB: Damit dies funktioniert, muss die Eigenschaft „Inhalt kann nicht bearbeitet werden“ von tb1nicht markiert

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

Ich persönlich bevorzuge die Verwendung der Inhaltssteuerungszuordnung und der Datenspeicherereignisse, aber es ist komplizierter und ich denke, dass der obige Ansatz die Anforderungen, wie Sie sie beschrieben haben, erfüllen sollte.

verwandte Informationen