• ベストアンサー
  • すぐに回答を!

Accessワークシートの変換における条件の付け方

よろしくお願いします。 ■前提条件 OS:XP Access version: 不明(2003以降だと) 技術力:Accessの初歩段階です。提供されているマクロを いじっている程度。プログラミングをAccessに書いたことなし。 ■サマリー Access-マクロ-ワークシートの変換(エクスポート)でクエリにあるデータの有無を判定し、データがあるクエリのみExcelに出力したいです。 ■詳細 Accessで複数のクエリ(1~10クエリ)があるとします。 そのクエリには、各クエリが参照している大元データによって、 データあるクエリ、ないクエリがあります。 たとえば、クエリの1~5までデータがあり、残りはデータがない とし、データがある1~5まで同一ファイルのExcel出力したいと します。1ファイルの中に5シート(クエリ1~5)ある状態です。 Accessのマクロ-ワークシートの変換で、指定したクエリは同一ファイルに複数シートとして出力できることまではできています。 ※この場合、ワークシートの変換には、すべてのクエリを指定し、 すべて出力することにしています。 ただ、データがないシートを出力したくないのですが、どのように データある、なしを判断し、出力すれば良いのでしょうか? 補足 もしくは、一旦データの有無は関係なく、全てのデータは出力し、 Excelのマクロにて制限するなどが考えれますが・・・

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数2080
  • ありがとう数2

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

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

> 技術力:Accessの初歩段階です。提供されているマクロを > いじっている程度。プログラミングをAccessに書いたことなし。 とあるのと、 > Accessのマクロ-ワークシートの変換で、指定したクエリは同一ファイルに > 複数シートとして出力できることまではできています。 とのことから、恐らく、マクロの『アクション』列に、対象となるクエリの数だけ、 「ワークシート変換」が並んでいる状態ではないかと思います。 以下、この前提で、現在のマクロへの加筆修正の仕方を説明します。 (恐らく、現状でできる最も簡単な方法かと思いますので) 1)当該マクロをデザインビューで開く 2)マクロの『条件』列が表示されていない場合は、Accessのメニューで  「表示(V)→条件(C)」を選択して、『条件』列を表示 3)「ワークシート変換」アクションで指定している『テーブル名』欄のクエリ  の名前を「クエリ1」とした場合、その行の『条件』欄(=「ワークシート  変換」の左隣)に、以下の式を入力:   DCount("*","クエリ1")>0 4)以下、「ワークシート変換」が記載されている全ての行の『条件』欄に、  同様の式を入力 5)マクロを保存して閉じる ・・・以上です。 なお、『ワークシート変換』の『テーブル名』で「=Forms!フォーム1!テキスト0」 といった形でフォームのテキストボックスを参照している場合は、『条件』欄の 式を以下のようにして下さい:   DCount("*",Forms!フォーム1!テキスト0) ※上では「,」(カンマ)の後のクエリ名を「"」(ダブルクォーテーション)で囲んで   いるのに対し、下の場合はその囲みがないので注意してください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

DexMachinaさん ありがとうございます。おかげで上手くいきそうです。 あとは、各クエリに対してこの条件を設定するという、マンパワー的な作業になります。・・・このマンパワーはどうにもなりませんよね いずれにしても、ありがとうございます。

その他の回答 (1)

  • 回答No.1
  • nda23
  • ベストアンサー率55% (773/1384)

