デスクトップショートカットを作成

Access-VBA

こんにちわ、パパりおです。

今回はAccessでプログラムを作成している時に「デスクトップショートカットを作成する」コードをご紹介します。

なお、筆者の環境は以下の通りです。

・Windows11 Pro

・Access 2019(Office 2019 ProPlus) 64ビット

さっそくコードをご紹介

Public Function CreateShortcut() As Boolean
' /***********************************************
' 処理名:ショートカット作成処理
' 引 数:なし
' 戻り値:True:正常終了 / False:エラー終了
' 備 考:なし
' ***********************************************/

On Error GoTo ERROR_LABEL

' WSHShellオブジェクトの生成
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")

' デスクトップのパスを取得
Dim DesktopPath As String
DesktopPath = wsh.SpecialFolders("Desktop")

' ショートカットパスを設定
Dim ShortcutPath As String
ShortcutPath = DesktopPath & "\" & "ショートカット名" & ".lnk"

' ショートカットのプロパティ値を設定
Dim Shortcut As Object
Set Shortcut = wsh.CreateShortcut(ShortcutPath)
With Shortcut
  .TargetPath = CurrentProject.Path & "\" & "プログラム名" & ".accdb"
  .WorkingDirectory = CurrentProject.Path
  .IconLocation = CurrentProject.Path & "icoファイル名" & ".ico"
  .Description = "ショートカットの説明文を入力"
End With

' ショートカットの作成と処理の終了
Shortcut.Save
Set Shortcut = Nothing
Set wsh = Nothing
CreateShortcut = True
Exit Function

ERROR_LABEL:
CreateShortcut = False
Exit Function

End Function

実行結果

デスクトップ上に「ショートカット名」でショートカットが作成されます。

ショートカットから操作することにより、間違ってプログラム自体やiniファイルを削除してしまうのを防ぐことができます。

コードを詳しく見てみる

11~13行目
' WSHShellオブジェクトの生成
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")

WSH(Windows Script Host)環境で使用できるShellオブジェクトを生成します。これにより、次以降のデスクトップ等の特殊フォルダを参照したり、ショートカットの作成等を実行可能な状態にします。

15~17行目
' デスクトップのパスを取得
Dim DesktopPath As String
DesktopPath = wsh.SpecialFolders("Desktop")

前工程で生成したwshオブジェクトを利用してデスクトップのパスを取得します。
また、wsh.SpecialFolders( )処理を使うことで、他にも下記のような特殊フォルダのパスも取得可能です。

特殊フォルダの一例

文字列内容
AllUsersDesktop全ユーザー共通のデスクトップ
AllUsersStartMenu全ユーザー共通のスタートメニュー
AllUsersPrograms全ユーザー共通のプログラムメニュー
AllUsersStartup全ユーザー共通のスタートアップ
Desktop現ユーザーのデスクトップ
Startup現ユーザーのスタートアップ
wsh.SpecialFoldes()の一例
15~17行目
' ショートカットパスを設定
Dim ShortcutPath As String
ShortcutPath = DesktopPath & "\" & "ショートカット名" & ".lnk"

前工程で取得したデスクトップパスに続けてショートカット名を設定します。

23~31行目
' ショートカットのプロパティ値を設定
Dim Shortcut As Object
Set Shortcut = wsh.CreateShortcut(ShortcutPath)
With Shortcut
  .TargetPath = CurrentProject.Path & "\" & "プログラム名" & ".accdb"
  .WorkingDirectory = CurrentProject.Path
  .IconLocation = CurrentProject.Path & "icoファイル名" & ".ico"
  .Description = "ショートカットの説明文を入力"
End With

ショートカットのプロパティ値を設定します。今回は

①TargetPath(ターゲットパス:ショートカットの先の実体のファイル名)
②WorkingDirectory(ワーキングディレクトリ:作業フォルダ)
③IconLocation(アイコンロケーション:ショートカットのアイコン)
④Description(デスクリプション:ショートカットにマウスカーソルを当てた時に表示される説明文)

以上4つを指定しましたが、他にも設定可能なプロパティ値は存在します。

wshShortcutのプロパティ一例

文字列内容
Argumentsショートカットの先の実体ファイルに渡す引数を指定。
Descriptionショートカットにマウスカーソルを当てた時に表示される説明文を指定。
Hotkeyショートカットを起動するキーを指定。
IconLocationアイコンのパスを指定。
TargetPathショートカットの先の実体ファイル名を指定。
WindowStyleショートカット起動時のウィンドウのスタイルを指定。
1:通常(アクティブ化)
3:最大化(アクティブ化)
7:最小化(非アクティブ化)
WorkingDirectory作業フォルダを指定。
wshShortcutのプロパティ一例
33~38行目
' ショートカットの作成と処理の終了
Shortcut.Save
Set Shortcut = Nothing
Set wsh = Nothing
CreateShortcut = True
Exit Function

ショートカットをデスクトップに作成します。

最後に生成したオブジェクトを破棄(おまじない)して、処理を終了します。

まとめ

今回はデスクトップショートカットを作成するコードをご紹介しました。

ショートカットを利用することにより、誤操作による内部ファイルの削除を防いだり、またプログラム(.accdb)へのショートカットではなく更新プログラムのプル型デプロイを記述したバッチファイル(.bat)へのショートカットとする等、多くの場面で活用できるかと思います。

タイトルとURLをコピーしました