VBA 指定フォルダ内のテキストファイルを読み込みシートへ書き出す

これに似たような処理を行う事があるので、いつでも流用して使えるようにサンプルを作ったのでここで紹介します。

実行エクセルと同じフォルダ内の「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」にチェックを入れてください。

VBA参照設定

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク