• ベストアンサー

(ACCESS VBA)名前をかえてファイルを保存する方法

こんにちはmynannです 困っているのでヒントをいただけたらと思って質問します。 ただいま↓のような商品マスタがあります 商品コード 価格  販売 001     \100  yes 002     \300  no 003     \200  yes 004     \250  yes 005     \150  no このデータからモジュールを使って yesの物だけを抽出して 以下のようなテキストファイルを保存したいと思います 「商品コード 001 価格 \100」 ※ファイル名は「001.text」 003と004についてもほぼ同様 前回私の質問を見ればわかると思いますが レコードセットやIF、Do Until、printなどを 使えばできそうなんですが 保存するファイル名(001.text,002.textなど)をそれぞれの場合によって変える方法がわかりません 質問のしかたが下手でいまいちわからないと思いますが、、 保存するデータごとに保存するファイル名を変える方法を知りたいのでぜひ、教えてください!

質問者が選んだベストアンサー

  • ベストアンサー
  • laputart
  • ベストアンサー率34% (288/843)
回答No.2

例 以下の通りです。 -------------- Dim db As Database Dim rsn As Integer Dim rsname As String Dim Data, FileName As String rsn = 0 rsname = "商品マスターQ" Set db = CurrentDb Set rs(rsn) = db.OpenRecordset(rsname, dbOpenSnapshot) rs(0).MoveFirst Do Until rs(0).EOF If rs(0)!チェック = True Then Data = "商品コード" & rs(0)!商品Code & "価格" & "\" & CStr(rs(0)!単価) FileName = "D:\MDB\" & rs(0)!商品Code & ".txt" Open FileName For Output As #1 Print #1, Data Close #1 End If rs(0).MoveNext Loop '-------------------- ●上の例ではレコードセットを配列にしています。 ●テーブル(商品マスター)の構成は 商品Code, 単価、チェック(yes/no) としました。そのテーブルをそのまま選択クエリー を作成 商品マスターQ ●このクエリー上でYesだけにフィルターを掛ける事も出来ますが上の例ではIf文を使用 ●ファイルの保存先として D:\MDB\ としていますが これは適当に替えてください。 ●エラーチェックは付けていません。ファイルは自動的に上書きされますのでこのあたりは適当に修正してください。 ●前もって少ないデータで試験を行ってください。 ご質問はご遠慮なく!!

mynann
質問者

お礼

回答ありがとうございました 言われてみればこういう方法でできそうですね それで今自分で作ってのですが動きません、、 rs()が定義されてないみたいなんですがこれでいいんでしょうか? あとdbOpenSnapshotの使い方がいまいちわかりません dbOpenTableとどう違うのでしょうかぁ? 後者の方は自分で調べてみますが、、 ちなみにエラーはSub またはFunctionが定義されてないとでます もし良ければ助けてください!

mynann
質問者

補足

色々といじりながら考えていたらできました! 本当にありがとうございました★

その他の回答 (1)

  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.1

Dim filename as string filename = [なにか] & ".txt" Open filename For Output As #1 Print #1, "これはテストです。" Close #1 で書き出せます。 ループしながら[なにか]をうまく指定すれば、できますよ。

mynann
質問者

お礼

なるほどー 思っていたよりも結構簡単にできるもんですね 大変助かりましたありがとうございました!