• ベストアンサー

ExcelやWordの特定のファイルを印刷するときのみ、通常使うプリン

ExcelやWordの特定のファイルを印刷するときのみ、通常使うプリンタとは別のプリンタで印刷したいです。 普通なら印刷の直前で、プリンタを切り替えますが、これが面倒。 こんなことってできますか? 2000.2003,2007どれでお答えいただいても結構です。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.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切替はポート番号不要みたい)

vc-toku
質問者

お礼

御礼が遅れましたことをお詫びします。 >ネットワーク環境での複数端末からの利用に対応させるなら、ちょっと面倒です。 これがEPSONではありませんが、ネットワーク上にあるプリンタです。 やはりマクロで対応させるしかありませんかね。

その他の回答 (1)

  • chuchuo
  • ベストアンサー率45% (99/217)
回答No.1

VBAで組むしかないでしょう。 ファイルの区別は拡張子で分けて たとえば xls2 とか(ファイルの関連付けが必要ですが) その拡張子をVBAに判断させて..... というぐいあいに。

関連するQ&A