Hallo zusammen,
ich bin ein VBS Neuling und habe folgendes Problem:
Ich habe mir mühselig ein Script zusammengebastelt, das alle Word-Dokumente in einer Ordnerstruktur mit Unterordnern ausdruckt.
Da die gedruckten Dokumente anschließend als Dokument gebunden werden sollen, ist es natürlich wichtig, dass die einzelnen Dokumente in der richtigen Reihenfolge gedruckt werden.
Jedoch scheint die Druckreihenfolge innerhalb eines Unterordners wahllos zu sein oder von einer anderen Dateieigenschaft (z. B. Erstellungsdatum??) abzuhängen.
Oder anders gesagt: die Zeile "For Each file In fldr.Files" macht nicht das was ich will.
Ich bin für jede Hilfe und Erklärung dankbar.
Viele Grüße,
taxischeria
Hier mein Code:
VB-BBCode eingefügt, bitte demnächst selbst dran denken!
ich bin ein VBS Neuling und habe folgendes Problem:
Ich habe mir mühselig ein Script zusammengebastelt, das alle Word-Dokumente in einer Ordnerstruktur mit Unterordnern ausdruckt.
Da die gedruckten Dokumente anschließend als Dokument gebunden werden sollen, ist es natürlich wichtig, dass die einzelnen Dokumente in der richtigen Reihenfolge gedruckt werden.
Jedoch scheint die Druckreihenfolge innerhalb eines Unterordners wahllos zu sein oder von einer anderen Dateieigenschaft (z. B. Erstellungsdatum??) abzuhängen.
Oder anders gesagt: die Zeile "For Each file In fldr.Files" macht nicht das was ich will.
Ich bin für jede Hilfe und Erklärung dankbar.
Viele Grüße,
taxischeria
Hier mein Code:
Visual Basic-Quellcode
- 'Pfad zu den Dokumenten wählen
- AuswahlTitel = "Bitte Datei oder Verzeichnis auswählen"
- StartOrdner = "17" 'Arbeitsplatz
- Set Dateiauswahl = CreateObject("Shell.Application").BrowseForFolder(0,AuswahlTitel,16,StartOrdner)
- Set Ordner = Dateiauswahl.Self
- 'Erweiterungen der Dateien die bearbeitet werden sollen
- arrFileExtensions = Array("doc","docx","docm")
- ' -------------------------------------------------
- Set fso = CreateObject("Scripting.Filesystemobject")
- Set objWord = CreateObject("Word.Application")
- Set objShell = CreateObject("Wscript.Shell")
- Dim intDocCount, intErrCount
- 'Applikation anzeigen und eventuelle Dialoge für Batchbetrieb unterdrücken
- objWord.Visible = True
- objWord.DisplayAlerts = 0
- 'Im Ordner Rekursiv alle Word-Dokumente verarbeiten
- Druckeinstellung = True
- parseFolders fso.GetFolder(Ordner.Path), True
- 'Das Anzeigen von Benachrichtigungen wieder aktivieren und Word schließen
- objWord.DisplayAlerts = -1
- objWord.Quit True
- Set fso = Nothing
- Set objWord = Nothing
- If intErrCount = 0 Then
- MsgBox "Es wurden insgesamt " & intDocCount & " Dokumente verarbeitet.", vbInformation, "Verarbeitung abgeschlossen"
- Else
- MsgBox "Es wurden insgesamt " & intDocCount & " Dokumente verarbeitet." & vbCrLf & "Davon ist bei " & intErrCount & " Dokumenten ein Fehler aufgetreten!", vbInformation, "Verarbeitung abgeschlossen"
- objShell.Run "Notepad.exe " & Ordner.Path & "\logfile_Druck.txt"
- End If
- 'Ende
- Function parseFolders(fldr, boolRecursion)
- For Each file In fldr.Files
- For i = 0 To UBound(arrFileExtensions)
- If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) Then
- intDocCount = intDocCount + 1
- 'Fehlerbehandlung für den Fall das ein Fehler beim Öffnen eines Dokumentes auftritt
- On Error Resume Next
- Set objDoc = objWord.Documents.Open(file.Path)
- If Err.Number <> 0 Then
- intErrCount = intErrCount + 1
- WriteLog "!!ERROR!! Fehler beim öffnen der Datei: -> '" & file.Path & "'"
- Else
- '----- Dokument drucken -----------
- If Druckeinstellung = True Then
- objWord.Dialogs(88).Show
- Druckeinstellung = False
- End If
- objDoc.PrintOut
- objDoc.Close
- WriteLog "Dokument wurde gedruckt: ->'" & file.Path & "' --> '" & strPathPDF & "'"
- End if
- Exit For
- End If
- Next
- Next
- 'Funktion wird rekursiv aufrufen wenn das durchsuchen aller Unterordner gewünscht ist
- If boolRecursion Then
- For Each subFolder in fldr.SubFolders
- parseFolders subFolder, True
- Next
- End If
- End Function
- Function WriteLog(strText)
- Set objLog = fso.OpenTextFile(Ordner.Path & "\logfile_Druck.txt",8,True)
- logline = Now & " - " & strText
- objLog.WriteLine(logline)
- objLog.Close
- End Function
VB-BBCode eingefügt, bitte demnächst selbst dran denken!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()