ここでは リンク集を定期的に自動更新(毎日・毎週) する VBA の例を紹介します。ポイントは「リンク集更新用のマクロを作り、OnTime や Windows タスクスケジューラを使って定期的に実行する」ことです。
基本例:毎日決まった時刻にリンク集を更新
Public Sub リンク集更新スケジュール()
' 毎日朝9時にリンク集更新マクロを呼び出す
Application.OnTime TimeValue("09:00:00"), "リンク集自動更新"
End Sub
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
cloudPath = "C:\Users\YourName\OneDrive\PivotExports\"
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
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:="開く"
End If
End If
Next file
End Sub
VB👉 このコードでは「リンク集自動更新」マクロを毎日朝9時に自動実行します。
応用例:毎週月曜日にリンク集を更新
Public Sub リンク集更新毎週()
Dim nextMonday As Date
' 次の月曜日の朝9時を計算
nextMonday = Date + ((8 - Weekday(Date, vbMonday)) Mod 7)
Application.OnTime nextMonday + TimeValue("09:00:00"), "リンク集自動更新"
End Sub
VB👉 このコードでは「リンク集自動更新」を毎週月曜日の朝9時に実行します。
ポイント
- 毎日実行 →
Application.OnTime TimeValue("09:00:00"), "マクロ名" - 毎週実行 → 次の曜日を計算して
OnTimeに渡す - Windowsタスクスケジューラを使えば、Excelファイルを開いてマクロを実行する形でも定期化可能
- 重複防止 →
.Findを使って既存リンクを確認してから追記
練習課題
- 毎日朝9時と夕方18時の2回リンク集を更新するコードを書いてみる
- 毎週月曜と金曜に更新するコードを作る
- 更新時に「更新日時」をシートに記録するコードを追加する
こうした仕組みを作ると、リンク集を定期的に自動更新(毎日・毎週)する自動化ツールが完成します。


