非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【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
 

 

これを実行すると同じフォルダ内のショートカットファイルのリンク先がすべて書き変わるので確認してみてください。

 

スポンサーリンク

 - Excel, VBA