プロが教えるわが家の防犯対策術!

よろしくお願いします。

■前提条件
OS:XP
Access version: 不明(2003以降だと)
技術力:Accessの初歩段階です。提供されているマクロを
いじっている程度。プログラミングをAccessに書いたことなし。


■サマリー
Access-マクロ-ワークシートの変換(エクスポート)でクエリにあるデータの有無を判定し、データがあるクエリのみExcelに出力したいです。
■詳細
Accessで複数のクエリ(1~10クエリ)があるとします。
そのクエリには、各クエリが参照している大元データによって、
データあるクエリ、ないクエリがあります。

たとえば、クエリの1~5までデータがあり、残りはデータがない
とし、データがある1~5まで同一ファイルのExcel出力したいと
します。1ファイルの中に5シート(クエリ1~5)ある状態です。

Accessのマクロ-ワークシートの変換で、指定したクエリは同一ファイルに複数シートとして出力できることまではできています。
※この場合、ワークシートの変換には、すべてのクエリを指定し、
すべて出力することにしています。

ただ、データがないシートを出力したくないのですが、どのように
データある、なしを判断し、出力すれば良いのでしょうか?

補足
もしくは、一旦データの有無は関係なく、全てのデータは出力し、
Excelのマクロにて制限するなどが考えれますが・・・

A 回答 (2件)

クエリにデータがあるかどうかを調べる関数


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ファイル名)は同じものにしておきます。
    • good
    • 0

> 技術力:Accessの初歩段階です。

提供されているマクロを
> いじっている程度。プログラミングをAccessに書いたことなし。

とあるのと、

> Accessのマクロ-ワークシートの変換で、指定したクエリは同一ファイルに
> 複数シートとして出力できることまではできています。

とのことから、恐らく、マクロの『アクション』列に、対象となるクエリの数だけ、
「ワークシート変換」が並んでいる状態ではないかと思います。

以下、この前提で、現在のマクロへの加筆修正の仕方を説明します。
(恐らく、現状でできる最も簡単な方法かと思いますので)


1)当該マクロをデザインビューで開く
2)マクロの『条件』列が表示されていない場合は、Accessのメニューで
 「表示(V)→条件(C)」を選択して、『条件』列を表示
3)「ワークシート変換」アクションで指定している『テーブル名』欄のクエリ
 の名前を「クエリ1」とした場合、その行の『条件』欄(=「ワークシート
 変換」の左隣)に、以下の式を入力:
  DCount("*","クエリ1")>0
4)以下、「ワークシート変換」が記載されている全ての行の『条件』欄に、
 同様の式を入力
5)マクロを保存して閉じる


・・・以上です。

なお、『ワークシート変換』の『テーブル名』で「=Forms!フォーム1!テキスト0」
といった形でフォームのテキストボックスを参照している場合は、『条件』欄の
式を以下のようにして下さい:
  DCount("*",Forms!フォーム1!テキスト0)

※上では「,」(カンマ)の後のクエリ名を「"」(ダブルクォーテーション)で囲んで
  いるのに対し、下の場合はその囲みがないので注意してください。
「Accessワークシートの変換における条」の回答画像2
    • good
    • 0
この回答へのお礼

DexMachinaさん

ありがとうございます。おかげで上手くいきそうです。

あとは、各クエリに対してこの条件を設定するという、マンパワー的な作業になります。・・・このマンパワーはどうにもなりませんよね

いずれにしても、ありがとうございます。

お礼日時:2009/06/07 22:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す