• ベストアンサー

★access2000★レポートを複数枚印刷したい時は??

納品書レポートを印刷したいのですが、【納品書】【請求書】【納品書(控)】といったふうに、タイトルが違い内容がまったく同じレポートを続けて印刷するにはどうしたらよいのでしょうか? 初めて質問させていただきますが、どなたか良いアドバイスをお願いします。

  • non23
  • お礼率76% (33/43)

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

  • ベストアンサー
回答No.6

さきほどの回答で説明が一部間違えていましたので、訂正します。 >フォームで編集中の 例)『請求書ID』が【1】のレコードだけ印刷したい時って、どんな条件式?を書けばでできますか? それぞれのレポートを開くときのイベントで、次のような処理を入れます。 レポートの元のレコードソースが商品テーブル、フォームが商品フォームと仮定して、 Private Sub Report_Open(Cancel As Integer) Me.RecordSource = "SELECT * FROM [商品テーブル] WHERE [商品ID]=" & Forms![商品フォーム].商品ID End Sub としてください。 これは現在のフォームでアクティブなレコード(カレントレコード)の商品IDのレコードだけをレポートのレコードソースにする処理です。 あと、いきなり印刷されるのを防ぐため一時的に 印刷をプレビューにコードを修正してみることも一法です。 DoCmd.OpenReport stDocName, acNormalを DoCmd.OpenReport stDocName, acPreview に一時的に修正して確認してみてください。 ご参考になれば幸いです。m(__)m

non23
質問者

お礼

ありがとうございます!! おかげさまで問題は解決しました。

その他の回答 (5)

回答No.5

>フォームで編集中の 例)『請求書ID』が【1】のレコードだけ印刷したい時って、どんな条件式?を書けばでできますか? それぞれのレポートを開くときのイベントで、次のような処理を入れます。 レポートの元のレコードソースが商品テーブル、フォームが、商品テーブルと仮定して、 Private Sub Report_Open(Cancel As Integer) Me.RecordSource = "SELECT * FROM [商品テーブル] WHERE [商品ID]=" & Forms![商品フォーム].商品ID End Sub としてください。 これは現在のフォームでアクティブなレコード(カレントレコード)の商品IDのレコードだけをレポートのレコードソースにする処理です。 ご参考になれば幸いです。m(__)m

回答No.4

四たびShadowMoonです。 No.1,No.2の回答で、Public変数の宣言をクラスモジュール(フォームやレポート単位のプログラム群)ではなくて、標準モジュールで宣言しないとだめなようでした。どうもすみません。(^_^;) もしNo.1、2の回答を試したければ、VBEの画面から挿入メニュー~標準モジュールで標準モジュールを挿入できますので、ここにPublic変数を宣言するコードを入れかえてください。 なお蛇足ですがNo.3の回答例のレポートの名称は、いいかげんなのでちゃんとご自分で付けてださいね。 あと、この方法を使えば、それぞれのページ設定を変える事も簡単にできますのでそれぞれのページ設定を変えて印刷したい場合にも有用な方法のひとつです。 今回No.2~3では、AccessでVBAを使用することのとっかかりになればということで回答いたしました。また不明な点があれば、教えてください。m(__)m

non23
質問者

補足

 できました!!!できました!!!感動です(>_<)  が、もう一つお聞きしたいことが出てきました。  フォームで編集中の 例)『請求書ID』が【1】のレコードだけ印刷したい時って、どんな条件式?を書けばでできますか? 今、作成中のデータベースは既に、何件かレコードが入力されているんですが、【請求書を印刷しますか?】の後で【はい】のボタンをクリックしたら、全レコードの請求書が印刷されてしまわないですか? そうなってしまってはやばいから、まだ【はい】ボタンをクリックできずにいます。  お願いします。お手数をおかけしますが教えて下さいませ。

回答No.3

