• ベストアンサー

accessでプリンタを切り替えるには?

access2000 windows2000 です。 プリンタをネットワーク上で2台つないでいるのですが、 アクセスからマクロまたはVBAで、 プリンタを切り替えるには どうすればいいのでしょうか? エクセルだとそういう命令があってできるのですが、 アクセスのヘルプを見てもわかりませんでした。 よろしくお願いします。

  • telmi
  • お礼率85% (41/48)

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

  • ベストアンサー
  • gadd3
  • ベストアンサー率46% (211/451)
回答No.4

僕も必要だったのでまた探していたら、簡単にできそうなのがありました。 あまり美しくないのですが、印刷ダイアログボックスを開かずに、比較的簡単にプリンタの変更ができます。 URLは以下です。 http://www.microsoft.com/japan/enable/training/kblight/t003/2/08.htm これをちょっと応用して、コマンドボタンのクリック時イベントに以下のように書きます。(上記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/kblight/t003/2/08.htm
telmi
質問者

お礼

ありがとうございます。 これなら、私にもすぐにできそうです。 早速やってみます。 紹介いただいた本、見てきました。 難しいですね。 とても、立ち読みでは理解できません。 でも、これがわかれば、細かい設定もできますね。 どうも、アドバイスありがとうございました。 とても役に立ちました。

その他の回答 (3)

  • gadd3
  • ベストアンサー率46% (211/451)
回答No.3

> 命令の中でプリンタを指定したいのですが。 Access2000の場合、一般的には Prtdevmode というのを使います。 (詳しくはヘルプを参照してください。ヘルプのサンプルは、一部、改行のアンダーバーの位置画がおかしいので、アンダーバーの前にスペースを入れると動きます。ただし、プリンタを選択するサンプルではないので、書き換えが必要です。) 2002だとPrinterオブジェクトというのがあるらしいです。 http://www.microsoft.com/japan/msdn/officedev/officexp/odc_acc10_printers.asp 僕はやったこと無いんですがけっこうめんどっちいらしいので、以下の書籍等を参考にしてみてください。(ドンズバではないのですが作り変えればいけると思います。) 毎日コミュニケーションズ 発行 津田 眞吾 著 「Access Professional Technique レポート&印刷」 p154~p161 最新刊ですから多くの多くの書店にあると思います。サンプルのCD-ROMデータ付です。立ち読みしてできそうだったらチャレンジしてみるといいと思います。 ではでは~

telmi
質問者

お礼

ありがとうございました。 Prtdevmodeでプリンタの切り替えもできるんですか。 とてもややこしくて、私にはなかなか理解できそうにありません。 他に方法がなければ、何とかそれでやってみようと思います。 2002では簡単にできるようですね。 ご紹介の本、早速見に行きたいと思います。 情報をどうもありがとうごさいました。

  • gadd3
  • ベストアンサー率46% (211/451)
回答No.2

もし簡単に処理したいなら、フォーム上に適当なコマンドボタンを作り、以下の2行のコードを「クリック時」イベントに書くといいと思います。コピペでいいです。レポート名だけ変えてください。 DoCmd.SelectObject acReport, "印刷したいレポート名", True DoCmd.RunCommand acCmdPrint コマンドボタンを押すと印刷ダイアログが出ますので、「プリンタ名」リストでプリンタを選べばいいと思います。 キャンセルした時はメッセージが出ますが「終了」を押せばいいです。 メッセージを出したくなかったら、エラー処理コードを書かないといけませんが、初心者ということですからまあ特にいいと思います。 意図することと違ってたらごめんなさい。

telmi
質問者

お礼

ありがとうございました。 やって見ました。 できました。 これ簡単でいいですね。 とりあえず、これで行きます。 でも、できたら、命令の中でプリンタを指定したいのですが。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

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

telmi
質問者

お礼

早速の回答ありがとうございました。 まだ初心者なもので、具体的にどうすればいいか わからないのですが、もう少し、詳しく教えてもらえないでしょうか。

