希ですが、Excelファイルにあるデータを行ごとにファイルへ出力したいことがあります。私の場合、あるソフトウェアに収集データを投入するため、この作業が不可欠です。
ファイルを結合するというのはテキストファイルならコマンドラインで簡単にできますし、部分的な抽出も用意ですが、全行をそれぞれとなると面倒です。
当然、手作業で行っていてはやっていられないので、VBAで処理していますが、希な作業のため、毎回、調べ直しています。これも無駄なので、自分用メモを兼ねて以下にVBA例をあげます。
Sub save2File()
' Dim ws As Worksheet
' Set ws = ActiveWorkbook.Worksheets(1)
Dim i As Integer
i = 2
Dim datFile As String
Do While Cells(i, 1).Value <> ""
datFile = ActiveWorkbook.Path & "\files\" & Cells(i, 2) & ".txt"
Open datFile For Output As #1
Print #1, "記述1"
Print #1, Cells(i, 21).Value
Print #1, ""
Print #1, "記述2"
Print #1, Cells(i, 22).Value
Close #1
i = i + 1
Loop
End Sub
上の例ではExcelファイルのあるフォルダーに「files」というフォルダーを事前に用意しておくこととしています。このフォルダー内へ2列目をファイル名とし、21,22列目をその内容としたテキストファイルを生成しています。
とても実用的なVBAの例のご提供ありがとうございます。
同じ作業に直面してるので、大変効率化できました。
ところですが、出力したファイルはANSI文字コードで保存されますが、UTF-8文字コード変換手間が残ってしまいました。テキストサイドに出力する時に文字コードUTF-8として保存する修正は、どうしたらよろしいでしょうか。ご教示いただけると幸いです。
お役に立てて幸いです。
個人的には多数ファイルの文字コード変換にはコマンドラインでnkf、最近ではiconvを用いています(単発の文字コード変換は秀丸エディタで実行)。nkfもiconvもいわゆるUNIX系のコマンドラインツールですが、Windows上でもcygwinやWSLで使用できます。私はcygwinを使っています。
VBAで実現するためにはファイル書き出しをここに記載してある方式からADODB.Streamを使う方式に変更すれば実現できます。「ADODB.Stream UTF」などで検索していただくと書き出し方について説明されているサイトが多数ありますので、その方法を組み合わせるとUTF-8で保存できると思います。