• ベストアンサー

Excel VBAで列ごとのデータをテキストファイルへ書くには?

エクセルのシート(たとえばSheet1)が以下のようになっているとします。 A B C D E F 1 商品A 11111111 あいうえお 3 1000 2 商品B 22222222 かくくけこ 1 2500 3 商品C 33333333 さしすせそ 2 3500 ・ ・ これを決まった列ごとにテキストファイル(固定ファイル名)に書き出すということは、エクセルのVBAで可能でしょうか? テキストファイルの内容は以下のようにしたいのです。 E列を数量として、その分だけのテキスト行を書き出したいのですが… <<bbb.txt>> 商品A 商品A 商品A 商品B 商品C 商品C ・ ・ <<ccc.txt>> 11111111 11111111 11111111 22222222 33333333 33333333 ・ ・ <<fff.txt>> 1000 1000 1000 2500 3500 3500 ・ ・ また、このようなことが参考になるHPがあればお教え願いたいのですが。 以上よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

Sub test01() d = Range("a1").CurrentRegion.Rows.Count ' MsgBox d Open "c:\My documents\aa1.txt" For Output As #1 For i = 1 To d Print #1, Cells(i, "C") Next i Close #1 End Sub Cells(i,"C")のCは目的の列を指定してください。 これもA-Dとかを一遍に済ますなら、OpenCloseの外を For J=1 to 4 next J でネストして、ファイル名をプログラムで変えてください。X=Inputbox("ファイル名=")で聞く手もあります。

htokita
質問者

お礼

素早いお答え、ありがとうございます。 実際のシートはもう少し複雑ですが、応用して機能は十分に果たせるようになりました。 d = Range("a1").CurrentRegion.Rows.Count はとても参考になりました。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1さんの回答を参考に、E列の数字分重複して書き込むサンプルです。 元データが A1:F3 にあるものとして、B~F列を書き出します。 (途中にあるE列を除くのは面倒なのでE列も) 試すならテスト環境で。 Sub TextPrint() Dim myRow As Long, myCol As Long, myCnt As Long, fName fName = Array("bbb.txt", "ccc.txt", "ddd.txt", "eee.txt", "fff.txt") With ThisWorkbook.ActiveSheet  For myCol = 0 To 4   Open ThisWorkbook.Path & "\" & fName(myCol) For Output As #1   For myRow = 1 To .Cells(65536, 5).End(xlUp).Row    For myCnt = 1 To .Cells(myRow, 5)      Print #1, Trim(.Cells(myRow, myCol + 2))    Next myCnt   Next myRow   Close #1  Next myCol End With End Sub

htokita
質問者

お礼

分かりやすいお答え、ありがとうございます。 エクセルはあなどれないですね。 papayukaさんのお答えを参考に再び改造してみました。 試行錯誤の末、うまくいくようになりました。

関連するQ&A