
37414
26.06.2019
Alle Länder über Dropdownfeld auswählen (PDF-Dokument)
Hallo an Alle,
ich bin mit meinem PDF-Dokument jetzt soweit fertig... auch dank Eurer Hilfe
Eine Frage stellte sich mir jedoch erst eben, als ich das Dokument mal am PC ausfüllen wollte.
In das Textfeld "Land" muss man händisch sein Land eintragen. Aber dann dachte ich... das sollte doch auch über ein Dropdownfeld möglich sein.
Dazu habe ich mir nun eine Liste aller Länder gesucht und diese als Worddatei abgespeichert.
Natürlich könnte ich jetzt in den Eigenschaften des Dropdownfeldes, im Reiter "Optionen" jedes einzelne Land als Element eintragen und dann zur Elementliste hinzufügen.
Allerdings enthält meine Länderliste mehr als 200 Länder und auf diese Weise wäre es ein sehr hoher Aufwand.
Daher meine Frage:
Gibt es eine einfachere Möglichkeit, diese rund 200 Länder im Dropdownfeld zu hinterlegen, damit man am Ende ein Land über das Dropdownfeld auswählen kann?
Bei meiner Recherche habe ich alles Mögliche gefunden - aber keinen Hinweis darauf, wie man das umsetzt.
Danke und Gruß,
imebro
ich bin mit meinem PDF-Dokument jetzt soweit fertig... auch dank Eurer Hilfe
Eine Frage stellte sich mir jedoch erst eben, als ich das Dokument mal am PC ausfüllen wollte.
In das Textfeld "Land" muss man händisch sein Land eintragen. Aber dann dachte ich... das sollte doch auch über ein Dropdownfeld möglich sein.
Dazu habe ich mir nun eine Liste aller Länder gesucht und diese als Worddatei abgespeichert.
Natürlich könnte ich jetzt in den Eigenschaften des Dropdownfeldes, im Reiter "Optionen" jedes einzelne Land als Element eintragen und dann zur Elementliste hinzufügen.
Allerdings enthält meine Länderliste mehr als 200 Länder und auf diese Weise wäre es ein sehr hoher Aufwand.
Daher meine Frage:
Gibt es eine einfachere Möglichkeit, diese rund 200 Länder im Dropdownfeld zu hinterlegen, damit man am Ende ein Land über das Dropdownfeld auswählen kann?
Bei meiner Recherche habe ich alles Mögliche gefunden - aber keinen Hinweis darauf, wie man das umsetzt.
Danke und Gruß,
imebro
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 466116
Url: https://administrator.de/forum/alle-laender-ueber-dropdownfeld-auswaehlen-pdf-dokument-466116.html
Ausgedruckt am: 29.04.2025 um 15:04 Uhr
20 Kommentare
Neuester Kommentar
*.VBS erstellen, Pfad zum PDF und Pfad einer ANSI Textdatei in der die Länder jeweils in separater Zeile untereinander stehen anpassen, Name des Dropdowns anpassen, ausführen, fertig.
Ciao.
PDFFILE = "D:\datei.pdf"
COUNTRYFILE = "D:\countries.txt"
DROPDOWNNAME = "dd_countries"
Set fso = CreateObject("Scripting.FileSystemObject")
Set objAcro = CreateObject("AcroExch.App")
Set docAV = CreateObject("AcroExch.AVDoc")
Set docPD = CreateObject("AcroExch.PDDoc")
ret = docAV.Open(PDFFILE,"")
Set docPD = docAV.GetPDDoc()
Set jsDoc = docPD.GetJSObject
objAcro.Show
Set dd = jsDoc.getField(DROPDOWNNAME)
dd.clearItems()
countries = Split(fso.OpenTextFile(COUNTRYFILE,1).ReadAll(),vbNewLine)
dd.setItems(countries)
Set jsDoc = Nothing
Set docAV = Nothing
Set docPD = Nothing
Set fso = Nothing
Läuft hier einwandfrei, Debuggen musst du selbst, ansonsten PN = Auftrag.
Ich tippe auf das Encoding der Textdatei...
Ich tippe auf das Encoding der Textdatei...
Mit DROPDOWNNAME = "dd_countries" war doch der Name des Dropdownfeldes gemeint, nehme ich an
Rischtisch.Habe den Inhalt nämlich einfach aus einer Worddatei kopiert in die Textdatei und habe das Programm "Notepad++" verwendet.
Ohh ja, mach daraus ein simples PlainText ANSI File, UTF & Co muss man anders handeln, geht aber auch problemlos über eine Funktion wenn man das wollte.Function ReadUTF8(file)
With CreateObject("ADODB.Stream")
.Type = 2 : .Charset = "UTF-8" : .Open : .LoadFromFile(file)
ReadUTF8 = .ReadText
.Close
End With
End Function
countries = Split(ReadUTF8(COUNTRYFILE),vbNewLine)
Simples Array und eine Schleife drüber gepappt.
https://www.a-coding-project.de/ratgeber/vbscript
PDFFILE = "C:\Users\Name\Desktop\AidA\Antragsformulare\Antragsformular_ausfüllbar_NEU.pdf"
COUNTRYFILE = "C:\Users\Name\Desktop\AidA\Antragsformulare\Staaten.txt"
DROPDOWNNAMES = array("Geburtsland","Geburtsland_2","Geburtsland_3")
Set fso = CreateObject("Scripting.FileSystemObject")
Set objAcro = CreateObject("AcroExch.App")
Set docAV = CreateObject("AcroExch.AVDoc")
Set docPD = CreateObject("AcroExch.PDDoc")
ret = docAV.Open(PDFFILE,"")
Set docPD = docAV.GetPDDoc()
Set jsDoc = docPD.GetJSObject
countries = Split(fso.OpenTextFile(COUNTRYFILE,1).ReadAll(),vbNewLine)
for each ddName in DROPDOWNNAMES
Set dd = jsDoc.getField(ddName)
dd.clearItems()
dd.setItems(countries)
Next
objAcro.Show
Set jsDoc = Nothing
Set docAV = Nothing
Set docPD = Nothing
Set fso = Nothing
So wie ich das hier nachstelle ist das wohl ein Bug der Funktion setItems(), der bei mehrfachen Aufrufen aus VBS Acrobat zum Absturz bringt.
Die Funktion setItems() ist eigentlich die effizientere weil man mit Ihr das Array in einem hinzufügen kann, aber wenn's offensichtlich auf Grund eines Bugs nicht anders geht nutze diese langsamere Variante:
So das war's für mich hier jetzt aber endgültig.
Ciao.
Grüße Uwe
Die Funktion setItems() ist eigentlich die effizientere weil man mit Ihr das Array in einem hinzufügen kann, aber wenn's offensichtlich auf Grund eines Bugs nicht anders geht nutze diese langsamere Variante:
PDFFILE = "C:\Users\Name\Desktop\AidA\Antragsformulare\Antragsformular_ausfüllbar_NEU.pdf"
COUNTRYFILE = "C:\Users\Name\Desktop\AidA\Antragsformulare\Staaten.txt"
DROPDOWNNAMES = array("Geburtsland","Geburtsland_2","Geburtsland_3")
Set fso = CreateObject("Scripting.FileSystemObject")
Set objAcro = CreateObject("AcroExch.App")
Set docAV = CreateObject("AcroExch.AVDoc")
Set docPD = CreateObject("AcroExch.PDDoc")
ret = docAV.Open(PDFFILE,"")
Set docPD = docAV.GetPDDoc()
Set jsDoc = docPD.GetJSObject
countries = Split(fso.OpenTextFile(COUNTRYFILE,1).ReadAll(),vbNewLine)
For each ddName In DROPDOWNNAMES
Set dd = jsDoc.getField(ddName)
If Not dd Is Nothing Then
dd.clearItems()
For i = 0 To UBound(countries)
dd.insertItemAt countries(i),countries(i),i
Next
End If
Next
objAcro.Show
Set jsDoc = Nothing
Set docAV = Nothing
Set docPD = Nothing
Set fso = Nothing
Set objAcro = Nothing
Ciao.
Grüße Uwe