先日、Excelベースで検討をしていて、一列ごとにテキストファイルに出力したときの自分用メモです。
想定しているのは次の図のように、1行目がCase番号、2行目以降にデータが入っているExcel。
行ごとのデータを出力するマクロがネット上のQ&Aにあったので、それをベースに修正を実施。
2行目以降を1行目のCase番号をファイル名に使いながらそれぞれ別のファイルにエクスポート(出力)するマクロへ修正した。
Sub ColumnOut()
Dim i As Long
Dim j As Long
Dim Fno As Integer
Dim OutColumn As String
Const myPath As String = "C:\txt\"
With Worksheets("Sheet1")
For i = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column
Fno = FreeFile()
Open myPath & "test_" & .Cells(1, i).Value & ".txt" For Output As #Fno
For j = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
OutColumn = .Cells(j, i).Value
Print #Fno, OutColumn
Next j
OutColumn = Empty
Close #Fno
Next i
End With
Beep
End Sub
このコードを開発タブ→Visual Basicをクリックして、表示→コードで出てきたコード編集ウインドウに張り付ける。
*開発タブがない場合は、ファイル→オプション→リボンのユーザー設定→「開発」にチェックを入れてOK
なお、保存場所を変更したい場合は「C:\txt\」を修正する。
実行前にこの保存場所を作成しておく必要があります。
Cドライブ直下に「txt」フォルダを作成後、このマクロを実行してみた。
意図通り、5個のファイルが作成された。ファイル名はtest_X.txtで、Xには1行目のCase番号となるようにした。
ファイル名を変更したい場合は「”test_” & .Cells(1, i).Value & “.txt”」を修正する。
ファイルの中身も意図通り、2行目以降のデータが入っている。
VBAの知識は全くありませんが、学生時代の別言語のプログラミングの知識でなんとかなりました。よかったよかった。
コメント(※承認制です)