サイドバーの壁紙
博主头像
tin博主等级

子の曰わく、我れ三人行なえば必ず我が師を得(う)。其の善き者を択びてこれに従う。其の善からざる者にしてこれを改む。

  • 累積執筆 72 記事
  • 累計作成 32 タグ
  • 累計受入 2 コメント

目 次CONTENT

記事目次

VBAでファイルの読み込み・転記

tin
tin
2023-05-30 / 0 コメント / 0 いいね! / 93 読み / 505 文字

仕様

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
0
VBA
  • 0

コメント欄