ふたたびShadowMoonです。 No.1,No.2の回答は1つのレポートを使いまわす方法ですので、初心者の方にはちょっと難しかったかもしれません。 もっと簡単な方法としては、 (1)同じレポートをコピーして、3つ作成し、それぞれタイトルだけ異なるようにラベルを入れておく。 (2)印刷するためのフォームにボタンを作り、ボタンをクリックすると、3つのレポートを印刷するようにする。(この部分がVBA) とすることもできます。 (1)「同じレポートをコピーして、3つ作成し、それぞれタイトルだけ異なるようにラベルを入れておく。」方法の例 データベースウインドウで元になるレポートを選択 (レポートの名前は仮に”レポート1納品書”とします。) Ctrlキーを押しながら、空いているところにドラッグ&ドロップ コピーされたレポートの名前を修正 (コピーして修正したレポートの名前を仮に”レポート2納品書”とします。) 同様にもうひとつコピーして名前を修正 (コピーして修正したレポートの名前を仮に”レポート3納品書控え”とします。) (2)「印刷するためのフォームにボタンを作り、ボタンをクリックすると、3つのレポートを印刷するようにする。(この部分がVBA)」方法の例 (1)ボタンを作成したいフォームをデザイン表示します。 (2)フォームデザインのツールバーからコマンドボタンをクリックします。 (3)マウスポインタをフォーム上に移動し、任意の大きさでドラッグします。 (4)コマンドボタンウイザードが表示されたら、種類はレポートの操作、ボタンの動作はレポートの印刷を選択し、次へのボタンをクリックします。 (5)印刷するレポートを選択し、次へのボタンをクリックします。 (6)絵と文字列がありますが、文字列の方が分かりやすいので、文字列の方に●をつけてください。 (7)文字列を”レポートの印刷”から”納品書と請求書の印刷”に変えてみましょう。 (変え終わったら請求書の印刷部分をドラッグして、Ctrlキーを押しながらCキーを叩いてください。) (8)次へをクリックすると”コマンド何とか”が反転していますので、Ctrlキーを押しながらVキーを叩いてください。ボタン名が”請求書の印刷”と変わります。 (9)完了をクリックするとボタンができます。 VBAの表示 (1)作成したボタンを右クリックし、プロパティを選択します。 (2)イベントタブか、すべてのタブを選択します。 (3)クリック時というところに[イベントプロシージャ]と表示されています。 (4)[イベントプロシージャ]の欄をクリックすると、欄の右に▼と・・・のボタンが出ます。 (5)・・・をクリックするとボタンクリック時のプログラムコードが表示されるVBE(VisualBasicEditor)画面が表示されます。 Private Sub 納品書と請求書の印刷_Click() On Error GoTo Err_納品書と請求書の印刷_Click Dim stDocName As String stDocName = "レポート1納品書" DoCmd.OpenReport stDocName, acNormal Exit_納品書と請求書の印刷_Click: Exit Sub Err_納品書と請求書の印刷_Click: MsgBox Err.Description Resume Exit_納品書と請求書の印刷_Click End Sub 上記のVBAの修正を行います。 (1)stDocName~と入力されているところから3行分選択します。(ドラッグして色を反転させます。) (2)Ctrlキーを押しながらCキーを叩いて選択部分をコピーします。 (3)Exit_納品書と請求書の印刷_Click:と入力されている前の行をクリックしてカーソルを表示します。 (4)Ctrlキーを押しながらVキーを2回叩きます。 (5)レポートの名前を修正します。(下記にサンプルを示します。) Private Sub 納品書と請求書の印刷_Click() On Error GoTo Err_納品書と請求書の印刷_Click Dim stDocName As String stDocName = "レポート1納品書" DoCmd.OpenReport stDocName, acNormal stDocName = "レポート2請求書" DoCmd.OpenReport stDocName, acNormal stDocName = "レポート3請求書控え" DoCmd.OpenReport stDocName, acNormal Exit_納品書と請求書の印刷_Click: Exit Sub Err_納品書と請求書の印刷_Click: MsgBox Err.Description Resume Exit_納品書と請求書の印刷_Click End Sub (6)デバッグメニューから***のコンパイルを選択して、入力したコードに問題ないか確認します。 (7)上書き保存ボタンをクリックし、保存します。 (8)フォームをデザインビューから通常の表示に戻し、ボタンをクリックしてください。 また、コードを下記のように修正すれば、ボタンをクリックしていきなり印刷されるのを防ぐことができます。 Private Sub 納品書と請求書の印刷_Click() On Error GoTo Err_納品書と請求書の印刷_Click If MsgBox("印刷しますか?", vbYesNo + vbDefaultButton1, "確認") = vbYes Then Dim stDocName As String stDocName = "レポート1納品書" DoCmd.OpenReport stDocName, acNormal stDocName = "レポート2請求書" DoCmd.OpenReport stDocName, acNormal stDocName = "レポート3請求書控え" DoCmd.OpenReport stDocName, acNormal End If Exit_納品書と請求書の印刷_Click: Exit Sub Err_納品書と請求書の印刷_Click: MsgBox Err.Description Resume Exit_納品書と請求書の印刷_Click End Sub ご検討を祈ります。m(__)m

non23
質問者

お礼

