ここでは リンク集の更新結果をログファイルに記録する 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 のローカルパスを指定すればクラウドに反映
練習課題
- 更新ログに「追加」「削除」だけでなく「更新日時変更」も記録するコードを書いてみる
- ログファイルにユーザー名やPC名も記録するコードを作る
- 毎日の更新結果を日付ごとに別ログファイルに保存するコードを作る
こうした仕組みを作ると、リンク集の更新結果をログファイルに記録する自動化ツールが完成します。