関連するQ&A

  • マクロ どのパソコンでも同じプリンターから印刷

    ネットワークで繋がっている複数台のパソコンでエクセルで作ったフォーマットを同じプリンターで印刷したいのですが、どのようにマクロを組んだらいいのか分かりません 少しだけマクロが分かりますので分かりやすく教えてくれる方いませんか。 プリンタをしてするとNe06などプリンター名のあとに付けるのですが、別のパソコンになると番号を変えなければなりません 同じマクロでどのパソコンでも同じプリンターで印刷をできる方法を教えてください。

  • アクセスのマクロ

    アプリケーションを作りたいと思います。 エクセルのマクロ(VBA)はエラーが出るとコードが見えてしまいますが、 アクセスはどうなのでしょうか。うわさによれば見えないとのことですが・・・ その分、下手にエクセルで作るより、アクセスで作ったほうがいいのかと。 また、エクセルの場合は、マクロを含んでいると、起動した時、マクロを有効にするかというメッセージが表示されますが、アクセスはどうなのでしょうか。 アプリケーションを作るときそのようなメッセージは邪魔ですよね。

  • エクセルで印刷するプリンタを自動的に変更したい

    ネットワーク接続のプリンタが2台あります。 このうち片方のプリンタは、あるエクセルファイル専用出力にしたいのです。従いまして、当該エクセルファイルを印刷するときにだけ、自動的にそちらのプリンタから出力させるように制御したいのです。マクロか何かでそのような設定はできるのでしょうか。

  • エクセルからアクセスDBを操作する

    エクセルVBAでアクセスのDBへ接続しそこから選択項目をエクセル側に引っ張ろうとしています。 エクセルVBAの場合、マクロの記憶で分からない操作を記録して、そのままVBAに使う事が出来ますが、アクセスにも似たような機能はありますか? 普段アクセスではクエリで検索条件を指定していますが、このクエリの検索条件をエクセルのマクロの記憶みたいな形でコードとして出す事は出来ないでしょうか? エクセルVBAでアクセスでの検索条件を組み込みたいのです。

  • Access2000のVBAでエクセルマクロ実行

    お世話になります。 Access2000のVBAでエクセルのマクロとアクセルのマクロを 交互に実行したいと思っております。 (1)エクセルのマクロ1を実行 (2)アクセスのマクロAを実行 (3)エクセルのマクロ2を実行 と交互に実行したいのです。 下記のサイトなどを参考に試みたのですが、 http://www.nurs.or.jp/~ppoy/access/access/acX005.html (1)を実行している途中に (2)が進んでしまいます。 どのようにすれば、(1)が終わってから(2)と、前の処理が 終わってから次の処理に進むことが出来るのでしょうか? Access2000のVBAから指示をかけたいので、 Access2000のVBAのコードで教えて頂ければと 思います。

  • ACCESSからEXCELのマクロを実行

    ACCESSのデータをEXCELに落として、その後、EXCEL上でマクロを実行させたいのですが、可能でしょうか。 ACCESSのVBAでEXCELを操作することができるのは知っているのですが、EXCELの機能のマクロ(罫線を引いたり、始点―終点間に矢印を引いたり)などをしたいのです。 よろしくお願いします。

  • ネットワークできない(プリンタ共有できない)

    ネットワークが上手くいかない(プリンターの共有ができない) 家で3台のパソコンのホームネットワークを構築しておりました。 目的はプリンターの共有なのですが、Windows 7を本体としてプリンターを 接続し、他のパソコン(Windows 7とXP)を接続して使用してたのですが、 XPをリカバリしたところネットワークができなくなりました。 XPから他の2台のPCは見えているのですが、アクセスができません。 プリンターだけの共有でいいのですが、解決方法を教えて下さい。

  • プリンターにアクセス中

    お世話になります。 毎朝使用しているExcelファイルが、開くのに時間がかかるようになりました。理由は起動時に最初に出るExcelのマーク(添付図)の下側に「プリンターにアクセス中」と表示されています。 この表示時間が1分間弱かかります。このファイルは1月に1回プリントするだけです。この表示を通常の状態に戻す方法を教えていただきたいと思います。 よろしくお願いします。 OS:Windows 10 22H2 Excel : 2016

  • Accessのテーブルをエクセル出力するマクロ

    AccessのテーブルをVBAではなくマクロでエクセル出力したいと思っています。 マクロを使ってエクセル出力できるということはわかったのですが やり方がわかりません。 ご存知の方、教えてください。 よろしくお願いします。

  • ネットワークプリンタについて聞きたいのですが

    現在ネットワークプリンタを複数台設置し、用途に応じて別々なネットワークプリンタで印刷を行っています。 最近Aというネットワークプリンタに印刷をするように命令しても、かってにBというネットワークプリンタに印刷するようになってしまいました。 各ネットワークプリンタへのIPも正しく設定してあるのですが、何かしらの原因で違うIPのネットワークプリンタに印刷をするということは可能性としてありえるのでしょうか? またネットワーク以外(プリンタの設定など)で何か問題があるかもしれないなどありましたらご教授願いたいです。 よろしくお願いします。