• ベストアンサー

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/17068)
回答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

  • テキストファイルの一部置換したファイルをたくさん作りたい

    テキストファイル(a.txt)があるのですが このファイルの一部の文字列aaaをbbbに置換したファイル(b.txt)を作りたいです。 また文字列aaaをcccに置換したファイル(c.txt)も作りたいです。 続けてd.txtやe.txt・・・と作っていきたいですが簡単にできるフリーソフトはないでしょうか? 現状はa.txtを開いてaaaをbbbに置換して、別名で保存するのを繰り返し(10回以上)するので大変です。 このようなことが楽にできるフリーソフトがあれば教えてください。

  • Excelで、大量のファイルをテキストファイルにまとめて変換する方法はありますか?

     大量のExcelファイルを自動的にすべてテキストファイルに変換する方法はありますか? aaa.xls, bbb.xls, ccc.xls, ... zzz.xls         ↓ aaa.txt, bbb.txt, ccc.txt, ... zzz.txt と行った具合にです。  対象となるExcelは複数のワークシートからなりますが、いずれも変換したいシートをアクティブにした状態で保存してあります。 (でも、そうでない場合にも、例えば各ファイルの1枚目のシートを選んでテキスト形式で保存する方法があれば、それも教えていただけるとなお助かります。)  よろしくお願いします。

  • Excelで複数のテキストファイルを1枚のシートに

    Excelで複数のテキストファイルを1枚のシートに追加したいのですが可能でしょうか? VBAや別ソフトを複数使ってもかまいません。 2列のテキストファイルが複数ありA列目は共通でB列目がそれぞれ異なります。 data01.txt、data02.txt…と50ぐらいのファイルがあり、それぞれ A  B 10 1.24 20 2.56 30 2.46 :  : となっています。これをひとまとめにして A      B     C ・・・ data01  data02   data03・・・ data50 10     1.24    1.35 ・・・ 2.24 20     2.56    2.22 ・・・ 1.34 30     2.46    3.23 ・・・ 5.45 :       :      : といった表にしたいのです。 お願いします。

  • 検索VBAを教えてください。

    VBAの勉強中です。 超初心者です。 シート1のB3に入力した値を、シート2のデータベースのC列から検索して、その検索した値と同じ行のD列・E列・F列の値を、シート1のB4・ B5・B6に表示したいと思います。 <シート1>    A     B     C     D 1 2     3       あああ ←ここを入力すると 4       aaa   ←表示したい! 5       bbb   ←表示したい! 6       ccc   ←表示したい! <シート2>    A    B    C      D     E     F 1           あああ    aaa     bbb     ccc 2           いいい      eee     fff      ggg 3           ううう      hhh      iii       jjj 4           えええ     kkk      mmm     nnn 5             おおお     ooo     ppp     qqq findを使えばいいと聞きましたが、使い方がよくわかりません。 例を読みましたが、どう自分に生かせばいいのかわかりませんでした。 どなたか未熟な私に教えていただけませんか? どうぞよろしくお願いいたします。

  • 複数のテキストファイルを1つにまとめる

    同一フォルダ内にある複数のテキストファイルの内容を1つにまとめる方法を探しております。 例えば、 a.txt, b.txt, c.txt が同一フォルダにあり、 それぞれの内容が AAA BBB CCC である時に、これらをまとめて matome.txtとして、その内容が AAA BBB CCC となるようなプログラムを書きたいのですが、どの様な方法が考えられますでしょうか。 上の例では3つのテキストファイルですが、実際に処理したいファイルは数百個になる為、一つ一つファイル名を入力する作業が大変で困っております。 同一フォルダ内のファイルをファイル名順に一度に読み込み、まとめる方法がありましたらお教え下さい。

  • エクセルマクロ 特定の文字列を含む行を削除

    エクセルマクロ 特定の文字列を含む行を削除 エクセルのマクロについて教えてください。 下の中から列を限定せず、すべての行でAAA、CCCのいずれかがある場合、 その行ごと、すべて削除したいのです。 時に削除したい特定の文字列が数十種類になるため、 マクロ起動時に削除したい特定の文字を記述したファイルを読み込み、それから 削除できるようにしたいのです。場合によってはそのファイルを編集し、 削除したい文字列を変更したいのです。 ご教示いただだけないでしょうか A列 B列 C列 1 AAA BBB CCC 2 BBB CCC FFF 3 DDD BBB FFF 4 AAA CCC DDD 5 GGG RRR UUU 行中にAAA、BBBがある場合、削除したい ↓ A列 B列 C列 5 GGG RRR UUU マクロを実行し、上記の結果にしたい。

  • テキストファイルを一つにまとめる

    一つののフォルダ内に複数のテキストファイルがあります a.txt b.txt c.txt があり内容はそれぞれ 日付 商品名 数量と同一項目にしてあります これを同じフォルダに自動で一つのファイルにまとめる方法はありませんか 超初心者です よろしくお願いします

  • Excelで同一のデータを抽出して横並びに

    A     B  C     D 商品コード 注文数  商品コード 注文数 aaa     15  ccc     4 bbb      12  ddd     6 ccc     10  aaa     22 ddd     6   eee     10 eee     5   bbb     7 fff       8 kkk 9 kkk 7 lll 4 上記のようなデータを 以下のように同じ商品コードを横並びに表示させたいのですが どういったcountifとかで試したのですが上手くいかず、どのような関数を使えば可能でしょうか? A     B  C     D 商品コード 注文数  商品コード 注文数 aaa     15  aaa     22 bbb      12  bbb     7 ccc     10  ccc     4 ddd     6   ddd     6 eee     5   eee     10 fff       8 kkk 7 kkk 9 lll 4 宜しくお願い致します。

  • テキストファイルのデータをエクセルへコピーのやり方

    よろしくお願いします。 エクセル2000を使っています。 テキストのデータで A1/B1/C1    /はスペースです。 D1/E1/F1    データの長さは全部違います。 A2/B2/C2     D2/E2/F2 A3/B3/C3     D3/E3/F3      ・    ・(続く) といったものがあります。これをエクセルで    A列 B列 C列 D列 E列 1行 A1 B1 C1 D1 E1 2行 A2 B2 C2 D2 E2  ・・・ 3行 A3 B3 C3 D3 E3  (続く)          ・          ・(続く) という感じで別々のセルにいれて貼り付けしたいのです。 テキストデータを別々のセルに貼り付けする方法は 過去ログで「区切り位置」というのをつかえばいいというのはわかりましたが、この場合の複数行にわたるテキストデータをエクセルの1行に貼り付けする方法がわかりません。また、データの長さが違うために「区切り位置」もうまくいきません。 良い解決法をお願いします。

  • Excel?VBA?

    Excelはかなりつかっているのですが、 VBAは初心者です。 売上伝票をほかのソフトからCSVに変換してデータを取り込んでいます。 A伝票番号,B売上日,C商品コード,D商品名 のような形式です。 A伝票番号, B日付 ,C商品コード,D商品名 1,5/1,111,aaa 1,5/1,112,bbb 1,5/1,113,ccc 1,5/1,114,ddd 1,5/1,115,コメント 2,5/2,116,eee 2,5/2,117,fff 2,5/2,115,コメント になります。 コード115の商品名を新規のE列に表示することは可能でしょうか。 条件は、日付が一致する欄に同じコメントが入ります。 以下のような形です。 A伝票番号, B日付 ,C商品コード,D商品名,Eコメント 1,5/1,111,aaa.5/1のコメント 1,5/1,112,bbb.5/1のコメント 1,5/1,113,ccc.5/1のコメント 1,5/1,114,ddd.5/1のコメント 1,5/1,115,コメント.5/1のコメント 2,5/2,116,eee.5/2のコメント 2,5/2,117,fff.5/2のコメント 2,5/2,115,コメント.5/2のコメント となればいいなという形です。 もし、教えていただければ幸いです。 よろしくお願いいたします。

専門家に質問してみよう