MS Access Tips/Sample and VBA and Blog customize etc...

フォームで印刷部数を設定してレポートを印刷する

フォーム上で「印刷部数」をテキストボックスに入力して「印刷」コマンドボタンをクリックすると、指定した部数で印刷されるようにしたい。

プレビューを開いて印刷設定ダイアログで「印刷部数」を設定すればいいのですが、プレビューを開かずに、直接、コマンドボタンクリックで印刷したい場合もありますね。

RptSetPrintCopies.png

難易度:

フォーム上にテキストボックス、チェックボックス、コマンドボタンを配置します。

テキストボックス
プロパティ 設定値
名前 印刷部数
既定値 0
チェックボックス
プロパティ 設定値
名前 部単位
既定値 True
コマンドボタン
プロパティ 設定値
名前 cmdPrint
クリック時 [イベント プロシージャ]

パッと思いつくのはForループで指定した部数だけ DoCmd.OpenReportを実行する方法です。

コマンドボタンのクリック時の イベントプロシージャ

この方法でなんら問題はないのですが、プリントキューが指定した部数分発生しますので、100部なんて指定した場合は、印刷ジョブウィンドウがえらいことになります。

DoCmd.PrintOut で部数を指定すればいいのですが、プレビューで開く必要があります。が、DoCmd.Echo False で画面描画を抑止すれば開いてないように見せることができます。

コマンドボタンのクリック時の イベントプロシージャ

上記の例では、部単位 の設定もできるようにしてます。他にも、ページ指定することも可能ですので、必要に応じて機能追加してください。

サンプルMDB が下記からダウンロードできます。
RptSetPrintCopies_07.zip (Access 2007 形式 - 89kb)
RptSetPrintCopies.zip (Access 2002-2003 形式 - 89kb)
RptSetPrintCopies_2k.zip (Access 2000 形式 - 89kb)

拍手する

2 Comments

GANTETSU says..."レポートを指定した上で指定枚数を印刷する方法"

はじめてメールさせていただきます。
Yahooで検索し貴方のHPを拝見させていただきました。
掲題の件、100あるレポートの中から必要な1つを指定し
それを5セット印刷するという場合どのように指定すれば
よろしいでしょうか?
今までは印刷マクロのwhere=[番号]=[Forms]![A]![番号]としそれを
一つのボタンの中に5個つくり5枚印刷というやり方をしていたのですが、
3枚必要な場合・5枚必要な場合と事情が変わってきた為、貴方の掲示して
いただいている方法を利用したいのですが、どのようにすればいいのか
わかりません。
ご協力をお願いできませんでしょうか
よろしくお願いいたします。

2012.04.17 16:33 | URL | #vF6NeGQU [edit]
hatena says..."re:レポートを指定した上で指定枚数を印刷する方法"

マクロでもできないことはないのですが、この再、VBAに挑戦して見ませんか。

マクロと比べてもそれほど難しくないし、可能性も飛躍的に広がります。

記事の2番目のコードの、DoCmd.OpenReport の引数に抽出条件を追加するだけです。

フォーム上に、「番号」というテキストボックスがあり、そこで数値を入力するとして、下記の赤文字のコードを挿入します。

Private Sub cndPrint_Click()
Const DocName = "区分別商品一覧"
  DoCmd.Echo False
  DoCmd.OpenReport DocName, acViewPreview, , "番号=" & Me.番号
  DoCmd.PrintOut acPrintAll, , , , Me!印刷部数, Me!部単位
  DoCmd.Close acReport, DocName
  DoCmd.Echo True
End Sub

2012.04.19 16:21 | URL | #5uE6dEgY [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/259-295e0238
該当の記事は見つかりませんでした。