ShadowMoonさん何度もありがとうございます。 No.1.2でやってみたら、エラーは出ないのですが三つのタイトルが同時に表示されるレポートが3枚印刷されてしまって、困っていたんですよ(^_^;) 初心者向けの方法にチャレンジしてみますね。

回答No.2

>(2)次にフォームのボタンをクリックしたら3回印刷するような処理を入れておきます。 (1)ボタンを作成したいフォームをデザイン表示します。 (2)フォームデザインのツールバーからコマンドボタンをクリックします。 (3)マウスポインタをフォーム上に移動し、任意の大きさでドラッグします。 (4)コマンドボタンウイザードが表示されたら、種類はレポートの操作、ボタンの動作はレポートの印刷を選択し、次へのボタンをクリックします。 (5)印刷するレポートを選択し、次へのボタンをクリックします。 (6)絵と文字列がありますが、文字列の方が分かりやすいので、文字列の方に●をつけてください。 (7)文字列を”レポートの印刷”から”請求書の印刷”に変えてみましょう。 (変え終わったら請求書の印刷部分をドラッグして、Ctrlキーを押しながらCキーを叩いてください。) (8)次へをクリックすると”コマンド何とか”が反転していますので、Ctrlキーを押しながらVキーを叩いてください。ボタン名が”請求書の印刷”と変わります。 (9)完了をクリックするとボタンができます。 VBAの表示 (1)作成したボタンを右クリックし、プロパティを選択します。 (2)イベントタブか、すべてのタブを選択します。 (3)クリック時というところに[イベントプロシージャ]と表示されています。 (4)[イベントプロシージャ]の欄をクリックすると、欄の右に▼と・・・のボタンが出ます。 (5)・・・をクリックするとボタンクリック時のプログラムコードが表示されるVBE(VisualBasicEditor)画面が表示されます。 VBAの修正 3回印刷を行うには、 DoCmd.OpenReport stDocName, acNormal の部分を DoCmd.OpenReport stDocName, acNormal DoCmd.OpenReport stDocName, acNormal DoCmd.OpenReport stDocName, acNormal と3回記述(コピー)すればいいです。 現在のプログラムコードを次のように修正してください。 Public pub印刷回数 As Variant 'パブリック変数を宣言 Private Sub 請求書の印刷_Click() On Error GoTo Err_請求書の印刷_Click Dim stDocName As String stDocName = "ここはレポートの名前になっています" pub印刷回数 = 1 DoCmd.OpenReport stDocName, acNormal pub印刷回数 = 2 DoCmd.OpenReport stDocName, acNormal pub印刷回数 = 3 DoCmd.OpenReport stDocName, acNormal Exit_請求書の印刷_Click: Exit Sub Err_請求書の印刷_Click: MsgBox Err.Description Resume Exit_請求書の印刷_Click End Sub >(3)最後にレポートのフォーマット時のイベントで、 どこにラベルを作成しているかわかりませんが、レポートヘッダーとしておきます。 (1)印刷するレポートをデザインで開いてください。 (2)レポートヘッダーと表示されているところをダブルクリックします。 (3)イベントタブのフォーマット時の欄をクリックします。 (4)欄の右にある▼をクリックし、イベントプロシージャをクリックします。 (5)欄の右にある・・・をクリックするとレポートヘッダーフォーマット時のプログラムコードが表示されます。 (6)ここに次のコードを入力します。 Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer) On Error GoTo Err_レポートヘッダー_Format If pub印刷回数=1 Then Me.納品書.visible=True Me.請求書.visible=False Me.納品書(控).visible=False EndIf If pub印刷回数=2 Then Me.納品書.visible=False Me.請求書.visible=True Me.納品書(控).visible=False EndIf If pub印刷回数=3 Then Me.納品書.visible=False Me.請求書.visible=False Me.納品書(控).visible=True EndIf Exit_レポートヘッダー_Format: Exit Sub Err_レポートヘッダー_Format: MsgBox Err.Description Resume Exit_レポートヘッダー_Format End Sub あとは、VBEのデバッグ~コンパイルで、エラーが無いのを確認します。 がんばってくださいね。m(__)mう~疲れました・・・

回答No.1

