• ベストアンサー

OFFICE アクセスのマクロで教えてください。

アクセスについて、超初心者です。 アクセスのフォームに商品a、b・・それについてのそれぞれデータA、Bがあるとします。 表示したフォームに印刷ボタンをつけて、そのボタンに 各データA、Bをファイル名にもつレポートを印刷するマクロを作りたいのですが、 どうしたらよいでしょうか? マクロかVBAで、どのようにしたら、よいでしょうか?

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.5

でしたら コマンドボタンのクリック時イベントかな?に DoCmd.OpenReport "実際のレポート名", acViewPreview, WhereCondition:="ID = " & Me!ID でよろしいかと? acViewPreview で確かめて問題無さそうなら必要に応じて acViewNormal に変更しても可(この場合すぐに印刷が始まります) 実際のレポート名はそちらで変更してください。 ついでに。。 もしも、IDがテキスト型だったとしたら DoCmd.OpenReport "実際のレポート名", acViewPreview, WhereCondition:="ID = " & Me!ID ↓ DoCmd.OpenReport "実際のレポート名", acViewPreview, WhereCondition:="ID = '" & Me!ID & "'" と'シングルクォーテーションで括ってください。

ogawawa
質問者

お礼

いろいろと遠回りさせてしまい、すみませんでした。 導いていただいたおかげで、目からうろこといいますか、やっとわかりました。 ありがとうございました。 本を図書館から借りて 見ていたつもりが、まったく見ていなかったことに気づきました。 "実際のレポート名”のところ、レポート名1 ではなく、”AAA”としていました。 普通に レポート名1 が変数になるんですね。 他にも私の珍質問にお答えいただいた方々 ありがとうございました。 今後ともこれに懲りずに お願いいたします。 ほんとうにありがとうございました。

その他の回答 (4)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

データAが表示されている状態のフォームから印刷させたらAレポート BならB、 ということか。 ここのファイルはフォームのもとになっているデータ群?。 フォームのボタンを押したときにAやBを判断できるにはどうしたら良いか、考えてみたか。 クエリ使うと対象データをレコードソース切り替えできます。A用、B用。 フォームでA用ボタンB用ボタンと2つで行ってみる。 手はあるのでそれぞれで稼動するもの、基本形を考える。 マクロやVBAでより良くするのはまだ早い。 値の代入、名前を制御しているプロパティーは何か学習。 ファイル名と言っているが普通はそれはファイル名とは言わないものと思われる。伝わってこない。

ogawawa
質問者

お礼

いろいろと考えていただきありがとうございました。 中途半端なご質問をしてしまい、申し訳ございませんでした。 用語など、もっともっと勉強してから 皆様に良い意味で悩んでもらえるような 質問をしたいと思います。 ありがとうございました。 とりあえず、マクロで レポート名1、レポート名2 というレポートを印刷する方向で できるようになりました。 お騒がせいたしました。 今後ともご指導、ご鞭撻のほどお願いいたします。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

何度か読み返してみましたが、 失礼ながらそちらの状況がサッパリ分かりません。。。 多分こんなことかと。 マクロの内容 アクションに、レポートを開く 下の所に レポート名 → そちらのレポート名を記述 ビュー → 印刷プレビュー フィルタ名 → 空欄 Where条件式 → [フィールド名] = Forms!テーブル名!フィールド名 ウィンドウモード → 標準 ※フィールド名とテーブル名は適宜変更※ 質問の仕方が良くありません! 例 OSはWindowsXP Access は2010を使っています。 『商品テーブル』がありまして フィールド名は ID (主キー 数値型) 商品名 (テキスト型) ファイル名 (テキスト型) 日付 (日付型) 中身はこんな内容です。 ID   商品名   ファイル名   日付 1      パン C:\Data\Pan.xls  2011/2/2 2   メロンパン C:\Data\Melon.xls 2011/3/3 3   ジャムパン C:\data\Jam.xls  2011/2/15 この『商品テーブル』をもとに『商品フォーム』を作りました フォームは帳票フォームです。 このフォームのコマンドボタンから その時に選択されているレコード、例えば メロンパンだけのレポートを出したいと思っています。 また、その際に同時にファイル名のC:\Data\Melon.xlsを 開きたいのですがその方法が分かりません。 ・・・とかならレスもすぐに付きますし解決も早いですよ。 質問が端折りすぎ。。。 また、用語はキチンと覚えましょう。 あなたの『ファイル名』とはなんぞや? そして回答者の質問には答えましょう。 一発回答で済んだ分かりやすい質問の例 http://okwave.jp/qa/q6512804.html

