電子書籍の厳選無料作品が豊富!

Access2003,WinXP

お世話になります。
自作のSQLを書いて、結果をTransferTextで手軽にCSVにできないかと考えてこんなのを書いてました。
Dim strSql AS String
Dim strPath AS String
strSql = 自作SQL文
strPath = c:\test.csv
Docmd.TransferText acExportDelim, , strSql, strPath, True

しかし、TransferTextでは「テーブル」か「クエリ」名を直接書くように指示してあり、これだと動かない?んでしょうか。
SQLは300個くらい出力する必要があるため(クエリ300個作れば解決するのですが・・・)上のようなコードをループして動かしたいのですが、何か他の簡単な出力方法があるのでしょうか。
よろしくお願いいたします。

A 回答 (1件)

Dim dbs As Database


Dim qdf As QueryDef
Dim strSql AS String
Dim strPath AS String
Dim i As Integer
Set dbs = CurrentDB
'準備。「適当なクエリ名」と言うクエリを作る
qdf = dbs.CreateQueryDef("適当なクエリ名","SELECT * FROM 何か適当なテーブル");
Set qdf = Nothing 'qdfを開放
'ループ
For i = 1 to 300
  strPath = "c:\test" & Format(i,"00#") & ".csv"
  strSql = 自作SQL文
  dbs.QueryDefs![適当なクエリ名].SQL = strSql
  Docmd.TransferText acExportDelim, , strSql, strPath, True
Next
dbs.Close 'dbsをクローズ
Set dbs = Nothing 'dbsを開放
    • good
    • 1
この回答へのお礼

できました、できました!
サンプルまで作っていただいてすいません。
まさにこの通りの内容を探していました。クエリはSQLの中身を書き換えられるんですね、、、勉強になります。

一点、TransferTextの引渡しが上手く動きませんでしたので変更しています。

Dim db As Database
Dim qd As QueryDef
Set db = CurrentDb
Set qd = db.CreateQueryDef("test", "SELECT * FROM test_table")
Set qd = Nothing
~~~~~~~~~
Do Until rst.EOF
 db.QueryDefs![test].SQL = '自作SQL
 strPath = '出力先
 DoCmd.TransferText acExportDelim, , "test", strPath, True
 rst.movenext
Loop

ありがとうございました。
300個書かなくてよさそうです^^;

お礼日時:2008/10/03 11:54

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A