• ベストアンサー

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

専門家に質問してみよう