プロが教える店舗&オフィスのセキュリティ対策術

access2000 windows2000 です。

プリンタをネットワーク上で2台つないでいるのですが、
アクセスからマクロまたはVBAで、
プリンタを切り替えるには
どうすればいいのでしょうか?

エクセルだとそういう命令があってできるのですが、
アクセスのヘルプを見てもわかりませんでした。
よろしくお願いします。

A 回答 (4件)

僕も必要だったのでまた探していたら、簡単にできそうなのがありました。


あまり美しくないのですが、印刷ダイアログボックスを開かずに、比較的簡単にプリンタの変更ができます。

URLは以下です。

http://www.microsoft.com/japan/enable/training/k …


これをちょっと応用して、コマンドボタンのクリック時イベントに以下のように書きます。(上記Webページ3までは同じです。上記3はコピペでOKです。モジュール名はモジュール1でOKです。)

Call SetPrtDevPrt1toPrt2("ダミー", "印刷用")
DoCmd.OpenReport "印刷用", acViewPreview


要するに意味的には以下のような感じです。

Call SetPrtDevPrt1toPrt2("設定を流用したいレポート名", "印刷したいレポート名")
DoCmd.OpenReport "印刷したいレポート名", acViewPreview


これを実行すると、
「印刷したいレポート名」のレポートのプリンタ名設定が「設定を流用したいレポート名」のレポートのプリンタ名設定と同じになります。(ただし、余白設定とかも流用したいレポートと同じになってしまいますが…)で、レポートがプレビューされます。

なので、インストールしてあるプリンタの数、または余白設定の数だけ、ダミーのレポートを作れば、ダイアログを表示しなくても、VBA内でプリンタ名の設定を自由に変更できるということになります。(余白もVBAで自動指定したいときはPrtDevModeを使うしかないかもしれません。)

なお、2行目の
DoCmd.OpenReport "印刷したいレポート名", acViewPreview
は「acViewPreview」を省略すればプレビューされずに即印刷されます。


なお、書き忘れましたが、あるレポートにある特定のプリンタしか使わない場合は、こんなことしなくても、ページ設定の「通常使うプリンタ」や「その他のプリンタ」でプリンタを決め打ちできます。

参考URL:http://www.microsoft.com/japan/enable/training/k …
    • good
    • 1
この回答へのお礼

ありがとうございます。

これなら、私にもすぐにできそうです。
早速やってみます。

紹介いただいた本、見てきました。
難しいですね。
とても、立ち読みでは理解できません。
でも、これがわかれば、細かい設定もできますね。

どうも、アドバイスありがとうございました。
とても役に立ちました。

お礼日時:2003/05/07 08:00

> 命令の中でプリンタを指定したいのですが。



Access2000の場合、一般的には Prtdevmode というのを使います。
(詳しくはヘルプを参照してください。ヘルプのサンプルは、一部、改行のアンダーバーの位置画がおかしいので、アンダーバーの前にスペースを入れると動きます。ただし、プリンタを選択するサンプルではないので、書き換えが必要です。)

2002だとPrinterオブジェクトというのがあるらしいです。
http://www.microsoft.com/japan/msdn/officedev/of …

僕はやったこと無いんですがけっこうめんどっちいらしいので、以下の書籍等を参考にしてみてください。(ドンズバではないのですが作り変えればいけると思います。)

毎日コミュニケーションズ 発行
津田 眞吾 著
「Access Professional Technique レポート&印刷」
p154~p161

最新刊ですから多くの多くの書店にあると思います。サンプルのCD-ROMデータ付です。立ち読みしてできそうだったらチャレンジしてみるといいと思います。

ではでは~
    • good
    • 0
この回答へのお礼

ありがとうございました。

Prtdevmodeでプリンタの切り替えもできるんですか。
とてもややこしくて、私にはなかなか理解できそうにありません。
他に方法がなければ、何とかそれでやってみようと思います。

2002では簡単にできるようですね。
ご紹介の本、早速見に行きたいと思います。

情報をどうもありがとうごさいました。

お礼日時:2003/05/04 07:49

もし簡単に処理したいなら、フォーム上に適当なコマンドボタンを作り、以下の2行のコードを「クリック時」イベントに書くといいと思います。

コピペでいいです。レポート名だけ変えてください。

DoCmd.SelectObject acReport, "印刷したいレポート名", True
DoCmd.RunCommand acCmdPrint


コマンドボタンを押すと印刷ダイアログが出ますので、「プリンタ名」リストでプリンタを選べばいいと思います。

キャンセルした時はメッセージが出ますが「終了」を押せばいいです。
メッセージを出したくなかったら、エラー処理コードを書かないといけませんが、初心者ということですからまあ特にいいと思います。

意図することと違ってたらごめんなさい。
    • good
    • 0
この回答へのお礼

ありがとうございました。

やって見ました。
できました。
これ簡単でいいですね。
とりあえず、これで行きます。

でも、できたら、命令の中でプリンタを指定したいのですが。

お礼日時:2003/05/03 07:48

指定のプリンタで出力するには変数を宣言してプリンタオブジェクトに使用するプリンタ名を代入すればできます。


2台のプリンタを列挙して選択後出力することもできます。その場合プリンタを列挙しリスト化する記述と選択されたプリンタをオブジェクトに代入する記述が必要です。
Excelとそう大差なく出来ると思いますが。
または出力するレポートが必ず2台ある内の片方でのみ出力するならレポートをプレビューの状態にしてページ設定で出力するプリンタを指定して出力することが出来ます。
意図している事と違うようでしたらゴメンナさい。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。

まだ初心者なもので、具体的にどうすればいいか
わからないのですが、もう少し、詳しく教えてもらえないでしょうか。

お礼日時:2003/05/02 16:14

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

関連するカテゴリからQ&Aを探す