• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA テキストに出力、名前を付けて保存)

Excel VBAで複数のテキストファイルを自動生成する方法

このQ&Aのポイント
  • Excelの特定の範囲のデータを取得し、ファイル名とテキストの内容を指定して複数のテキストファイルを自動生成する方法について解説します。
  • VBAを使用して、Excelの特定の範囲のデータを取得する方法を解説します。また、取得したデータをファイル名とテキストの内容として指定し、複数のテキストファイルを自動生成する方法についても説明します。
  • Excel VBAを利用して、特定の範囲のデータを取得し、それをファイル名とテキストの内容として指定して複数のテキストファイルを自動生成する方法について詳しく解説します。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

1>1  aa  bb  cc  =A1&B1&C1  2>実際は数千行あるので、数千ファイルを一気に生成させたいのです。 3>ファイル名がbb.txtで、テキストの内容はaabbcc。 ちょっと説明不足のような気もしますが、このままで出力したら、必ず、同じものが出てきてしまいます。それを考慮して作れば、以下のようになります。 '// Sub TestMacro()  Dim i As Long, k As Variant, j As Long  Dim fn As String  Dim mPath As String  Dim rng As Range, ar As Variant  Dim buf As String  Set rng = Range("A1", Cells(Rows.Count, 1).End(xlUp).Offset(, 2))    mPath = CurDir 'パスを決める(CurDir は、カレントディレクトリ)    ar = rng.Value  For i = 1 To rng.Rows.Count   fn = ar(i, 2) & ".txt"   Do Until Dir(mPath & "\" & fn) = ""    k = Val(k) + 1    j = InStr(1, fn, "(", 1)    If j > 0 Then     fn = Mid(fn, 1, j - 1) & "(" & k & ")" & ".txt"    Else     fn = Replace(fn, ".txt", "", , , 1) & "(" & k & ")" & ".txt"    End If   Loop   Open fn For Output As #1   Print #1, ar(i, 1) & ar(i, 2) & ar(i, 3)   Close #1   k = ""  Next  If Len(buf) > 2 Then   MsgBox Mid(buf, 2) & vbCrLf & "重複のため保存は省かれました。"  Else   MsgBox mPath & "に出力されました。"  End If End Sub

noname#141201
質問者

お礼

色々考慮までしただいてとても嬉しく思います! 動作確認できました^^ ありがとうございます!

その他の回答 (2)

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.3

Sub CSV出力()   Const 出力フォルダ = "C:\DATA\?.txt"   Dim I As Long   For I = 1 To Cells(Rows.Count, "A").End(xlUp).Row     Open Replace(出力フォルダ, "?", Cells(I, "B")) For Output As #1     Print #1, Cells(I, "D")     Close #1   Next I End Sub ※出力フォルダは変更してください。

  • BookerL
  • ベストアンサー率52% (599/1132)
回答No.1

 とりあえず書いてみたものです。 "c:\test\" のところを、実際に保存するディレクトリ名に変えてください。 エラー対策や、高速化は考えていませんので、あしからず。 Sub test() Dim r As Integer Dim FlName As String Dim wb As Workbook Const DirName = "c:\test\" '保存するディレクトリ Application.DisplayAlerts = False r = 1 While Cells(r, 2).Value <> "" Set wb = Workbooks.Add wb.Worksheets(1).Range("A1").Value = Cells(r, 4) FlName = DirName & Cells(r, 2).Value & ".txt" wb.SaveAs Filename:=FlName, FileFormat:=xlText wb.Close r = r + 1 Wend Application.DisplayAlerts = True End Sub

noname#141201
質問者

補足

回答かありがとうございました! tada、オートメーションエラーとのメッセージがでてきました。。。 デバッグでは wb.SaveAs Filename:=FlName, FileFormat:=xlText の箇所が黄色で表示されました。 エラーの意味がよくわからないので困っています。 一応testフォルダは作成してあります。EX2007です 勉強の意味でも、補足していただければとても助かります。 宜しくお願いします。

関連するQ&A