Wert eines Dropdown-Elements auslesen

Moderator: ModerationP

Wert eines Dropdown-Elements auslesen

Beitragvon mcdbpas » 02. Aug 2021, 14:48

Hallo an alle,

ich habe ein Script, welches den Inhalt eines Dropdown-Elements in den Dateinamen einfügt.

Hiermit hole ich mir den "Anzeigename" für den Dateinamen:

ActiveDocument.SelectContentControlsByTitle("Art").Item(1).Range.Text

Nun möchte ich aber nicht den Anzeigenamen sodern den Wert des Dropdown-Elements. Wer kann mir hier helfen?

Vielen Dank vorab.
mcdbpas
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 17
Registriert: 20. Jan 2006, 21:18

Re: Wert eines Dropdown-Elements auslesen

Beitragvon theoS » 02. Aug 2021, 21:58

Wert was?
Du bekommst ja normal aus dem Range des Dings immer den Text zurück der drin steht.
Code: Alles auswählen
Sub din()
Dim dd1 As Document: Set dd1 = ActiveDocument
oink = dd1.SelectContentControlsByTitle("Art")(1).Range.Text
Debug.Print oink
End Sub

Oder willst du wissen, der wievielte Eintrag das ist? Das müsstest du durchschleifen.
Code: Alles auswählen
Sub din()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim oink As ContentControl
Set oink = dd1.SelectContentControlsByTitle("Art")(1)
Debug.Print oink.Range.Text
For i = 1 To oink.DropdownListEntries.Count
 If oink.Range.Text = oink.DropdownListEntries(i).Text Then
  Debug.Print i
 End If
Next i
End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5724
Registriert: 19. Apr 2008, 00:14

Re: Wert eines Dropdown-Elements auslesen

Beitragvon mcdbpas » 02. Aug 2021, 22:29

Hier ist mein komplettes Script:

Code: Alles auswählen
Sub autosave()

Dim sTxt As String, sTitle As String
   sTitle = "Bitte Titel eingeben:"
   sTxt = InputBox(prompt:="Eingabe:", Title:=sTitle)
     
   ActiveDocument.BuiltInDocumentProperties("Title") = sTxt

Dim c_Path As String
Dim dateiname As String, teil1 As String, teil2 As String
Dim strNewName As String, strTemp As String
Dim bFound As Boolean, iCount As Integer, iMax As Integer
Dim strName As String
'
c_Path = "C:\Temp\" & "\"
 teil1 = ActiveDocument.SelectContentControlsByTitle("Art").Item(1).Range.Text
  ' teil2 = ActiveDocument.SelectContentControlsByTitle("Version").Item(1).Range.Text
 dateiname = teil1 & "_" & sTxt & "_" & Year(Now) & "-" & Month(Now) & "-" & Day(Now)
bFound = False: iCount = 0
'
strNewName = dateiname
strName = Dir(c_Path, vbDirectory)     ' Ersten Eintrag abrufen.
Do While strName <> ""     ' Schleife beginnen.
    If strName <> "." And strName <> ".." Then
        If InStr(1, strName, strNewName) > 0 And GetAttr(c_Path & strName) <> vbDirectory Then
            iCount = iCount + 1
            strTemp = Mid(strName, Len(strNewName) + 2, InStr(1, strName, ".docx") - Len(strNewName) - 2)
            If iMax < CInt(strTemp) Then iMax = CInt(strTemp)
            Debug.Print strName
        End If
    End If
    strName = Dir     ' Nächsten Eintrag abrufen.
Loop
iMax = iMax + 1
strTemp = String(2 - Len(CStr(iMax)), "V0") & CStr(iMax)
strNewName = strNewName & "_" & strTemp & ".docx"
ActiveDocument.SaveAs c_Path & strNewName
MsgBox "Die Datei wurde unter folgendem Namen gespeichert:" & vbCrLf & strNewName
End Sub


In meiner Vorlage ist dann das Dropdown-Element "Art" angelegt.

Im Dropdown-Element wird über Eigenschaften der Anzeigename und der Wert festgelegt. Den ausgewählten Wert mochte ich nun als "teil1" auslesen.
mcdbpas
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 17
Registriert: 20. Jan 2006, 21:18

Re: Wert eines Dropdown-Elements auslesen

Beitragvon theoS » 02. Aug 2021, 22:59

Ach so, ganz vergessen, dass man so einen Unfug auch damit treiben kann. :)
Wenn du den Index hast, dann kannst du das Value auch auslesen.
Code: Alles auswählen
Sub din()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim oink As ContentControl
Set oink = dd1.SelectContentControlsByTitle("Art")(1)

Debug.Print oink.Range.Text
For i = 1 To oink.DropdownListEntries.Count
 If oink.Range.Text = oink.DropdownListEntries(i).Text Then
  Debug.Print i
  Debug.Print oink.DropdownListEntries(i).Value 'das kannst du dann auslesen wenn du weißt, was das für ein Index ist
 End If
Next i
End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5724
Registriert: 19. Apr 2008, 00:14

Re: Wert eines Dropdown-Elements auslesen

Beitragvon mcdbpas » 03. Aug 2021, 10:18

theoS hat geschrieben:Ach so, ganz vergessen, dass man so einen Unfug auch damit treiben kann. :)
Wenn du den Index hast, dann kannst du das Value auch auslesen.
Code: Alles auswählen
Sub din()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim oink As ContentControl
Set oink = dd1.SelectContentControlsByTitle("Art")(1)

Debug.Print oink.Range.Text
For i = 1 To oink.DropdownListEntries.Count
 If oink.Range.Text = oink.DropdownListEntries(i).Text Then
  Debug.Print i
  Debug.Print oink.DropdownListEntries(i).Value 'das kannst du dann auslesen wenn du weißt, was das für ein Index ist
 End If
Next i
End Sub


Vielen Dank, hat funktioniert.
mcdbpas
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 17
Registriert: 20. Jan 2006, 21:18


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste