こんにちわ、パパりおです。
今回は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ファイルを削除してしまうのを防ぐことができます。
コードを詳しく見てみる
' WSHShellオブジェクトの生成
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
WSH(Windows Script Host)環境で使用できるShellオブジェクトを生成します。これにより、次以降のデスクトップ等の特殊フォルダを参照したり、ショートカットの作成等を実行可能な状態にします。
' デスクトップのパスを取得
Dim DesktopPath As String
DesktopPath = wsh.SpecialFolders("Desktop")
前工程で生成したwshオブジェクトを利用してデスクトップのパスを取得します。
また、wsh.SpecialFolders( )処理を使うことで、他にも下記のような特殊フォルダのパスも取得可能です。
特殊フォルダの一例
文字列 | 内容 |
---|---|
AllUsersDesktop | 全ユーザー共通のデスクトップ |
AllUsersStartMenu | 全ユーザー共通のスタートメニュー |
AllUsersPrograms | 全ユーザー共通のプログラムメニュー |
AllUsersStartup | 全ユーザー共通のスタートアップ |
Desktop | 現ユーザーのデスクトップ |
Startup | 現ユーザーのスタートアップ |
' ショートカットパスを設定
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
ショートカットのプロパティ値を設定します。今回は
①TargetPath(ターゲットパス:ショートカットの先の実体のファイル名)
②WorkingDirectory(ワーキングディレクトリ:作業フォルダ)
③IconLocation(アイコンロケーション:ショートカットのアイコン)
④Description(デスクリプション:ショートカットにマウスカーソルを当てた時に表示される説明文)
以上4つを指定しましたが、他にも設定可能なプロパティ値は存在します。
wshShortcutのプロパティ一例
文字列 | 内容 |
---|---|
Arguments | ショートカットの先の実体ファイルに渡す引数を指定。 |
Description | ショートカットにマウスカーソルを当てた時に表示される説明文を指定。 |
Hotkey | ショートカットを起動するキーを指定。 |
IconLocation | アイコンのパスを指定。 |
TargetPath | ショートカットの先の実体ファイル名を指定。 |
WindowStyle | ショートカット起動時のウィンドウのスタイルを指定。 1:通常(アクティブ化) 3:最大化(アクティブ化) 7:最小化(非アクティブ化) |
WorkingDirectory | 作業フォルダを指定。 |
' ショートカットの作成と処理の終了
Shortcut.Save
Set Shortcut = Nothing
Set wsh = Nothing
CreateShortcut = True
Exit Function
ショートカットをデスクトップに作成します。
最後に生成したオブジェクトを破棄(おまじない)して、処理を終了します。
まとめ
今回はデスクトップショートカットを作成するコードをご紹介しました。
ショートカットを利用することにより、誤操作による内部ファイルの削除を防いだり、またプログラム(.accdb)へのショートカットではなく更新プログラムのプル型デプロイを記述したバッチファイル(.bat)へのショートカットとする等、多くの場面で活用できるかと思います。