Seite 1 von 1

Wert eines Dropdown-Elements auslesen

BeitragVerfasst: 02. Aug 2021, 14:48
von mcdbpas
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.

Re: Wert eines Dropdown-Elements auslesen

BeitragVerfasst: 02. Aug 2021, 21:58
von theoS
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

Re: Wert eines Dropdown-Elements auslesen

BeitragVerfasst: 02. Aug 2021, 22:29
von mcdbpas
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.

Re: Wert eines Dropdown-Elements auslesen

BeitragVerfasst: 02. Aug 2021, 22:59
von theoS
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

Re: Wert eines Dropdown-Elements auslesen

BeitragVerfasst: 03. Aug 2021, 10:18
von mcdbpas
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.