VBAを使った方法ですが、 (1)まず、納品書レポートに、、【納品書】【請求書】【納品書(控)】ラベルを作成します。(ラベルは重なってもかまいません。)それぞれのラベルは、納品書、請求書、納品書(控)としておきます。 (2)次にフォームのボタンをクリックしたら3回印刷するような処理を入れておきます。(VBA) パブリック変数(例えば、pub印刷回数)を宣言しておいて、 1回目印刷前にpub印刷回数=1とします。 2回目印刷前にpub印刷回数=2とします。 3回目印刷前にpub印刷回数=3とします。 (3)最後にレポートのフォーマット時のイベントで、 pub印刷回数=1なら Me.納品書.visible=True Me.請求書.visible=False Me.納品書(控).visible=False pub印刷回数=2なら Me.納品書.visible=False Me.請求書.visible=True Me.納品書(控).visible=False pub印刷回数=3なら Me.納品書.visible=False Me.請求書.visible=False Me.納品書(控).visible=True でできますので、ご参考まで。m(__)m

non23
質問者

補足

さっそくの回答ありがとうございます。しかし、access初心者の私にはレベルが高すぎるのか、(2)(3)ができません(^_^;) 一体、どこの画面に何を入力したらいいのでしょうか?こんな私に詳しく教えてくれませんか?