ogawawa
質問者

補足

いろいろすみません。  OSはWindowsXP Access は2000を使っています。 『商品テーブル』がありまして フィールド名は ID (主キー 数値型) 商品名 (テキスト型) ファイル名1 (テキスト型) ファイル名2 (テキスト型) 中身はこんな内容です。 ID   商品名   ファイル名1 ファイル名2    1      パン  AAA     DDD 2   メロンパン  BBB     --- 3   ジャムパン  CCC     EEE この『商品テーブル』をもとに『商品フォーム』を作りました フォームは単票フォームです。 このフォームのコマンドボタンから その時に表示されているたとば、商品名:パンの場合のファイル名1、 ファイル名2と同じ名前(AAA、DDD)のレポートを印刷したいと思っています。 そのコマンドボタンの作り方を教えてください。 お教えいただきました内容に沿って質問を書かせていただきました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

>各データA、Bをファイル名にもつレポートを印刷 すこし確認です。 (1) 「ファイル名」とはレポートそのものの名前ですか、 その名前を補足にあるように「aaa」と変更する、 ということですか。 (2) あるいは、レポートをプレビューで開くと、左上に 「レポート名:レポート」とある部分を「aaa」に 置き換える、ということですか。 (3) 「aaa」はレポートで印刷するときに、印刷内容の 中に入るのでしょうか。 あるいは、印刷するときの確認用で特に印刷する内容の 中には入れない、ということでしょうか。 (4) >アクセスのフォームに商品a、b・・それについての >それぞれデータA、Bがあるとします。 このときのフォームは帳票フォーム、あるいは サブフォームを持つ、あるいは単票フォーム、 のどれですか。

ogawawa
質問者

補足

確認ありがとうございます。 (1) 「ファイル名」とはレポートそのものの名前ですか、 その名前を補足にあるように「aaa」と変更する、 ということですか。 「ファイル名」とはレポートそのものの名前です。 その名前を補足にあるように「aaa」と変更する では、ないと思います。 (2) あるいは、レポートをプレビューで開くと、左上に 「レポート名:レポート」とある部分を「aaa」に 置き換える、ということですか。 とは、違うと思います。 (3) 「aaa」はレポートで印刷するときに、印刷内容の 中に入るのでしょうか。 あるいは、印刷するときの確認用で特に印刷する内容の 中には入れない、ということでしょうか。 「aaa」は、印刷内容の中にはいらなくともよいです。 (4) >アクセスのフォームに商品a、b・・それについての >それぞれデータA、Bがあるとします。 このときのフォームは帳票フォーム、あるいは サブフォームを持つ、あるいは単票フォーム、 のどれですか。 単票フォームと思います。すみません、サブフォームなどわからなくて・・。 はじめにまんがのように書けばよかったです。すみません。 マクロで、レポート名を固定して開くは、できますが、 変数にして、VBA?でできるのでしょうか?

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

印刷ボタン押すと名前固定でよいのでレポートが出る ここまでできているか。 名前だけの問題かレポート出すことからの問題か 初心者にもレベルあるのでどこまで知っているかで回答変わります。 高度ならわからないと言うこと。 A項目の値をレポート名に使う? 質問の『ファイル名』は何指していますか?

ogawawa
質問者

補足

