• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル VBA テキストファイル書き出す応用?)

エクセル VBA テキストファイル書き出す応用

このQ&Aのポイント
  • エクセル VBA を使ってテキストファイルを書き出す方法についての応用について説明します。
  • 指定のシートとセルに書かれた内容を元に、テキストファイルに書き出すプログラムの作成方法について教えてください。
  • Sheet1のA2~A20にはテキストファイル名が、Sheet2~Sheet20には各シートの文章が入力されています。Sheet2の内容をSheet1のA2のファイル名、Sheet3の内容をSheet1のA3のファイル名に書き出す方法を教えてください。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

もうちょっとシンプルなマクロにして、また用意したデータシートとファイル名の個数が合ってなかった時の対処とかもします。 sub macro1()  dim i as long  dim s as long  worksheets("Sheet1").select ’データシートの巡回  for s = 2 to worksheets.count   if cells(s, "A") = "" then exit sub   open thisworkbook.path & "\" & cells(s, "A") & ".txt" for output as #1  ’データの巡回   for i = 2 to worksheets(s).range("A65536").end(xlup).row    print #1, worksheets(s).cells(i, "A").value   next i   close #1  next s end sub

siraku
質問者

お礼

回答ありがとうございます。 思っていることができました。

その他の回答 (1)

  • fred2000
  • ベストアンサー率30% (6/20)
回答No.1

おそらく動くと思います もしこれでダメでしたら、他の方の回答を頼ってください 私の知識ではこれ以上は無理ですので・・ Option Explicit ' テキストファイル書き出すサンプル(2) Sub WRITE_TextFile3() Dim cnsFILENAME As String Dim intFF As Integer ' FreeFile値 Dim strREC As String ' 書き出すレコード内容 Dim GYO As Long ' 収容するセルの行 Dim GYOMAX As Long ' データが収容された最終行 Dim i As Integer For i = 2 To 20 Worksheets("Sheet" & i).Select ' 最終行の取得 GYOMAX = Worksheets(i).Range("A65536").End(xlUp).Row ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(出力モード) Open Worksheets("Sheet1").Cells(i, 1).Value & ".txt" For Output As #intFF ' 2行目から開始 GYO = 2 ' 最終行まで繰り返す Do Until GYO > GYOMAX ' A列内容をレコードにセット(先頭は2行目) strREC = Cells(GYO, 1).Value ' レコードを出力 Print #intFF, strREC ' 行を加算 GYO = GYO + 1 Loop ' 指定ファイルをCLOSE Close #intFF Next End Sub

siraku
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。

関連するQ&A