dポイントプレゼントキャンペーン実施中!

Execl VBA UserForm1の印刷先を変更したいのですが

Execl VBAで困っています。
UserFormの印刷を条件を変えてプリンター1とプリンター2に振り分けたいのですが
ネットを検索してもいい方法が見つかりません。
UserFormはOSのプリンターを参照するため思うように印刷できません。

一度下記を試しましたが、試通常使うプリンターでしか印刷出来ません
UserFormのプリンター切替方法のご伝授宜しくお願い致します。

===========================================
Sub チェンジプリンター()
Dim myPrinter As String

myPrinter = Application.ActivePrinter '現在のプリンターを記憶
If Worksheets("DeviceRead-Write").Cells(6, 11).Value = 2 Then 'I6が2ならEPSON_2プリンターに印刷する
Application.ActivePrinter = "EPSON_2 on Ne02:" 'プリンターを切り替える
Range("A4").Value = Application.ActivePrinter 'プリンターの確認
UserForm1.PrintForm 'フォームの印刷
Application.ActivePrinter = myPrinter 'プリンターを元に戻す
Range("A2").Value = Application.ActivePrinter 'プリンターの確認
End If

If Worksheets("DeviceRead-Write").Cells(6, 11).Value = 1 Then 'I6が2ならEPSON_1プリンターに印刷する
Range("D2").Value = Application.ActivePrinter 'プリンターの確認
UserForm1.PrintForm 'フォームの印刷
End If
End Sub

A 回答 (1件)

質問者様のコードでうまくいきそうに思えたのでやってみましたがやっぱりだめでした。


試してみた範囲では、どうやらVBEのプリンタ設定が使われているようです。
(Excel2007, Windows XP)
VBEのプリンタ設定をVBAから変更する方法ですが、探した範囲では見つかりませんでした。
そうなると、思いつくのはSendKeysでVBEを無理やり操作する方法や、画面キャプチャで代用する方法などです。
いずれもかなり複雑になりそうで安定性にも不安がありますのであまりおすすめできませんが、ご要望があれば検討してみます。
    • good
    • 0
この回答へのお礼

ご意見ありがとうございます。
どうも、VBでレジストリーをいじらないとだめみたいですね。

アクティブシートを保護し触れないようにして印刷します。

お礼日時:2013/08/28 21:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!