わかりにくくすみません。 名前固定でレポートがでるまでできています。 A項目の値の変数としてレポートに使いたいです。 ファイル名 は、A項目の値です。 レポートで商品aが表示されているときは、A項目の値がaaaならば、ファイル名aaaが開き、 レポートで商品bが表示されているときは、A項目の値がbbbならば、ファイル名bbbが開く という感じです。

関連するQ&A

  • アクセス2010 マクロ 印刷ダイアログを表示

    アクセス2010でテーブルに連結した取引台帳を入力フォームがあります。 そのフォームで入力後、コマンドボタンで印刷を実行します。 コマンドボタンには、マクロで レポートを開く レポート名 請求書発行レポート ビュー 印刷 フィルター名 なし Where条件式 =[契約NO]=[Forms]![取引台帳入力フォーム]![契約NO] ウィンドウモード 標準 と、開いているフォームのページがレポート印刷されるようにしました。 ですが、モノクロ・カラー印刷と印刷の都度設定したいので、印刷が実行される前に 印刷ダイアログを表示させたいのです。 この方法を、どうぞ教えていただきたくお願いいたします。

  • Accessのマクロについて質問です。

    例えば、 AというファイルのフォームからBというファイルのフォームを開くようにマクロを作成したいのですが、やり方がわかりません。 マニュアル本などを見てみましたが、同じファイルの中のフォームでという前提でしかマクロの作成方法が載っていませんでした。 そもそも違うファイルのフォームを開くということは可能なんでしょうか? OSはWin2000、Access2000を使用しています。 Access初心者のため、説明がわかりにくいと思いますがご回答お待ちしています。

  • Accessのマクロ

    Access2002で、「氏名(テーブル名:name)」と「日付<○月○日~○月○日>(テーブル名:date)」でレポート内容が検索できるのを作っています。 フォームに 氏名一覧、日付入力、検索ボタン、最新データの取り込みボタン を作っています。 「検索」の方は出来たのですが、「最新データ取り込み」をしようとすると、 『テーブル'name'は現在ほかのユーザまたはプロセスで使用されているので、ロックできませんでした』というエラーメッセージがでてきます。 「最新データ取り込み」ボタンに対してのマクロのアクションは、 オブジェクトの削除…テーブル/report テキスト変換…reportインポート定義 オブジェクトの削除…テーブル/name クエリを開く…name作成(テーブル作成クエリ) としています。 (「マクロの実行」で指定) フォームに表示されている氏名(name)を削除しようとしているために、このようなエラーメッセージが出ているのかとも思っていますが…。 フォームを閉じずに、「最新データ取り込み」ができないものでしょうか? ご教示の程、よろしくお願いします。

  • access 2000のマクロビルダで困っています

    access2000のマクロビルダでアドバイスお願いします。 とあるフォームで 「a」というテキストボックスがあります。 条件検索用のボックス「A」を設けて、「検索」というコマンドボタンを作成しました。 このボタンを マウスボタンクリックした時に、マクロビルダで、条件を設定し 抽出するというものです。 これは希望通りに抽出できたのですが、 次に、同じフォームで「b」というテキストボックスを設けて、条件検索用ボックスで「B」を作成しましたが、 これを、「検索」という一つのコマンドボタンで「a」と「b」2つの検索条件を満たす、リストをマクロビルダで作成したいのですが、 やり方がどう頑張っても分かりません。 できれば、マクロビルダで、もし無理なら、VBAでアドバイスを頂ければ大変ありがたいです。 どうかよろしくお願いします。

  • access97のレポートを複数枚印刷設定する方法

    access97にて、フォームに作成した印刷ボタンを押すとレポートが印刷されるようマクロを作成いたしました。 印刷を振り分けるシステムと繋げて数台のプリンターで出す様にする為、 規定枚数印刷するようにマクロを変えたいのですが、どのようにすればよいでしょうか? 今は 閉じる(オブジェクトの種類:フォーム、オブジェクト名:フォーム1、オブジェクトの保存:確認) レポートを開く(レポート名:レポート1、ビュー:印刷、フィルタ名とWhere条件式の部分は空欄) フォームを開く(フォーム名:フォーム1、ビュー:フォームビュー、ウィンドウモード:標準、Where条件式とデータモードの部分は空欄) 最大化 というように作成しました。 印刷マクロを繰り返しても、2枚と認識せず1枚×2で認識し振り分けできないようなのです。 どなたかお解りの方ご回答お願いいたします。 かなり初心者のため出来るだけ具体的にご回答いただけると助かります。

  • ACCESSとレポートとVBAと

    初めまして。 まったくの初心者ですが宜しくお願いします。 環境はOS:Xp・ACCESS2000です 現在、フォームに印刷ボタンを作成し、 それを押下後、レポートの画面が開くというものを VBAを用いて作成しています。 フォームには顧客コードというものを設定しているのですが、顧客コードを何番に変更しても印刷ボタンを押すと一番最初のデータ(私の場合は顧客コード「1」)がレポートに表示されます。 これをフォームの顧客コードとレポートの顧客コードが同じ番号になったレポートを表示したいのですが、どのようなVBAのコードを打てばよろしいでしょうか? 質問の意図をしっかりとお伝え出来ていないかも知れませんが、よろしくお願いします。

  • MSアクセス データの更新

    MSアクセス データの更新 メインフォーム[A]にデーターの一覧があり、新規データ[B]の登録は別フォームで行っています。 [A]・・データ入力用「いいえ」 [B]・・データ入力用「はい」 [B]で新規登録した後[A]に戻っても、その新規のデータは表示されず、レコード「更新」ボタンを手動で押すと表示されます。 自動で表示するには、どんなマクロになりますか? 「ファイルメーカー」にどっぷり浸かっていましたが、久々にアクセスに戻ってきました。 完璧にわすれています。 「ファイルメーカー」は、スクリプトだけで(それしか無い)処理できましたが、 アクセスのマクロだけで、「ファイルメーカー」のスクリプト程度の処理はできるでしょうか? VBは必要最小限にしたいのですが。

  • Accessの再計算ボタンについて

    Accessを使って、販売管理を行っているのですが 親フォームA・・・売上日や顧客名を入力 サブフォームB・・・売上明細を入力(親フォームA内に配置) というような作りになっています。 親フォームA内には表示しているレコードを そのまま印刷できるように、マクロにてレポートを 開くボタンを設置していますが、 たとえば、親フォームA内の売上日などを変更し レポートボタンを押したとき、このままでは直前に 行った親フォームA内の内容が反映されておらず 新たに「=Forms!親フォームA.Requery」としたボタンを 設置しました。 しかし、このボタンを押すと、レコード番号が1に戻って しまってから再クエリ(再計算)されてしまい、 思った通りに動きません。 現在表示しているレコードを表示したまま再クエリを 行う為には、どのように記述するのでしょうか? どなたか教えて頂けませんでしょうか。 宜しくお願い致します。

  • accessのマクロで子フォームを使ったフィルターの方法を教えて頂きた

    accessのマクロで子フォームを使ったフィルターの方法を教えて頂きたいです。 各フォームにIDが1~50000まであり 子フォームAのID1012をクリックをトリガにして、 子フォームBのID1012をフィルターで抽出したいのですが、 どう設定して良いのか分かりません。 確かフィルター名と、条件を設定する所があったと思うのですが、 フィルター名は設定せず、 条件に、[フォーム名]![子フォームB名]![ID]=[フォーム名]![子フォームA名]![ID] と設定すると、データの元がないと言った内容のエラーが出て動きませんでした。 現在、手元にaccessがない為、少し曖昧な質問になってしまい、すいません。 出来れば、設定の例を挙げて頂ければ、幸いです。 質問の背景として、VBAで作成した所、処理速度が遅く、他の処理をマクロに変更すると数倍早くなったので、この処理もマクロで行おうと思っています。

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

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

専門家に質問してみよう