ショートカット 相対パス UNCパス上にあるプログラムを実行する場合 引数もある。。。

最近VBAの入門編のマニュアルを作成した。

なおEXCELマクロを使って、対象となる操作の箇所に関連する画像のみを表示させることにした。

これでOKかなと思い実際にテストしようとしたら当然ながら参照用のエクセルマクロブックと入門者が「右クリック」で「新規作成>Microsoft Excel ワークシート」で一旦エクセルブックを作成させてからチュートリアルは始まるので色々まずいことが分かった。

それで一つ一つの操作をキャプチャソフト(rapture.exe)を使い画像に保存し、保存フォルダをZIPして画像ビューワー(Honeyview.exe)で順次スライドのように矢印キーで参照しながら実行してもらう方式にした。

画像ビューワーはチュートリアルフォルダ配下に置くことにした。そこでチュートリアルフォルダ直下にショートカットキーを実行するとチュートリアルスタートというシナリオでショートカットキーを作成した。

グーグルで調べてみると色々な方法があることが分かった。結局④の方法を採用して解決した。

①「リンク先」に「%windir%\explorer.exe "実行ファイルの相対パス"」と指定する。
「作業フォルダー」は空白にする。
② なにかよくわからないがdllで実行できるみたいだ

%windir%\system32\rundll32.exe url.dll,FileProtocolHandler "相対パス"

<引数を指定する場合>
③ 引数がある場合はcmd.exeでできるみたいだ。

%windir%\system32\cmd.exe /c start "%cd%" "相対パス" [引数...]

④以下のやり方だとUNCパス上にショートカットを置いても実行できた!

%windir%\System32\mshta.exe vbscript:close(createobject("wscript.shell").run("相対パス [引数...]",1))


※引数の後ろにある数字で起動時の画面の大きさを指定することも可能。
0:非表示  1:通常のウィンドウ  3:最大化  7:最小化

f:id:gyokusen_since:20191003071256p:plain

ショートカットの設定(作業フォルダを空欄にする)

f:id:gyokusen_since:20191003072145p:plain

UNCパス上にある公開フォルダ


上図の「VBA00_入門チュートリアル1」をダブルクリックすると

f:id:gyokusen_since:20191002144245p:plain

チュートリアルの1ページ目

f:id:gyokusen_since:20191002144737p:plain

最後の方のページ

f:id:gyokusen_since:20191002144851p:plain

マクロ実行後の結果

これで一応うまくいったので終わりにする。なおHoneyview.exeは前回オープンしたときの状態を想像だがレジストリに保存しているようである程度すすんだところで終了させて再度オープンすると最後にオープンしたところからスタートする優れものであった。

なおこのマニュアルの2つ目は「ボタンとイベント処理でマクロ実行」をテーマに引き続き作成予定です。