私は以下のシステムを導入しています
- 12通のメールのうち1通が午前5時から7時の間にランダムな順序で届く
- Outlook ルールは電子メールを取得し、添付されたスプレッドシートの一部を自動的に変更して印刷する VBA スクリプトを実行します (すべてではありません)。
- 朝にプリントアウトをすべて集めて、手作業でグループ分けしてホッチキスで留めます
印刷前に印刷物をグループ化して、印刷してホチキス留めできるようにする最適な方法は何でしょうか?
答え1
どのような順番で並べたいかは言わないんですね…
これを試してください。プリンターのプロパティに移動し、[詳細設定] ボタンをクリックします。[最後のページがスプールされた後に印刷を開始する] をクリックし、[スプールされたドキュメントを最初に印刷する] がオンになっていることを確認します。
その後、電子メールは Outlook が印刷する順序で印刷されます。Outlook の動作をテストするには、ファイルに印刷して、ファイルが作成される順序を確認します。正しい順序でない場合は、Outlook の設定を変更して、希望する順序になるようにしてから、プリンターに再接続します。
答え2
私は問題を解決し、最終的に次のことを行いました。
Z:\Print
各ドキュメントは、次のコードを使用して、VBA で XPS プリンター (作業マシンでは PDF 印刷は利用できません) を使用してフォルダーに *.xps ファイルに印刷されます。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
7.00バッチスクリプト(使用ゴーストスクリプト) すべての *.xps ファイルを *.pdf ファイルに変換することがスケジュールされています。おそらく 2 つのファイル名変数は必要ありません。これはデバッグからの残りです。
@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
次に、私が書いたJavaプログラムが実行され、別々のPDFファイルを目的のグループにマージします(pdfボックス)
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(); } }
最後に、結合されたすべての PDF ファイルを印刷するバッチが実行されます。遅延プロセス キルが必要です。プロセスの呼び出し後にプロセス キルを実行しようとすると、プロセスが見つからないというメッセージが表示されます (タスク マネージャーにプロセスが表示されている場合でも)。
@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