クエリにデータがあるかどうかを調べる関数 Function データ有無(ByVal クエリ名 As String) As Boolean   Dim S As String   Dim R As DAO.Recordset   S = CurrentDb.QueryDefs(クエリ名).SQL   Set R = CurrentDb.OpenRecordset(S)   データ有無 = Not R.EOF   R.Close End Function ワークシートに変換する DoCmd.TransferSpreadsheet acExport, , クエリ名, Excelファイル名 出力先(Excelファイル名)は同じものにしておきます。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • エクセルからACCESSへマクロでワークシート変換していますが・・・

    ACCESSで作ったクエリを一度エクセルにエクスポート(マクロを使ってワークシート変換)後、エクスポート先のシートとは別シート(同一ブック内)で集計し、集計結果をACCESSへインポート(マクロを使ってワークシート変換)させたいのですが、前回の集計結果がインポートされてしまい、新しい集計結果が反映されません。 一度エクセルのブックを開けば新しい集計結果が取り込めます。 何故でしょうか? またブックを開かずに最新のエクセルの集計結果をACCESSに反映させる方法はありますでしょうか?

  • AccessのテーブルデータをExcelの特定のワークシート名にエクスポートすることは可能ですか

    AccessのテーブルデータをExcelにエクスポートするようマクロを設定しているのですが、そのファイルの中の特定のシートにエクスポートすることは可能ですか?1つのExcelファイルの中で、エクスポートするテーブルを分けたいのです。 マクロですと、"ワークシート変換"アクションの引数[ファイル名]欄で何か設定するのでしょうか? それともAccessから直接は無理なので、Excelのマクロで自動化したほうがよろしいのでしょうか?教えてください。

  • Accessのクエリをマクロでエクスポートしたい

    Access2002を使っています。 マクロでクエリをExcelファイルにエクスポートしたいのですが、どうしたらいいかわかりません。 「ワークシート変換」を選択してもテーブルしか選べないので・・・ ご存知の方、どうぞ優しくご教授ください~

  • ACCESS2002のエクスポートで・・・

    特に困ってはいないのですが不思議に思ったので質問します。 OS:WinXP Pro 環境:ACCESS2002およびEXCEL2002 1.ACCESSでクエリ「TEST1」をEXCELにエクスポートします。 2.エクスポートして作成されたEXCELファイルを開き、シート名「TEST1」を「TEST2」に変更します。 3.再度、ACCESSでクエリ「TEST1」を1.で作成されたEXCELファイルを指定してエクスポートすると「オブジェクト「TEST1」は存在します。置き換えますか?」旨のメッセージが表示されます。 指定したEXCELファイルにはシート「TEST1」は存在しないのになぜそのようなメッセージが表示されるのでしょうか?ちなみそのまま出力するとクエリ「TEST1」のデータはEXCELのシート「TEST2」に出力されます。

  • Access97 → Access2002

    最近会社でAccess97からAccess2002へ乗り換えた(パソコンもOSも変更)のですが、ファイルを変換(2000形式に)してから、不具合がおきています。 あるデータベースからデータを抽出する作業なのですが、 [A]・[B]二つのテーブルからテーブル[C]を作成する[テーブル作成クエリ]があり、これで作成した[C]をもとにクエリ[D]を実行し、Excelに[D]をエクスポートするという形になっています。 [テーブル作成クエリ]を手動で実行すると正常にテーブルが作成されるのですが、 マクロで実行するとうまくいきません。 マクロは メッセージの設定 ・・・いいえ クエリを開く   ・・・テーブル作成クエリを実行 ワークシート変換 ・・・[D]をExcelのワークシートにエクスポート メッセージボックス・・・"Excelへの書き出しを終了しました" となっています。 具体的には、テーブル作成クエリを実行するときには、 集計開始日と終了日をパラメータとして入力する必要があり、 作成されたテーブル[C]には入力した開始日と終了日が書き込まれます。 [D]のクエリを実行する際には[C]の開始日と終了日が抽出条件となります。 手動で[テーブル作成クエリ]を実行したときには [C]に開始日と終了日が書き込まれているのですが、 マクロで実行したときには、[C]にこの開始日と終了日が書き込まれないため、 結果的にフィールド名だけが入力されたデータの全くないExcelファイルが作成されます。 ちなみにマクロで実行する場合は、あらかじめ日付範囲を入力するフォームに開始日と終了日を入力してから実行します。 長々と書いてしまいましたが、これでおわかりいただけるでしょうか? わかりにくければまた補足いたしますので、 マクロで実行したときに正常に動作するようにするにはどうすればいいのか なにか解決策がありましたら教えてください。

  • accessからexcelへのエクスポート時のシート

    access2002 excel2002 現在accessのクロス集計クエリで各店舗の損益表を作成しフォームからの出力指示でexcelにエクスポートしています。店舗番号を抽出条件にして1店舗ずつ出力しています。 これを店舗番号を指定せずクエリを実行し全店舗分の損益データを店舗ごとのシートに出力するようにしたいのですが、そんなことはできないでしょうか。 店舗,項目 ,8/1 ,8/2 ,8/3 ... 0001,売上 ,10000,12000,13000 0001,原価 , 5000, 5000. 6900 0001,人件費, 4000, 4500, 5000 0002,売上 ,20000,21000,19000 0002,原価 , 9000, 8900. 9000 0002,人件費, 6000, 7000, 6000 上記クエリ結果を シート0001に 店舗,項目 ,8/1 ,8/2 ,8/3 ... 0001,売上 ,10000,12000,13000 0001,原価 , 5000, 5000. 6900 0001,人件費, 4000, 4500, 5000 シート0002に 店舗,項目 ,8/1 ,8/2 ,8/3 ... 0002,売上 ,20000,21000,19000 0002,原価 , 9000, 8900. 9000 0002,人件費, 6000, 7000, 6000 店舗ごとにクエリを作成すればできるような気がするのですが、店舗数が50以上あるのでどうにかひとつのクエリでできないものか考えたのですがどうしても分かりませんでした。 どなたかご存知の方がいらっしゃいましたらご教授願います。

  • エクセル2007 複数のワークシートの印刷について

    Excel2007を使っています。(2003も可) 複数のワークシートに 同一セルに作成したデータを 一枚の用紙に、コピペを使わず、プリントすることは可能でしょうか? (関数式に加え、セル結合等しています) データの内容としては、給料計算を作成しました。 個人の12ヶ月を、ワークシート内に作成しましたが 明細して使用するなら、月ごとで一枚の用紙に出力したいのですが・・・ 解る範囲で調べると、マクロを使用するとか・・・ マクロ自体使った事がないので 解説をみても、どこで作成したらいいのか 全く解りません(><) よろしくお願いします。

  • Access Excel出力する保存先を指定したいのですが?

    Access初心者です。2003です。 7000ほどのデータを70ほどの抽出条件ごとにエクセルにしています。 抽出条件毎にクエリを複数作成し、各クエリが抽出したデータをマクロでエクセルに出力させています。このマクロをクエリ分作成し、別のマクロでその複数マクロをいっせいに実行させています。マクロには「コマンドの実行」で「Excelに出力」を使用しています。このアクションを使用するとマイドキュメントにエクセルが保存されてしまいます。(たまにディスクトップになります。) この保存先を指定したいのです。ダイアログではなく、設定した任意のフォルダにいっせいに収まるようにです。 「出力」アクションだと保存先のダイアログが出てくれますが、クエリの数が多いので手作業が増えてしまいます。「コマンドの実行」のExcel出力ですと手作業が無いのですが、マイドキュメントに保存されてしまいます。 私がツールを作成し、Accessを知らない人間がフォーム画面で使用するのでなるべく自動化したいと考えています。 へたくそな文ですが、どなたか助けてください。

  • Excelのワークシート毎の保存や他のファイルのワークシートの挿入

    ヘルプを見ましたが、よくわからないので質問させていただきます。 Excel97/2000で、複数のワークシートを作成している 1つのファイルを、ワークシートごと別ファイルに保存 をしたいのですが、Excel自体でこういうことを処理する 機能とかがあるんでしょうか。無ければ何か方法はあり ますでしょうか。 それとはまた別に、複数のファイルのワークシートを1つ のファイルにまとめるときにはどのようにすればよろし いのでしょうか。 (つまり、複数ファイル・1つのシート→1つのファイル・複数のシートにするという事。) 初歩的な質問ですいませんがどうぞよろしくお願いします。

  • エクセルのワークシートが重くなる!

    たまにエクセルで起きるのですが、 特定のワークシートが重くなる(キー、マウス操作の待ち時間が長い。RAMメモリ不足から来る重さの感覚に近い。)ことありませんか。 その原因、対処方法がわかる方はいないでしょうか。 そのワークシートの特徴、及び使用環境を以下に書きます。 (1)画面のスクロールが重くなる。 (キー、マウスどちらでも) (2)セル入力すると重くなる。(内容消去でも重くなる) (3)データ量は必ずしも大きくない。(1シートのみのファイルで数十キロでも起こる) (4)重いワークシートをシートコピーすると、そのコピー(Sheet(2))は必ず重くなる。 (5)重くないワークシートをシートコピーしても、そのコピー(Sheet(2))が重くなることがある(ほとんど起きないが過去数例あった)。 (6)新規の空のワークシートを作成し重いワークシートのデータを「全範囲コピー」し、新規ワークシートに「貼り付け」ると重くならない。 (7)マクロの有無によらない。 (8)外部参照ファイル(リンク)の有無によらない。  当社はウイルスバスターのコーポレートエディションを導入しインターネット経由でネットワーク内全てのパソコンのおいて随時パターンプログラムを更新していますので、コンピュータウイルスではないと推測しています。 たまにしかめぐり合わないので、(6)で対処しています。 以下に私の使用している環境を示しますが、他のPCでも同様に起こるので、どうもハードではなくファイルそのものに問題があるのでは思っています。 (環境) OS:Windows2000SP3 AP:EXCEL2002 CPU:CELERON 1.5G HDD:20G MEM:256M