Excel VBA | リンク集の更新結果をログファイルに記録する

Excel VBA VBA
スポンサーリンク

ここでは リンク集の更新結果をログファイルに記録する VBA の例を紹介します。ポイントは「リンク集を更新する処理の中で、追加・削除・更新したファイル名や日時をテキストファイルに書き出す」ことです。


基本例:新しいファイルを追記したらログに記録

Sub リンク集更新とログ記録()
    Dim fso As Object
    Dim folder As Object
    Dim file As Object
    Dim destWs As Worksheet
    Dim lastRow As Long
    Dim cloudPath As String
    Dim found As Range
    Dim logFile As Object
    Dim logPath As String
    
    ' OneDriveの同期フォルダを指定(例)
    cloudPath = "C:\Users\YourName\OneDrive\PivotExports\"
    ' ログファイルの保存先
    logPath = "C:\Users\YourName\OneDrive\PivotExports\UpdateLog.txt"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(cloudPath)
    Set destWs = ThisWorkbook.Sheets("LinkList")
    
    lastRow = destWs.Cells(destWs.Rows.Count, "A").End(xlUp).Row
    
    ' ログファイルを開く(追記モード)
    Set logFile = fso.OpenTextFile(logPath, 8, True)
    
    For Each file In folder.Files
        If LCase(fso.GetExtensionName(file.Name)) = "pdf" Or _
           LCase(fso.GetExtensionName(file.Name)) = "png" Then
           
            Set found = destWs.Range("A2:A" & lastRow).Find(file.Name, LookAt:=xlWhole)
            
            If found Is Nothing Then
                ' 未登録なら追記
                lastRow = lastRow + 1
                destWs.Range("A" & lastRow).Value = file.Name
                destWs.Hyperlinks.Add Anchor:=destWs.Range("B" & lastRow), _
                    Address:=file.Path, _
                    TextToDisplay:="開く"
                
                ' ログに記録
                logFile.WriteLine Now & " - 新規追加: " & file.Name
            End If
        End If
    Next file
    
    logFile.Close
End Sub
VB

👉 新しいファイルがリンク集に追加されたら、そのファイル名と日時を UpdateLog.txt に追記します。


応用例:削除されたファイルもログに記録

Sub リンク集更新と削除ログ記録()
    Dim fso As Object
    Dim folder As Object
    Dim file As Object
    Dim destWs As Worksheet
    Dim lastRow As Long
    Dim cloudPath As String
    Dim logFile As Object
    Dim logPath As String
    Dim i As Long
    Dim exists As Boolean
    
    cloudPath = "C:\Users\YourName\SharePoint\TeamSite\PivotExports\"
    logPath = cloudPath & "UpdateLog.txt"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(cloudPath)
    Set destWs = ThisWorkbook.Sheets("LinkList")
    
    lastRow = destWs.Cells(destWs.Rows.Count, "A").End(xlUp).Row
    Set logFile = fso.OpenTextFile(logPath, 8, True)
    
    ' 削除チェック:リンク集にあるがフォルダに存在しないファイル
    For i = 2 To lastRow
        exists = False
        For Each file In folder.Files
            If destWs.Range("A" & i).Value = file.Name Then
                exists = True
                Exit For
            End If
        Next file
        
        If Not exists And destWs.Range("A" & i).Value <> "" Then
            logFile.WriteLine Now & " - 削除検出: " & destWs.Range("A" & i).Value
        End If
    Next i
    
    logFile.Close
End Sub
VB

👉 フォルダから削除されたファイルを検出し、ログに「削除検出」として記録します。


ポイント

  • ログファイルを扱うFileSystemObject.OpenTextFile を使って追記モードで開く
  • 追加・削除を記録WriteLine で日時とファイル名を残す
  • クラウド同期フォルダ → OneDrive/SharePoint のローカルパスを指定すればクラウドに反映

練習課題

  1. 更新ログに「追加」「削除」だけでなく「更新日時変更」も記録するコードを書いてみる
  2. ログファイルにユーザー名やPC名も記録するコードを作る
  3. 毎日の更新結果を日付ごとに別ログファイルに保存するコードを作る

こうした仕組みを作ると、リンク集の更新結果をログファイルに記録する自動化ツールが完成します。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました