こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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があればお教え願いたいのですが。
以上よろしくお願いします。

投稿日時 - 2004-03-16 19:12:26

QNo.807421

すぐに回答ほしいです

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

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("ファイル名=")で聞く手もあります。

投稿日時 - 2004-03-16 20:27:27

お礼

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

投稿日時 - 2004-03-18 01:22:44

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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

投稿日時 - 2004-03-16 21:39:44

お礼

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

投稿日時 - 2004-03-18 01:25:02

あなたにオススメの質問