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