#

Word: Eingabefelder erstellen und verwenden (Inhaltssteuerelemente, Variablen)
 
 
In Microsoft Word kann man sehr einfach eigene Eingabefelder in ein Dokument oder Formular einbauen, in welche Anwender Daten eingeben sollen.
Diese Eingabefelder sind Inhaltssteuerelemente und werden in vba Word Macros als ContentControls geführt
Diese Contentcontrols können zur Laufzeit nach dem eingegebenen Text abgefragt werden.
Somit kann man die Inhaltssteuerelemente als Dokument Variablen verwenden.
 

'< Init >
Dim sContentControl_Name As String
sContentControl_Name = "ctlFeld1"
'</ Init >

 
Man findet die Inhaltssteuerelemente unter Menü->Entwicklertools->Aa [Nur-Text-Inhaltssteuerelement]
Wenn man ein Eingabefeld eingefügt hat, dann wird dieses hervorgehoben mit einem kleinen Kennzeichnungslabel

 
 
Reine Text-Eingabe Felder werden unter Aa Nur-Text-Inhaltssteuerelemente hinzugefügt

 
Wenn man das Eingebefeld markiert und auf Eigenschaften klickt, dann werden die möglichen Einstellungen zu diesem Eingabefeld dargestellt

 
 
Unter dem Feld: Titel gibt man den Text an, welcher über dem Eingabefeld angezeigt werden soll, wenn man das Inhaltssteuerelement markiert hat
Unter dem Feld: Tag gibt man eine eindeutige Benennung zum Feld, welche man im vba Makro Code wiederfinden kann
Für manche Vorgänge ist es sinnvoll, das Optionsfeld: Das Inhaltssteuerelement kann nicht gelöscht werden zu aktivieren.
Dadurch kann man nicht versehentlich dieses Feld löschen. Allerdings kann dann auch nicht mit „Cut & Paste“ das Feld verändern

 
 
Verwendung im vba Makro
 
Die Verwendung der Inhaltssteuerelemente wird wichtig, wenn man diese per Makro abfrägt.
Dieses Makro frägt zum Beispiel den Wert eines Eingabefeldes ab und zeigt den eingegebenen Wert in einer Meldung an.
 
Man findet die Inhaltssteuerelement unter den ContentControls eines Dokuments.

 
Während der Verwendung unter den vba Makros muss man zunächst prüfen, ob das Feld überhaupt vorhanden ist:

    '< check Control exists >
    Dim bControl_Exists As Boolean
    bControl_Exists = False
 
    Dim control As ContentControl
    For Each control In doc.ContentControls
        If control.Tag = sContentControl_Name Then
            bControl_Exists = True
            Exit For
        End If
    Next
    If bControl_Exists = False Then
        MsgBox "Das Eingabefeld existiert nicht", vbCritical, "Eingabefeld fehlt"
        Exit Sub
    End If
    '</ check Control exists >
 

 
 
Ein Feld kann übernommer werden mit

Dim control As ContentControl
Set control = doc.ContentControls(“Eingabefeld01”)
 

 
 
Anschliessend liest man den Text aus dem Feld.
Der Eingabetext in einem Inhaltssteuerelement wird abgefragt mit

control.range.Text

 
 
 
 
Hier der komplette vba Makro Code als Sample

 
 
Sub Demo_Get_Inputfield()
    '-----------------< Demo_Get_Inputfield() >-----------------
    Dim doc As Document
    Set doc = Application.ActiveDocument
   
    '----< Jump to Bookmark >----
    '< Init >
    Dim sContentControl_Name As String
    sContentControl_Name = "ctlFeld1"
    '</ Init >
 
    '< check Control exists >
    Dim bControl_Exists As Boolean
    bControl_Exists = False
 
    Dim control As ContentControl
    For Each control In doc.ContentControls
        If control.Tag = sContentControl_Name Then
            bControl_Exists = True
            Exit For
        End If
    Next
    If bControl_Exists = False Then
        MsgBox "Das Eingabefeld existiert nicht", vbCritical, "Eingabefeld fehlt"
        Exit Sub
    End If
    '</ check Control exists >
 
    MsgBox "Eingabe ist=" & control.range.Text
    '-----------------</ Demo_Get_Inputfield() >-----------------
End Sub
 

 
 
Tutorial als Video
 
Mobile

.

123movies