- ベストアンサー
ExcelやWordの特定のファイルを印刷するときのみ、通常使うプリン
ExcelやWordの特定のファイルを印刷するときのみ、通常使うプリンタとは別のプリンタで印刷したいです。 普通なら印刷の直前で、プリンタを切り替えますが、これが面倒。 こんなことってできますか? 2000.2003,2007どれでお答えいただいても結構です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Excelの話です。 特定のファイルを『特定の端末で』印刷する時の設定だけなら、 その特定ファイルのThisWorkbookモジュールというものに Workbook_BeforePrint というイベントプロシージャを設定すれば良いです。 一例ですが 'ThisWorkbook Module Option Explicit Private aPrinter As String Private Sub Workbook_BeforePrint(Cancel As Boolean) Const pPrinter = "EPSON LP-S0000 on Ne01:" '印刷したいプリンタ Dim x As Long With Application aPrinter = .ActivePrinter On Error GoTo errHndler .ActivePrinter = pPrinter .OnTime Now, "ThisWorkbook.defPrintset" End With Exit Sub errHndler: x = MsgBox(pPrinter & "に切替できませんでした。" _ & vbLf & "キャンセルしますか?", vbYesNo) If x = vbYes Then Cancel = True End Sub Private Sub defPrintset() Application.ActivePrinter = aPrinter End Sub こんな感じ。 Application.ActivePrinterを印刷(プレビュー)の前後で自動的に切り替える方法です。 でもネットワーク環境での複数端末からの利用に対応させるなら、ちょっと面倒です。 "EPSON LP-S0000 on Ne01:" のポート番号「Ne01:」が端末ごとに違います。 この場合、現実的なのは『このファイルを印刷する時はこのボタンから』、とシート上にボタンを置いて Sub test() Dim aPrinter As String aPrinter = Application.ActivePrinter ActiveWindow.SelectedSheets.PrintOut ActivePrinter:="EPSON LP-S0000" Application.ActivePrinter = aPrinter End Sub こんなマクロをボタンに登録して使うほうが現実的でしょう。 (PrintOutメソッド時の引数 ActivePrinter にはポート番号不要) Wordも詳しくないのであまりわからないですが、ボタン方式なら Sub test2() Dim aPrinter As String aPrinter = ActivePrinter ActivePrinter = "EPSON LP-S0000" ActiveDocument.PrintOut ActivePrinter = aPrinter End Sub こうかな。(WordのActivePrinter切替はポート番号不要みたい)
その他の回答 (1)
- chuchuo
- ベストアンサー率45% (99/217)
VBAで組むしかないでしょう。 ファイルの区別は拡張子で分けて たとえば xls2 とか(ファイルの関連付けが必要ですが) その拡張子をVBAに判断させて..... というぐいあいに。
お礼
御礼が遅れましたことをお詫びします。 >ネットワーク環境での複数端末からの利用に対応させるなら、ちょっと面倒です。 これがEPSONではありませんが、ネットワーク上にあるプリンタです。 やはりマクロで対応させるしかありませんかね。