VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
Hallo,
ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle gleich (da Klientenbezogen), unterscheiden sich nur inhaltlich.
Um den Kollegen morgens zu ersparen alle Dateien einzeln zu öffnen, würde ich das gerne mit einem Script erledigen. Als Standard ist der Acrobat-Reader DC installiert.
Kann mir da jemand auf die Sprünge helfen oder hat vielleicht auch eine andere Idee?
Ich dachte vor geraumer Zeit auch schon mal an eine Art "Verwaltungsoberfläche" in VB die mir in einem linken Fenster die verfügbaren PDF-Dateien anzeigt (als Links o.ä.), im rechten Fenster den Inhalt des Formulars.
Da es sich dabei jedoch um dyn. XML-Formulare handelt befürchte ich, daß das wohl so nicht funktioniert - zumindest spuckte Google mir keinen Ansatz aus, der in diese Richtung geht. Oder geht's vielleicht doch? ;)
Daher nun die Idee mit dem VBS, das auf einem Schlag alle Dateien öffnen soll.
Lieben Dank im Voraus für eure Ideen,
Juweee
ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle gleich (da Klientenbezogen), unterscheiden sich nur inhaltlich.
Um den Kollegen morgens zu ersparen alle Dateien einzeln zu öffnen, würde ich das gerne mit einem Script erledigen. Als Standard ist der Acrobat-Reader DC installiert.
Kann mir da jemand auf die Sprünge helfen oder hat vielleicht auch eine andere Idee?
Ich dachte vor geraumer Zeit auch schon mal an eine Art "Verwaltungsoberfläche" in VB die mir in einem linken Fenster die verfügbaren PDF-Dateien anzeigt (als Links o.ä.), im rechten Fenster den Inhalt des Formulars.
Da es sich dabei jedoch um dyn. XML-Formulare handelt befürchte ich, daß das wohl so nicht funktioniert - zumindest spuckte Google mir keinen Ansatz aus, der in diese Richtung geht. Oder geht's vielleicht doch? ;)
Daher nun die Idee mit dem VBS, das auf einem Schlag alle Dateien öffnen soll.
Lieben Dank im Voraus für eure Ideen,
Juweee
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 361748
Url: https://administrator.de/contentid/361748
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo,
Gruß,
Peter
Zitat von @Juweee:
ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt).
Liquid Crystal Display?ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt).
würde ich das gerne mit einem Script erledigen.
Siehe angebot von @emeriksAls Standard ist der Acrobat-Reader DC installiert.
Wenn der im System hinterlegt ist um PDFs zu Öffnen...Da es sich dabei jedoch um dyn. XML-Formulare handelt befürchte ich, daß das wohl so nicht funktioniert
Ohne das du zu deinen dyn. nichts weiter zu sagen hast... und auch zu deinen XML die eigentlich ein PDF sein sollen...Gruß,
Peter
Wie würde die Batch als VBS aussehen?
dim fso,shell,file
Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("Wscript.Shell")
for each file in fso.GetFolder("c:\Ordner").Files
if LCase(fso.GetExtensionName(file.Name)) = "pdf" then
shell.Run """" & file.Path & """",1,False
End if
Next
Zitat von @Juweee:
Das scheint mir schon mal in die richtige Richtung zu gehen, jedoch meckert er Zeile 6 an, da angeblich keine Dateien vorhaben sind.
Geht hier mit installiertem Acrobat(Pro/DC) einwandfrei. Für Dateien mit Leerzeichen im Pfad habe ich es oben noch mal minimal angepasst, vielleicht war das bei dir das Problem.Das scheint mir schon mal in die richtige Richtung zu gehen, jedoch meckert er Zeile 6 an, da angeblich keine Dateien vorhaben sind.
Zitat von @Juweee:
Hallo Sepp,
Super, das funktioniert
Eine Frage hätte ich noch: Gibt es eine Möglichkeit, daß jeweils der jüngste Ordner genommen wird, damit ich das Script nicht jeden Monat anpassen muss?
Meine Ordnerstruktur folgt z.B. ".\Tagesberichte\01.18". Am 01.02. wird automatisch unterhalb von Tagesberichte der Ordner 02.18 angelegt, zum 01.03. der Ordner 03.18 usw.
Auch kein Beinbruch ...Hallo Sepp,
Super, das funktioniert
Eine Frage hätte ich noch: Gibt es eine Möglichkeit, daß jeweils der jüngste Ordner genommen wird, damit ich das Script nicht jeden Monat anpassen muss?
Meine Ordnerstruktur folgt z.B. ".\Tagesberichte\01.18". Am 01.02. wird automatisch unterhalb von Tagesberichte der Ordner 02.18 angelegt, zum 01.03. der Ordner 03.18 usw.
dim fso,shell,file,folder
Const ROOTFOLDER = "C:\Tagesberichte"
Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("Wscript.Shell")
folder = getNewestFolder(ROOTFOLDER)
If folder <> "" Then
For Each file In fso.GetFolder(folder).Files
If LCase(fso.GetExtensionName(file.Name)) = "pdf" then
shell.Run """" & file.Path & """",1,False
End if
Next
End If
Function getNewestFolder(strPath)
dim objList, f
Set objList = CreateObject("ADOR.Recordset")
objList.Fields.Append "name", 200, 255
objList.Fields.Append "date", 7
objList.Open
If fso.FolderExists(strPath) then
For Each f In fso.GetFolder(strPath).SubFolders
objList.AddNew
objList("name").Value = f.Path
objList("date").Value = f.DateCreated
objList.Update
Next
End If
objList.Sort = "date DESC"
If objList.RecordCount > 0 Then
objList.MoveFirst
getNewestFolder = objList.Fields("name").Value
Else
getNewestFolder = ""
End If
Set objList = Nothing
End Function
Du verwendest Const also eine Konstante und die darf niemals dynamischen Inhalt, also aus anderen Variablen zusammengebaut sein, also entferne das Const dann klappt das auch.
Btw. solltest du stattdessen besser die Umgebungsvariable USERPROFILE verwenden, denn der Profilordner ist nicht immer gleich dem Usernamen und die Profile müssen auch nicht immer unter C:\Users liegen!
Btw. solltest du stattdessen besser die Umgebungsvariable USERPROFILE verwenden, denn der Profilordner ist nicht immer gleich dem Usernamen und die Profile müssen auch nicht immer unter C:\Users liegen!
profile = shell.ExpandEnvironmentStrings("%USERPROFILE%")
ROOTFOLDER = profile & "\Dropbox\FP\Tagesberichte"
Natürlich musst du shell statt wshshell verwenden denn mit dem Namen ist das Object ja deklariert, hatte ich übersehen, ist korrigiert!