これに似たような処理を行う事があるので、いつでも流用して使えるようにサンプルを作ったのでここで紹介します。
実行エクセルと同じフォルダ内の「data」フォルダ内のファイルを全て読み取り、その内容を先頭シートへ書き出す処理を行っています。
サンプルコード
work関数がメインの処理です。ここで指定したフォルダ内のファイルを全て読み込み、シートへ出力する処理を行っています。
Read_Data関数は指定されたファイルを一括で読み込み、1行ずつ改行コードで分割した配列データを返す処理を行っています。
Sub work()
Dim fs As New FileSystemObject
Dim ReadStr() As String
Dim TargetFolder As String: TargetFolder = ".\data\"
Dim TargetSheet As Worksheet: Set TargetSheet = Worksheets(1)
Dim NowRow As Integer: NowRow = 1
TargetSheet.Cells.Clear '全セルクリア
For Each f In fs.GetFolder(TargetFolder).Files
ReadStr = Read_Data(f.Path)
'読み込んだ内容をシートへ出力
For Each d In ReadStr
If Len(d) > 0 Then
TargetSheet.Cells(NowRow, 1) = d
NowRow = NowRow + 1
End If
Next d
Next f
MsgBox ("作業完了")
End Sub
'テキストデータ一括読み込み
''戻り値:読み込みデータ行別の配列
Function Read_Data(ReadPath As String) As String()
Dim tmp As String
Dim fs As New FileSystemObject
Dim ts As TextStream
Set ts = fs.OpenTextFile(ReadPath, ForReading)
If Not ts Is Nothing Then
tmp = ts.ReadAll '一括読込
End If
ts.Close
Set ts = Nothing
Set fs = Nothing
Read_Data = Split(tmp, vbCrLf)
End Function
End Sub
主な処理内容の説明
フォルダ内のファイル一覧を取得する
9行目の「fs.GetFolder(TargetFolder).Files」でTargetFolder(dataフォルダ)に入っている全てのファイル情報を取得しています。読み込む各ファイルの情報が変数fに入ります。f.pathでファイルのフルパスを取得し、ファイル読み込み用関数(read_data)へ渡しています。
注意事項
このコードを動作させるにはツール→参照設定で「Miccrosoft Scripting Runtime」にチェックを入れてください。