masato日記

雑多なものごとについて書きます

VBAでExcelブックのショートカットをさくっとデスクトップにつくる

ファイルのショートカットをつくるのは、案外手間だ。
ワンクリックでさっくり片づけられる方法があったのでつくってみた。
といっても、モーグで紹介されていたサンプルコードをほんのちょっとアレンジしただけです。

コード

Sub MakeShortcut()
    Dim ShellObject
    Set ShellObject = CreateObject("WScript.Shell")
    
    Dim TempPath As String
    TempPath = ShellObject.SpecialFolders("Desktop")
    
    Dim ShortcutObject
    Set ShortcutObject = ShellObject.CreateShortcut(TempPath & "\" & ActiveWorkbook.Name & ".lnk")
    
    With ShortcutObject
        .TargetPath = ActiveWorkbook.FullName
        .Save
    End With
End Sub

説明する

1. WshShellオブジェクトをつくる

ショートカットを作るには、WshShellオブジェクトのメソッドが必要みたい。このオブジェクトを作るには、Microsoft Script Host Obuject Modelを参照設定するか、CreateObjectでやる方法がある。ここでは後者の方法でやった。参照方法を使うのは、コードがシンプルになるのがよいとは思うけど、あとで参照設定が必要なことを忘れて、なんで動かないんだ?ってことに必ずなるので、個人的にちょっとめんどくさい。

2. デスクトップのパスを取得する

ここでは、ショートカットをデスクトップに置きたいので、パスを取得する必要がある。デスクトップのパスもWScriptオブジェクトから取れる。.SpecialFolders(“Desktop”)がその操作。

3. ショートカットを作る

WshShellオブジェクトでショートカットを作るには、.ShortcutObjectに次のプロパティに2つの引数を渡してやる必要がある。

  • .CreateShortcut
    ショートカットを保存するフルパス。

  • .TargetPath
    ショートカットの参照先ブック。すなわち元Excelファイル。

これらを渡してから.Saveメソッドを実行すると、指定したとおりにショートカットが作成されるという具合。

感想

便利。こういう作業をワンクリックでできると、他の仕事がはかどる。

参考にしたサイト

Excel VBA を学ぶなら moug モーグ | 即効テクニック | 自分自身のブックのショートカットを作成する

www.atmarkit.co.jp