• ベストアンサー

(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など)をそれぞれの場合によって変える方法がわかりません 質問のしかたが下手でいまいちわからないと思いますが、、 保存するデータごとに保存するファイル名を変える方法を知りたいのでぜひ、教えてください!

  • mynann
  • お礼率46% (150/324)

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

  • ベストアンサー
  • 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/2170)
回答No.1

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

mynann
質問者

お礼

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

関連するQ&A

  • ACCESSでテキストファイルを出力させる方法

    こんにちは ACCESS初心者のmynannといいます さっそく質問ですが 例えば テーブルに 商品コード 価格  販売 001     \100  yes 002     \300  no 003     \200  yes 004     \250  yes 005     \150  no というデータがあったとして これを元に 「扱ってる商品は001,003,004で    それぞれの値段は  001 \100 003 \200 004 250です」 というようなテキストファイルを出力することは可能でしょうか? できるとしたらマクロやモジュールを使うのでしょうか? 面倒だとは思いますがやり方もしくは勉強すると 参考になる箇所などを教えていただきたいです お願いします!

  • (ACCESS VBA)あるテキストファイルのデータを別のテキストに写す

    すいませんがたびたび質問させていただいていmynannです ACCESS VBAについての質問です まず商品マスタクエリに 商品コード 価格 001 \100 002 \150 003 \200 というデータがあり テキストファイル「text01.txt」に 「こちらのアドレスが商品のページです↓  http://goo.ne.jp/syouhin/」 この商品マスタの商品コードとtext01.txtで 「こちらのアドレスが商品のページです↓  http://goo.ne.jp/syouhin/001.html」 というようなファイルを出力するようなモジュールをつくろうと思っています 実際には商品コードは複雑ですし テキストファイルももっとたくさんの文章です で特に何を聞きたいかというと テキストファイルのテキストデータをどうやって 扱えばいいかがよくわかりません OPENステートメントとかつかうんでしょうか、、? どなたか助けてください!

  • (ACCESS VBA)改行,「"」がある文字列

    こんにちはたびたび質問させていただいているmynannです ACCESS2000での話しなのですが 今モジュールを使って 定数である文字列と テーブルの商品マスタの数値を反映させた文字列を合わせて すぐにウェブページにできるようなものを作ろうとしているところです (例えばhttp://goo.ne.jp/という定数と商品マスタの 商品コードである001を使ってhttp://goo.ne.jp/001.htm みたいな文字列を作り出すみたいな感じで) それで今こまっているのですが 文字列が短い時には普通に動くのですが 実際にためしたい文字列だと 中に改行や「"」が複数あるせいかエラーになってしまいます なんか対処方ないのでしょうか?? とてもわかりずらい質問のしかたで申しわけございませんが 回答お願いします☆

  • (VBA) 保存できない

    指定ディレクトリー(TurgetFolder)に保存しようとして  下記のコードを利用していますが、エラー(1004)が出ました。  添付画像参照下さい(丸数字有り) ------------------------- 'テキストデータにしたいシートを新しいブックとして作成し、そちらからテキストファイルを作成する Ws2.Copy ActiveWorkbook.SaveAs Filename:=TurgetFolder & FName & ".txt", FileFormat:=xlText ---------------------------- ①、②、④はエラー原因では無かった。 原因は、③で  フォルダー名に [ ] (左カッコ、 右カッコ)  を利用した事でした。  でもフォルダー名及びファイル名に同じ [ ]  があっても読み取り時は問題なく処理されます。 使用してはいけない文字があっても   他に保存する方法ありますか ? 例えば、  事前にダメ文字を書き換えて保存するとか ? EXCELの仕様で難しいのであれば諦めます。

  • VB6 名前を指定して保存する際に・・・

    こんにちわ。 ファイルを保存する際のコードを考えて作ったのですが、少し困ったので教えてください。 コードは・・・ With CommonDialog1 .CancelError = True .DialogTitle = "保存ファイル名指定" .DefaultExt = ".txt" .Filter = "テキストファイル(*.txt)|*.txt" .FilterIndex = 1 .ShowSave End With On Error GoTo aaa CommonDialog1.ShowSave Open CommonDialog1.FileName For Binary As #1 Put #1, , Text2.Text Close #1 Text2.Text = "" Exit Sub aaa: If Err.Number = 32755 Then MsgBox "キャンセル" End If これなんですが、text2の内容を保存する際に保存名を入れますが、一度保存OKを押すと「ファイル名.txt」となるのはいいんですが本当は1回OKを押した時点でtxtファイルとして保存できるようにしたいので、どなたか分かる方アドバイスお願いします。

  • 「名前を付けて保存」で保存されるファイルの拡張子

    ブラウザに、palemoon12をメインで使っています。 他には、ie8、firefox13、その他いろいろ使っています。 ウエッブでページを保存する場合に、ファイルの種類として、主に Webページ、完全 Webページ、HTMLのみ テキストファイル の3種類で保存しています。 palemoonやfirefoxで保存するとき、「ファイルの種類」が何であっても、「ファイル名」のボックスではファイル名にデフォルトで「.htm」が付いてしまっています。 しかしこれは、「テキストファイル」で保存する場合、困ります。 テキストなのに拡張子に「.htm」が付いたファイルを開くと、テキストエディタで開かれますが、改行が全くないベタのテキストなので、大変に読みにくいのです。 そのため、テキストで保存する場合には一々、拡張子の部分を削除してから保存しています。そうすると、ファイル名に「.txt」が付いて保存されますし、元が<br>などで改行されている箇所はちゃんと改行されているのです。 しかし、保存するときに一々ファイル名に付いている拡張子を削除しなければならない、これは面倒です。 palemoonやfirefoxで、保存する「ファイルの種類」がテキストの時に、一々手動で削除しなくても自動的にファイル名に拡張子に「.txt」が付く方法がないでしょうか。 よろしくお願いいたします。 ちなみに、ieでは「ファイルの種類」が何であっても、「ファイル名」のボックスでは拡張子は付きません。しかし、保存されたファイルには、選択した「ファイルの種類」に応じて、「.htm」「.mht」「.txt」など適切な拡張子が付けられていますし、ファイルの中身もそれに応じた体裁になっています。 もう一つちなみに、この点はieがいいのですが、決定的に不便な点があります。 「名前を付けて保存」する場合、 palemoonやfirefoxでは Ctrl+S のショートカットキーが使えます。しかし、ieにはこのような便利なショートカットキーが用意されていない。 どちらも中途半端で、困ります。

  • ファイル保存ダイアログ

    こんにちわ。VB6の質問をさせてください。 Text1.Textに入っている文字列をtxtファイルとして保存したいのですが、分からなくて困ってます。 単純にダイアログを出して保存先とファイル名の指定が出来るようにしたいと思ってます。 サンプルコードのページを見たのですが、長すぎて理解できなかったので簡単な説明やHPなどあれば紹介してくれると助かります。 よろしくお願いします。

  • エクセルのVBAで、複数ファイルの漢字コードを変換したあと各ファイルの一行目を取得したリストを作成したい

    500ファイルくらいある顧客データ(漢字コードEUC、テキストファイル)から、自動的にリストを作成したいのですが、漢字コードをEUC→S-jisに変換する方法がわかりません。 一行目の取得のためのモジュールは、こちらのサイトの別の方の質問に対する回答からヒントを得て成功したのですが…。 あと、ファイル名に拡張子をつけるという処理もVBAでできるなら教えてください。

  • 「名前をつけてファイルを保存」で保存する:VB.NET

    テキストボックスの内容をテキストファイルに書き込んで保存するプログラムを作っています。 1.指定した場所に指定したファイル名で保存する 2.「名前をつけて保存する」ダイアログを表示する 以上の2つについては分かったのですが、いわゆるメモ帳のようにメニューバーからファイル→名前をつけて保存ダイアログを開き、任意の場所にテキストボックスの内容を書き込んだテキストファイルを作成する方法が分かりません。 分かる方がいらっしゃいましたらご教授下さい。

  • VBA 名前を付けて保存の方法について

    VBAのコードにて名前を付けて保存のやり方ができません。 現在開いているファイルを 名前を付けて保存したいのですが ファイルの指定方法が間違っているのか保存できません。 やりたいこと 現在開いているファイル内のシート(設定画面)の A1セルとA2セルの文字を "G:¥●エクセル¥ソフト¥計画"のドライブにて 保存する(A1セルとA2のセルの文字をくっつけて名前を付けて保存したい) 例:元のbook1のファイル名をA1セルとA2セルの文字をくっつけた   名前にしてから保存したい。 保存先のドライブの指定方法が分からなかったため マクロの記録にてそのドライブへ名前を付けて保存してみて ドライブの名前の指定をしました。(この方法も間違っていますか?) コードを下記に記載しています。 すいませんがうまく動くコードを記載してもらえると 助かります。 回答よろしくお願いします。 Sub macro1() Dim wb As Workbook Dim ws As Worksheet Dim hozonPath As String Dim FolName As String Dim FilName As String Set wb = ThisWorkbook Set ws = Worksheets("設定画面") hozonPath = "G:¥●エクセル¥ソフト¥計画" FolName = ws.Range("A1").Value FilName = ws.Range("A2").Value wb.SaveAs fileName:=hozonPath & FolName & "¥" & FilName End Sub