• ベストアンサー

アクセスのマクロ機能を使った印刷について、質問です

今、アクセス2000を使ったちょっとしたデータベースシステムを構築してます。 その中で、マクロを使ってレポートのカレントレコードだけを印刷させたいのですが、データベース全体のレコード全件が印刷されてしまいます。 どなたか、カレントレコードだけをマクロ印刷させる方法をご存知の方ご教授下さい。よろしくお願いします。

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

  • ベストアンサー
  • pooh_200x
  • ベストアンサー率46% (7/15)
回答No.2

ん~VBAってそんなに難しいかな? とりあえずマクロのやり方書くけど・・・前のカット&ペーストしてみてね! マクロを選択してツールのマクロの「マクロをVisual Basicに変換」して 必要な部分だけ切り取っただけだし・・・。前回記述したことを忠実に実行 するだけで、カッコいい感じで使えますよ。 説教ではありません。不愉快だったらごめんなさい! >[Aテーブル]![id]=[Forms]![Aフォーム]![id] で出来ます。 解説すると連番が必要だって前に説明しましたよね。 1~200件位だっけ?※無い場合はムリ!がんばって付けてね。 厳密には方法が無いわけじゃないけど、説明が長くなるからムリ! その番号を仮にIDとします。 元になる(200件入っている)テーブルをAテーブルとします。 そのテーブルを元に作ったフォームをAフォームとします。 難しく考えないで「Aフォームに表示されている数字(ID)=Aテーブルにある レコードを印刷してください!」となる。 もっと簡単にいうと画面に見える物と同じレコードを印刷しなさい!となる。 私も始めて「マクロ」って作りましたが、動きました。 ※ちょっと質問 1.フォームって使ってるよね? 2.コンボボタンとかも使ってるよね? 出来なかったら・・・追記してね。

hirokun925
質問者

お礼

 回答ありがとうございます。できました!! 構文は[Aテーブル]![id]=[Forms]![Aフォーム]![id] だったんですね。 私は[Aレポート]![id]=[Forms]![Aフォーム]![id] とやってしまって上手くいかなかったんです。 (マクロを実行すると)全件がいきなり印刷されたり、パラメーターの入力を求められたりと、もーワケわからん状態だったので、スッキリしました。 心の余裕ができたので、VBAの方もやってみます。

その他の回答 (1)

  • pooh_200x
  • ベストアンサー率46% (7/15)
回答No.1

マクロはあまり使わないので間違っていたら御免なさい! 「印刷」を行うときには、「レポートを開く」を選択しますよね? その際にWhere条件ってのが存在すると思うんですけど、そこにSQL文を 書くことになると思います。 ※印刷の際カレントレコードのみ出力するにはIDのような「キー」が必要に なります。まあ重複しない数字ですよね。 ↑があると仮定します。単純に「=ID」のような記述ではないのでしょうか? 詳細がわからないとこれ以上はムリですね! AccessVBAで書くとしたら↓ 適当なフォームにボタン(コマンドボタン)を付ける所までは一緒です。 プロパティ→イベント→クリック時にマクロの設定してますよね? そこを プロパティ→イベント→クリック時に右側の「...」三点リーダーみたいな のをクリックして「コードビルダ」を選択して下さい。 Private Sub コマンド0() End sub ↑って画面が出てくると思うんですけど、そこに↓をカット&ペーストして 下さい。※ちゃんとPri~の後にスペースを空けてEnd~の間に入れてね! '----------------------更新・印刷作業----------------------- Dim lngID As Long   '変数宣言ってやつです。 Dim kosyin As Integer   'Dimはお約束→Kosyin適当な名前→asもお約束→Integer(数字)型が入ります。 '保存 kosyin = MsgBox("更新しますか?", vbYesNo) If kosyin = vbNo Then 'Noだったら Exit Sub '閉じる End If DoCmd.RunCommand acCmdSaveRecord  'レコードの保存 '印刷 lngID = MsgBox("印刷を行いますか?", vbYesNo) If lngID = vbNo Then Exit Sub End If '上は同じ事してる。 'ここからが印刷ね! lngID = Me.txt1.Value 'さっき変数宣言した適当な名前の中にIDを入れます。 'IDはさっき開いていたフォームのテキストボックスに表示されていることが条件 'IDのテキストボックスの名前を[txt1]の所に入れてみて! DoCmd.OpenReport "印刷", acViewPreview, , "lngID=" & lngID 'acViewPreview を選択するとプレビュー acViewNormalは印刷 'ここは印刷を行う所です。「印刷」の所に自分のレポート名を入れてみてね。 '以上で更新作業から印刷までの流れです。 'マクロ使うより軽く出来るし、何よりカッコいいでしょ?(笑) '質問があれば、追記してください。(暇な時に返事します。)

hirokun925
質問者

お礼

 大変親切なご回答ありがとうございます。VBAの方は私のスキルではついて行けませんので、マクロの式をご教授頂けると助かるのですが……  前提条件はご推察の通りです。マクロの「レポートを開く」をフォーム上のボタンに貼り付けてます。そこでWhere条件にどういう構文を入力すれば良いのかでつまづいてます。今、仮に200件あるデータのうち5番目のデータがフォームとして画面上に表示されていたとします。この5番目のデータだけをレポートとして印刷させたいのですが、上手くいかないのです。1番目から全件のデータのレポートが出力されてしまいます。  時間が出来ましたら、教えてくださいませ。

