エクセルの各シートに複数のtxtファイルを取り込む
はじめまして.
Excel2013を用いたデータ整理でわからない部分があるため,
質問させていただきました.
同じフォルダに入った,複数(40個程度)のテキストファイルを,
エクセルの複数のシートにそれぞれ取り込みたいと考えています.
具体的には,同じフォルダに入っている,
A001.txt, A002.txt, A003.txt, ....
というテキストファイル群を,
Data_A.xlsxのSheet1にA001.txt
Sheet2にA002.txt
Sheet3にA003.txt
といったように取り込みたいです.
テキストファイルは,
X_座標 Y_座標 X_速度 Y_速度
の四列で構成されており,タブでそれぞれ区切られています.
行数は20,000程度です.
以前,同様の質問をされた方の回答にありました以下のマクロを実行してみたのですが,
・タブで区切られず,一つのセルに四列分の文字が入力される.
・0の情報が消えてしまう.
という二つの問題が発生しました.
Sub ReadTextFiles()
Const DirName = "C:\TEMP"
'上記で指定されたフォルダに存在するファイルで、
'拡張子がtxtのものをすべて1シートとして読み込む
Dim fs, dir, fc, f1, stream As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Set dir = fs.GetFolder(DirName)
Set fc = dir.Files
For Each f1 In fc
If LCase(fs.GetExtensionName(f1.Name)) = "txt" Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
Sheets(Worksheets.Count).Name = f1.Name
Set stream = f1.OpenAsTextStream
Do While stream.AtEndOfStream <> True
Cells(stream.Line, 1) = stream.ReadLine
Loop
stream.Close
End If
Next
End Sub
これらを解決した上で,ファイルを取り込む方法を教えていただきたいです.
お手数ですが,よろしくお願い致します.
お礼
いろいろ、テストしてみましたが、 .Files でも、GetFilesでもファイル名でソートされているみたいですね。 一応、念のため、 Dim fileList As String() = System.IO.Directory.GetFiles(strDirPath) Array.Sort(fileList) で明示的にソートをかけておこうと思います。