Ich habe ein Follow-System eingerichtet
- Eine von 12 E-Mails kommt zwischen 5 und 7 Uhr morgens an, in zufälliger Reihenfolge
- Die Outlook-Regel greift auf die E-Mail zu und führt ein VBA-Skript aus, das Teile einiger der angehängten Tabellen automatisch ändert und druckt (nicht alle).
- Ich hole morgens alle Ausdrucke ab, sortiere sie manuell in Gruppen und hefte sie zusammen.
Wie können die Ausdrucke vor dem Drucken am besten gruppiert werden, um sie ausdrucken und heften zu können?
Antwort1
Sie sagen nicht, in welcher Reihenfolge Sie sie haben möchten …
Versuchen Sie Folgendes. Gehen Sie zu den Druckereigenschaften und klicken Sie auf die Schaltfläche „Erweitert“. Klicken Sie auf „Drucken beginnen, nachdem die letzte Seite gespoolt wurde“ und stellen Sie sicher, dass „Gespoolte Dokumente zuerst drucken“ aktiviert ist.
Die E-Mails werden dann in der Reihenfolge gedruckt, in der Outlook sie druckt. Um zu testen, was Outlook macht, können Sie versuchen, in eine Datei zu drucken und zu prüfen, in welcher Reihenfolge die Dateien erstellt werden. Wenn dies nicht die richtige Reihenfolge ist, versuchen Sie, die Einstellungen in Outlook so zu ändern, dass die Reihenfolge Ihren Wünschen entspricht. Stellen Sie dann die Verbindung zum Drucker wieder her.
Antwort2
Ich habe mein Problem gelöst und schließlich Folgendes getan:
Z:\Print
Jedes Dokument wird mit dem XPS-Drucker in VBA (PDF-Druck ist auf Arbeitscomputern nicht verfügbar) in *.xps-Dateien in einen Ordner gedruckt . Dabei wird der folgende Code verwendet:Application.ActivePrinter = XPSPrinter ActivePrinterName = Application.ActivePrinter If (InStr(ActivePrinterName, "XPS")) Then Dim Filename As String Filename = ActiveWorkbook.name rngPrint.PrintOut Copies:=1, _ printtofile:=True, prtofilename:=FilePath & File & ".xps" End If
Bei 7.00 Batch-Skript (mitGhostscript) die Konvertierung aller *.xps-Dateien in *.pdf-Dateien ist geplant. Wahrscheinlich brauchen wir keine zwei Dateinamenvariablen, das ist ein Überbleibsel aus der Fehlersuche.
@echo off setlocal enabledelayedexpansion FOR /R Z:\Overnight\Print %%F in (*.xps) DO ( Set filename=%%~nF%%~xF Set outputFilename=%%~nF%.pdf Set filename2=Z:\Print\%!filename! Set outputFilename2=Z:\PrintPDF\%!outputFilename! C:\ghostxps\gxps.exe -sDEVICE=pdfwrite -sOutputFile=!outputFilename2! -dNOPAUSE !filename2! ) exit exit
Dann wird ein Java-Programm ausgeführt, das ich geschrieben habe. Es fügt einzelne PDF-Dateien in die gewünschten Gruppen zusammen (mitpdfbox)
public void combine(String outputName, String[] filenames) throws IOException, PrinterException { try { PDFMergerUtility mergePdf = new PDFMergerUtility(); for (String filename : filenames){ mergePdf.addSource(getFileByName(filename)); } mergePdf.setDestinationFileName(outputPath+outputName+".pdf"); mergePdf.mergeDocuments(); System.out.println("Combined "+outputName); } catch (Exception e) { e.printStackTrace(); } }
Zum Schluss wird ein Batch ausgeführt, der alle kombinierten PDF-Dateien druckt. Ein verzögerter Prozessabbruch ist erforderlich. Wenn Sie versuchen, den Prozessabbruch nach dem Aufruf des Prozesses durchzuführen, erhalten Sie lediglich die Meldung, dass der Prozess nicht gefunden wurde (selbst wenn er direkt im Taskmanager vorhanden ist).
@echo off setlocal enabledelayedexpansion RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "\\SITE\PRINTER-BATCH" FOR /R Z:\CombinedPDF %%F in (*.pdf) DO ( Set filename=%%~nF%%~xF Set filename2=Z:\CombinedPDF\%!filename! start cmd /c "timeout 15 & taskkill /f /im acrord32.exe" call "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t !filename2! ) RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "\\SITE\PRINTER-DEFAULT" exit exit