- ベストアンサー
アクセスのマクロ機能を使った印刷について、質問です
今、アクセス2000を使ったちょっとしたデータベースシステムを構築してます。 その中で、マクロを使ってレポートのカレントレコードだけを印刷させたいのですが、データベース全体のレコード全件が印刷されてしまいます。 どなたか、カレントレコードだけをマクロ印刷させる方法をご存知の方ご教授下さい。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ん~VBAってそんなに難しいかな? とりあえずマクロのやり方書くけど・・・前のカット&ペーストしてみてね! マクロを選択してツールのマクロの「マクロをVisual Basicに変換」して 必要な部分だけ切り取っただけだし・・・。前回記述したことを忠実に実行 するだけで、カッコいい感じで使えますよ。 説教ではありません。不愉快だったらごめんなさい! >[Aテーブル]![id]=[Forms]![Aフォーム]![id] で出来ます。 解説すると連番が必要だって前に説明しましたよね。 1~200件位だっけ?※無い場合はムリ!がんばって付けてね。 厳密には方法が無いわけじゃないけど、説明が長くなるからムリ! その番号を仮にIDとします。 元になる(200件入っている)テーブルをAテーブルとします。 そのテーブルを元に作ったフォームをAフォームとします。 難しく考えないで「Aフォームに表示されている数字(ID)=Aテーブルにある レコードを印刷してください!」となる。 もっと簡単にいうと画面に見える物と同じレコードを印刷しなさい!となる。 私も始めて「マクロ」って作りましたが、動きました。 ※ちょっと質問 1.フォームって使ってるよね? 2.コンボボタンとかも使ってるよね? 出来なかったら・・・追記してね。
その他の回答 (1)
- pooh_200x
- ベストアンサー率46% (7/15)
マクロはあまり使わないので間違っていたら御免なさい! 「印刷」を行うときには、「レポートを開く」を選択しますよね? その際に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は印刷 'ここは印刷を行う所です。「印刷」の所に自分のレポート名を入れてみてね。 '以上で更新作業から印刷までの流れです。 'マクロ使うより軽く出来るし、何よりカッコいいでしょ?(笑) '質問があれば、追記してください。(暇な時に返事します。)
お礼
大変親切なご回答ありがとうございます。VBAの方は私のスキルではついて行けませんので、マクロの式をご教授頂けると助かるのですが…… 前提条件はご推察の通りです。マクロの「レポートを開く」をフォーム上のボタンに貼り付けてます。そこでWhere条件にどういう構文を入力すれば良いのかでつまづいてます。今、仮に200件あるデータのうち5番目のデータがフォームとして画面上に表示されていたとします。この5番目のデータだけをレポートとして印刷させたいのですが、上手くいかないのです。1番目から全件のデータのレポートが出力されてしまいます。 時間が出来ましたら、教えてくださいませ。
お礼
回答ありがとうございます。できました!! 構文は[Aテーブル]![id]=[Forms]![Aフォーム]![id] だったんですね。 私は[Aレポート]![id]=[Forms]![Aフォーム]![id] とやってしまって上手くいかなかったんです。 (マクロを実行すると)全件がいきなり印刷されたり、パラメーターの入力を求められたりと、もーワケわからん状態だったので、スッキリしました。 心の余裕ができたので、VBAの方もやってみます。