仕様
Excelファイル一覧シートで行ごとに、指定セルからログファイル名を取得し、ファイルが存在する場合のみ、当該ファイルを開いて、ログの開始時間と終了時間を検索・取得して、取得した情報をエクセルの当該行に記入
ソースのサンプル(実際の仕様に合わせてカスタマイズが必要)
Sub ReadTextFile()
' 必要に応じて下記定義を声明
'Dim fso As Scripting.FileSystemObject
'Dim baseFolder As Scripting.Folder
'Dim subFiles As Scripting.Files
'Dim subFile As Scripting.File
'Dim adoSt As Object
' path情報
Path = "D:\01_work\01-IT\06-VBA\test"
' ファイルシステム
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダ
Set baseFolder = fso.GetFolder(Path)
' 指定フォルダの全ファイル
Set subFiles = baseFolder.Files
' ファイルの読み込みツール
Set adoSt = CreateObject("ADODB.Stream")
' エクセル情報
Dim startRow As Long
Dim endRow As Long
Dim record As String
Dim recArr(5) As Variant
Dim logName As String
Dim timeStart As Date
Dim timeEnd As Date
startRow = 1
endRow = 10
' 行ごとにループ
For i = startRow To endRow
' ログファイル名を取得
logName = ThisWorkbook.Worksheets(1).Cells(i, "A")
'Debug.Print logName
' 取得したログファイルが実在しない場合、スキップ
If Not fso.FileExists(Path & "\" & logName) Then
GoTo NextI
End If
' ログファイルを開く
With adoSt
.Charset = "SJIS"
' 改行コードLFの値
.LineSeparator = 10
.Open
.LoadFromFile (Path & "\" & logName)
' 一括読み込みの場合、ReadText(-1)を使う
'.lines = Split(.ReadText(-1), vbLf)
Do While Not .Eos
' 一行ずつ読み込み
record = .readText(-2)
'Debug.Print record
' この辺は具体的な仕様に合わせてカスタマイズする
' recordを使い、チェックしたり、必要な情報を取得したりする
Loop
.Close
End With
NextI:
Next i
End Sub
コメント欄