【ExcelVBA】ショートカットファイルのリンク先の取得と編集方法
Windowsのショートカットファイルを別のリンク先に変換する機会があり一括変換できるマクロを作ったのでメモ。カレントディレクトリ上のショートカットファイルを収集してリンク先の取得と新しいリンク先に編集してくれます。
使用環境
後述するマクロを仕込んだExcelファイルと、同じフォルダ内にショートカットファイルが存在するような環境になります。今回の例では数のような環境を用意しました。shortcut.xlmsがマクロファイルで、それ以外はショートカットファイルになります。
今回はこの例を使って解説します。
ショートカットファイルのリンク先を取得するマクロ
まずはいきなりリンク先を修正するのではなく、以下はショートカットファイルを収集してリンク先の取得するマクロを紹介します。
同じフォルダ内のショートカットファイル(.lnk)のみを取得し、そのファイルのリンク先アドレスをシートに展開していきます。
Dim myPath, buf As String
Set WSH = CreateObject("WScript.Shell")
myPath = ThisWorkbook.Path
buf = Dir(myPath & "\*.lnk")
r = 1
Do While buf <> ""
Set sc = WSH.CreateShortcut(myPath & "\" & buf)
Cells(r, 1).Value = buf
Cells(r, 2).Value = sc.TargetPath
buf = Dir()
r = r + 1
Loop
結果はご覧の通り。A列がショートカットファイル名、B列にリンク先が表示されます。
ショートカットファイルのリンク先を編集するマクロ
次にショートカットファイルのリンク先を「C:\ProgramFiles」に修正するマクロになります。編集するリンク先は適宜設定してもらうとして今回はプログラムをシンプルにするために固定値にしました。
Dim myPath, buf As String
Set WSH = CreateObject("WScript.Shell")
myPath = ThisWorkbook.Path
buf = Dir(myPath & "\*.lnk")
Do While buf <> ""
Set sc = WSH.CreateShortcut(myPath & "\" & buf)
sc.TargetPath = "C:\ProgramFiles"
sc.Save
buf = Dir()
Loop
これを実行すると同じフォルダ内のショートカットファイルのリンク先がすべて書き変わるので確認してみてください。
スポンサーリンク

