- ベストアンサー
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があればお教え願いたいのですが。 以上よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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("ファイル名=")で聞く手もあります。
その他の回答 (1)
- papayuka
- ベストアンサー率45% (1388/3066)
#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
お礼
分かりやすいお答え、ありがとうございます。 エクセルはあなどれないですね。 papayukaさんのお答えを参考に再び改造してみました。 試行錯誤の末、うまくいくようになりました。
お礼
素早いお答え、ありがとうございます。 実際のシートはもう少し複雑ですが、応用して機能は十分に果たせるようになりました。 d = Range("a1").CurrentRegion.Rows.Count はとても参考になりました。