• ベストアンサー

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

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

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

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

jump_1979
質問者

お礼

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

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

クエリにデータがあるかどうかを調べる関数 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に反映させる方法はありますでしょうか?

  • アクセスのワークシート変換について

    アクセス97のワークシート変換について教えてください。 アクセスの中でクロス集計クエリを既存のエクセルのシートにエクスポートさせているのですが、エラーとなってしまいます。 吐き出し先のエクセルのファイルを一回一回削除して作り直している時は、エラーはでなかったのですが、エクセルシートにマクロをつけて、シートを削除しないようにしたらエラーが出るようになってしまいました。 ちなみにマクロでは、シートのデータの周りに罫線を引いています。 何か関係あるのでしょうか?? エラー内容のヘルプを呼んだのですがアクセスの処理の中でそのようなことを行った覚えはないのですが... したにエラー内容とヘルプの内容を表示しておきましたので、 何か原因がわかる方がおられましたら宜しくお願い致します。 ----------------------エラー内容---------------------------------- 実行時エラー’3010’ テーブル****は既に存在します。 ----------------------エラーのヘルプ------------------------------ このデータベースに既に存在しているテーブル名を使用してテーブルを作成しようとしたか、または既存のテーブル名に変更をしようとしました。ほかのテーブル名を使用してください。 マルチユーザー データベース環境では、テーブルを削除する場合、ほかのユーザーがそれと同じ名前のテーブルを作成した後に、削除するテーブルをロールバックしようとするとこのエラーが発生します。 削除したテーブルをロールバックするには、先にそのユーザーが新しいテーブルを削除するか、またはテーブル名を変更する必要があります。 その後、もう一度ロールバック操作を実行してください。

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

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

  • アクセス2007のエクスポートについて教えてください!

    アクセス2007の質問です。 マクロでクエリをエクセル形式で出力する方法を教えて下さい。 アクセス2003では「ワークシート変換」というアクションがあったと思います。この機能をアクセス2007で実施したいと考えています。簡単なフォームのボタンを押すと、クエリに定義した内容がデスクトップ等にエクセル形式でエクスポートするように作りたいのです。 ご存じの方どうぞよろしくお願いいたします。

  • 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」に出力されます。

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

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

  • アクセスのレポートをマクロでEXCELに出力したいのですが

    マクロを作成して「ワークシートの変換」「アプリケーションの実行」でテーブルやクエリをEXCELに出力することは出来るのですが、レポートもマクロからもワークシートの変換ができるのでしょうか。記述の方法を教えてください。

  • Access2007のエキスポートについて

    Access2007でマクロを使ってExcel2007のファイル(xlsx)形式へエキスポートします。その際、 ・「ワークシート変換」を指定 ・ワークシートの種類に「Excel Work book」 ・出力ファイルパスに「(絶対パス)\(ファイル名).xlsx」 としました。 既にAccess2007のテーブルには、65535行を超える200000行のレコードが入っていることが確認できてます。 マクロを実行すると、「指定範囲を広げることができません」とダイアログが出てしまい、マクロが中断し、異常終了してしまいます。 windowsXP SP2 pentium4を使用。 異常終了せず、全レコードをファイルにエキスポートする方法はありませんか? 宜しくおねがいいたします。

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

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

  • マクロでエクスポート(アクセス97)

    W2000・アクセス97・エクセル2000です。 アクセスのクエリーを、マクロを使用して、新規にエクセルにエクスポートしたいです。 マクロでは、 ・変換の種類 エクスポート ・ワークシートの種類 Excel97(2000は選択の中になし) ・テーブル名 エクスポートしたいクエリーを指定 ここまでは、わかりましたが、ここまででマクロを実行すると、 ”このアクションまたはメゾットを実行するには、[file name/ファイル名]が必要です” と、表示され、エラーになります。 できましたら、この後、どのようにすればよいのか? もしくは、こういう方法で、というのがありましたら、お教えくださいませ。詳しく解説してくれている、URLのご紹介でも、かまいません。 お手数ですが、どなたか、よろしくお願い申し上げます。