関連するQ&A

  • アクセスのレポートで同一内容の複数表示の改ページについて教えて下さい

    アクセスのレポートで、A4サイズ1枚の伝票が”納品書”・”請求書”・”納品書控”と3項目あります。それぞれ同一内容を印刷するわけですが、1ページに入りきらない場合、改ページをして続きを印刷します。さらに最終ページには合計金額を各項目ごとに別枠で印刷させたいのですが、どのようにすれば良いのか、どなたか教えていただけませんでしょうか。

  • アクセスのレポート出力について

    いつも楽しく拝見しています。 質問させてください。 アクセスのレポートについてなのですが、今フォームのボタンを押すと「納品書」と言うレポートが出力されるようになっています。 これをフォームのボタンを押すと「納品書」と「納品書控え」と言う2つのレポートを出力したいと考えています。 試しに自分でやってみると、2つのレポートは別々のウィンドウで表示され、印刷ボタンを2回押せば可能な所まできました。 出来れば、これを改良し、 フォームのボタンを押す→レポートが表示(納品書と納品書控えが同じウィンドウにて続けて表示される)→印刷(納品書と納品書控えが出力される) と言う形にしたいと考えております。 これは可能なことなのでしょうか? また、可能な場合、どのような仕込が必要なのでしょうか? おわかりになる方いらっしゃいましたら、ご教授ください。 よろしくお願いいたします。

  • Access 2002 レポートの印刷設定について

    先ほど一度投稿しましたが、説明不足と感じ、削除の上、再投稿いたします。 ------------------------------------------------------------- いつもお世話になっております。 あるレポートを、A5サイズで出力し、それをA4の用紙(たて)に上下に2部印刷したいのです。 (図を参照ください) レポートは所謂「納品書」でして、通常、A51枚で終わります。(A4の用紙に印刷し、半分に切ってお渡ししています。レポートのデザインも、A5に収まるようにしています。) レポートの構成は、タイトルなどの、メイン部分と、該当レコードを表示するサブレポートで構成されており、該当レコードが増えると、図のようにはならず、A4のたていっぱいに印刷されてしまいます。サブレポートの書式プロパティで、印刷時自動拡張する、に設定しているからですが、これを「しない」にすると2ページ目に移るのかな?と思い、試してみましたが、改ページされず、レコードが部分印刷され、後半(1ページに印刷できない部分)が納品書からもれてしまう、という状態です。 ここからが本題です。 納品書の控えを取りたい、という担当者のため、同じものを2部印刷しているのですが、用紙節約のため、上下に同じものを印刷し、切り離せばお渡しするものと控えが出来上がる、という要望を受けております。専用にドットインパクトプリンタを購入し、複式印刷すればいいのですが、さすがにそこまでの経費は捻出できません。 印刷のプロパティなどを弄ってみましたが、目的を達成できなかったので、質問させていただきました。 まとめますと・・・ 1.A5の納品書をA4の用紙に上下2部印刷したい 2.納品件数が多い場合、2枚目以降に印刷したい(サイズはA5のままで) 詳しい方、ご教授のほう、よろしくお願いします。

  • MS-Accessでのレポート印刷について

    MS-Access97を使用しております。早速質問させていただきます。 売上データから請求書を発行するシステムを作っているのですが、たとえば 請求書をページプリンタへ印刷する場合、1枚目を「請求書」2枚目を「同控え」3枚目を「納品書」としたいのですが・・・。それぞれ3種類のレポートを作成し、請求書を発行するフォームから発行する条件をあたえ、コマンドボタンに3枚を順に印刷するコードを書いたのですが、これでは最初に1枚目をすべて印刷し、次に2枚目、次に3枚目という順序で印刷されてしまいます。 発行する客先が多くなるほど、印刷された用紙を手作業で並べかえなければならず大変不便です。 そこで、最初の1件目(お客)を1、2、3枚印刷し、続けて2件目(次のお客)を1、2、3と印刷(以後繰り返し)できるようにするにはどうしたらよいのでしょうか?

  • Accessレポートのvbaの質問です

    Accessレポートの「Copies」の質問ですが、 Reports("rptNohinsyo").Printer.Copies = 2 DoCmd.OpenReport "rptNohinsyo", acViewPreview A4サイズで1枚目に「納品書」「請求書」、2枚目に「納品書(控)」「受領書」 なので、Copies=2で2部印刷したのですが、2枚目の受領書は、 数量。金額欄を空白にしたいので、レポートの中で、今のCopiesを取得出来ませんか? 2部目なら、数量・金額を印字しないようにしたいと思います。 宜しくお願いします。

  • 伝票の控えについて

    教えていただけますか? 私は事務のまだ日が浅い物です。  (弥生?)販売ソフトで白紙A4で納品書と請求書が一枚で印刷されるのもを使っています。納品書は商品と一緒にを送っています。請求書は控えとして保存しています。締日には新たに請求明細書を印刷発行して送っています。  経理上では納品書控えと請求書控えを保存する義務があるようですが、納品書と請求書が一枚で印刷されるのもを使っているので伝票名が納品書と請求書の違いだけで他の内容は一緒です。納品書控えと請求書控えを保存している意味がないように思えるのですが。  今現時点では請求明細書をもう一部印刷した物と先ほどの請求書を保存しています。 皆様は、販売ソフトでの流れはどの様にしているのでしょうか? 一般常識がわからなくてすみませんがどなたか教えていただけないでしょうか? また、私のような場合どの様にしたら良いのでしょうか?

  • Accessのレポートの連続印刷

    Accessのバージョンは、2002です。 各顧客の請求書のレポート印刷を作成しています。 レポート印刷で、対象項目のフィルターで抽出した、品目名称での複数枚のレポート印刷は可能ですが、以下の内容のレポートの連続複数枚印刷の方法が分からず行き詰まっています。 レポートのレイアウトと各文面は共通です。 違いは、顧客名 請求金額 明細項目の金額 合計金額になります。 顧客が2000名程居ますので、現在の方法は、1名毎の顧客名をフィルターに掛けて、表示したものを1枚ずつ印刷しています。 これを50人や100人毎に分けて、レポートのフォーマットは共通で、違う部分の 顧客毎の 顧客名 請求金額 明細項目の金額 合計金額 の部分を変更した内容を、各顧客毎のレポートの50ページや100ページを表示して印刷は可能でしょうか? 1枚目は、A社の請求書内容 2枚目は、B社の請求書内容 以降、違う顧客の請求書内容を印刷していく流れです。 ご教授頂ければ幸いです。 宜しくお願い致します。

  • ACCESS最終データだけ印刷できるレポート

    アクセス2000でデータベースを作成しています。 タイトルどおりなんですが、いまのウィザード使った単純な方法では、全レコードが印刷されるレポートが作成されてしまいます。 これを指定行だけ印刷できるレポートを作るにはどのような方法があるか教えてください。

  • access 複数レポート印刷

    access2003を使用しています。 フォームから印刷するデータの条件をあたえ、ボタンを一回押下することで複数のレポートを印刷するようにしたいのですが、、、 現状では、一枚目のレポートを全部印刷したあと、二枚目のレポートを全部印刷、次に三枚目となってしまいます。 やりたいことは、1レコード目のデータのレポートを全部印刷したあと2レコード目のデータのレポートを印刷、次に3レコード目のデータ、、、という風に行いたいと思っています。 1レコードずつ抽出してforループさせればいいと思っていますが、具体的にどういうコードを書けばいいかわかりません。 どうすればよいでしょうか?

  •  ACCESSで納品書の印刷

    ACCESS2000で顧客台帳、商品台帳テーブルを作り納品書を印刷したいと思ってます。 入力フォームを作り顧客先の社名や住所等を表示させ、 サブフォームに納入する商品の明細を入力して印刷させたいのですが、納品書が1枚で「納品控」「納品書」「納品受領書」に分かれていてそれぞれに同じ内容を印刷さなければなりません。ACCESSのレポートの標準の中にはそのような形式は無く、VBAなどの本もいろいろ見てみたんですが全然分かりません。ACCESS初心者でこのような質問は失礼かとは思いますがどうかよろしくお願いいたします。