|
VBA必須になります。
方法ですが、
1 出力したいテキストファイル名を生成
2 当該週のレコードだけを抽出
3 2をテキストファイルに出力
4 1から3をループ
という流れになります。
2の「当該週のレコードだけを抽出」ですが、
クエリで抽出する方法とレコードセットを使う方法があります。
クエリで抽出する方法だと、ループにおける各回ごとに異なるクエリを作る必要があります。
そのクエリは、手作業で作るのは面倒なので、VBAで作ることになります。
その手順は、DAOの QueryDef オブジェクトの SQL プロパティを毎回書き替える
という方法になります。
SQL プロパティには、選択クエリのSQL文を指定することになるので、
SQL文を自分で書けることが必要です。
でも、SQL文について解説しているサイトを見つけ、30分も勉強すれば、
簡単な選択クエリであれば、SQL文で表現できるようになると思います。
レコードセットで抽出する方法だと、
レコードセット取得に当たって、SQL文を指定することになります。
3の「テキストファイルに出力」ですが、
2でクエリにより抽出した場合は、TransferText メソッドを使います。
ほかにも OutputTo メソッドも使えると思いますが、
私は、OutputTo メソッドは使ったことがありません。
なお、TransferText メソッドだと、レコードの並び順が、クエリとテキストファイルとで
異なる可能性があります。
テキストファイルでの並び順もクエリどおりにしたいのであれば、
クエリにおいて並び順を指定しておき(SQL文で ORDER BY 句を指定する)、
クエリをレコードセットとして取得して、1レコードずつPrint # ステートメントで
テキストファイルに出力します。
レコードセットで抽出する方法だと、
レコードごとに Print # ステートメントを使って、テキストファイルに出力します。
>また、その月の週で1,2,4,5週目はデータがあったとして、
>第3週目のデータがなければ、空データをして保存しなければ、
>なりません。
レコードの抽出をクエリで行うならば、DCount 関数を使い、
レコードセットで行うならば、RecordCount プロパティを使って、
何件抽出できたかを取得して、レコード件数が0件の場合と、1件以上の場合とで
場合分けすれば(If文)、いいと思います(
|
|