関連するQ&A

  • ACCESSの宛名印刷

    300件のレコードですが、レポートの宛名ラベルを作ってその中から50件ほどの特定のレコードをプリントしたいのですが、全件印刷されます。抽出はどうすればよろしいのでしょうかお教え下さい。

  • Access2003を使っています。

    Access2003を使っています。 フォームで開いているカレントレコードだけを、レポートにして印刷したいのですが、分かりません。 似たような質問を見かけたら試しているのですが、どうにも上手く行きません。 助けてください。

  • Access2013 マクロを印刷したい。

    マクロを作成したとき印刷したいのですが、マクロ作成画面から[ファイル]-[印刷]-[印刷プレビュ]-と進むと「データベース解析ツール」で「定義の印刷を実行する前にドキュメントをデータベースに保存してください」と表示され[OK]で元に戻ります。印刷はできません。何かいい方法はありませんか。

  • Accessのマクロ。

    Access(テーブル クエリーのみ フォーム、レポートは持ってません) のデータベース(入力は別ソフトから行っています)で、 テーブルの内容が更新時にテキストファイルを書き出すようにしたく、 マクロを使ってどうにかならないか考えているのですが、 「条件」がうまくつけられません。別にマクロでなくAccessVBAでも いいのですが・・・・。 ご存知でしたら是非お教えください。

  • アクセス2000でレポート印刷

    アクセス2000でレポート印刷 レポートを印刷するとき、フォームで表示しているレコードだけを印刷したいのですが・・・ フォーム上でコマンドボタンを作ってレポートを印刷すると、関連するレコードが全て印刷されてしまいます。 フォームでレコードを指定して、そのレコードだけを印刷・・・ 教えてください!!!!

  • ACCESSのマクロで特定のレポートを印刷・保存したいが・・・

    ACCESS2000のマクロについてお尋ねします。 フォームから特定のレポートを印刷し、同時に指定したフォルダに保存するマクロを作っています。 アクション:レポートを開く  レポート名:R_報告書  ビュー:印刷プレビュー  Where条件:[Forms]![フォーム名]![コントロール名]=[レポートのコントロール名] アクション:出力  オブジェクトの種類:レポート  オブジェクト名:R_報告書  出力ファイル形式:Snapshot Format  出力ファイル:(保存先フォルダへのパスとファイル名)  自動起動:いいえ この状態だと問題なくうまくいくのですが、ビューを「印刷プレビュー」から「印刷」にすると 「印刷中」のダイアログボックスが出て「R_報告書を印刷中です」と表示され、カウンターがクルクル回り始め、1からテーブルに保存されているレコード数をすべて表示し終えるまで「保存」されません。 現在2000以上のレコードが入っているのでかなりの時間がかかります。 一体「印刷プレビュー」を「印刷」にするだけでなぜこんなことになるのでしょう? 一週間以上さまざまなことを試してみましたがお手上げです。 ご存知の方がいらしたらよろしくお願いします。

  • Accessのレポートで1レコードだけ印刷したい

    Accessで作成したレポートで1つのレコードだけ印刷することは可能でしょうか? また、表示されているデータだけを印刷することも可能でしょうか? 現在1レコードが1ページに表示されるようにレポートを作っています。 ご存知の方、教えて下さいm( _ )m

  • アクセス VBAが使えれば、マクロは覚える必要はな

    アクセスでデータベースを構築するにおいて VBAが使えれば、マクロは覚える必要はないですか?

  • Accessの使い方についてご質問。

    Windows7、Access2010を使って、データベースの作成をしています。 レポートから、別のレポートへ行く方法について質問です。VBAを使わず、Accessの機能ですませたいです。 テーブルから、パラメーターを使って特定のデータを抽出する、クエリを作成・レポートにしました。 現状は、あるレポートに設置したボタンをクリックすると、前記したパラメータ―クエリが発動、ユーザーに条件を入力させます。入力・OKボタンを押すと、レコードを抽出、条件に合ったデータのみが表示されたレポートへ行く仕組みです。 使う相手に入力させる手間をかけさせず、レポートからレポートへ行く方法を探しています。行く先のレポートは、条件分岐や抽出によって、特定のレコードのみ表示させたいのですが、今のところ、パラメータークエリをレポート化、ボタンにそのクエリを埋め込んで、クリックするとそのクエリが発動して、条件をユーザーに入力させ、一致したレコードのみが表示されたレポートに行く仕組みしか方法が分かりません。パラメーターにわざわざ入力させずにすむ、良い方法がありましたら、ご教授をお願いします。 理想としては、ボタンを設置してあるレポートに、抽出対象となるレコードが一覧で並んでいますので、それをクリックしてジャンプできるか、それらのレコード横にボタンを用意して、そのボタンを押すことで、レポートに行くことができればいいのですが。 宜しくお願い致します。

  • アクセスで特定のレコードのみのレポートを印刷したいのですが。

    アクセス2003である特定のレコードのみのレポートを印刷したいと思っています。現在開いているフォームのレコードのみを印刷(レポートとして)印刷するには、ファイル→印刷→ページ指定で現在印刷しているのですが、他に方法はないでしょうか?単に「レポートの印刷」とすると全てのレコードが印刷されてしまいます。今のところ特定のレコードのみ印刷するには、まずページ数を調べなければいけないので不便です。せっかくパラメータクエリなどで、そのレコードのフォーム画面を表示させても、レポート印刷につながらないので、どなたか良い方法を教えていただけないでしょうか?よろしくお願いいたします。

専門家に質問してみよう