これに似たような処理を行う事があるので、いつでも流用して使えるようにサンプルを作ったのでここで紹介します。
実行エクセルと同じフォルダ内の「data」フォルダ内のファイルを全て読み取り、その内容を先頭シートへ書き出す処理を行っています。
サンプルコード
work関数がメインの処理です。ここで指定したフォルダ内のファイルを全て読み込み、シートへ出力する処理を行っています。
Read_Data関数は指定されたファイルを一括で読み込み、1行ずつ改行コードで分割した配列データを返す処理を行っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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」にチェックを入れてください。