作業効率倍増ランチャーを作る(1/3)
2023-11-06 記載
概要 : HTMLページ1枚にあらゆるOpen処理を集約させたランチャーの作成
関連記事:Office URI スキーマでExcelVBAマクロを走らせる, (2/3), (3/3)
Keyword :
ローカル環境は、Win10 + Firefox(メイン) です。
ブラウザからExcelマクロへつなげることができたので、作業効率を倍増させるランチャーが作れそうです。
これまではサイトで開くものはブラウザのお気に入りにいれてそこから。
ネィティブアプリは、デスクトップやスタートにショートカットを置いて、Ctrl+Alt+<key> で起動させてました。
しかしブラウザのお気に入りは、そのとき用いるブラウザによって登録に違いがありますし、ショートカットのショートカットキーCtrl+Alt+<key>も当該ソフトをアップデートしたらクリアされていたりして出鼻をくじかれたりします。
日々の作業で求められるあらゆるOpen処理を、1枚のHTMLページに集約させるのです。
最強Script環境ともいえるExcelマクロとブラウザがダッグを組めば実現できそうです。
作業効率倍増ランチャー、これは絶対必要!
と思いたって作りかけたページはこんなの。

右下の[?]ボタンをクリックするとアコーディオン型で情報BOXが開き、URL・ログインID・パスワードなどを確認できます。(なので開いているところはお見せできません)
FTPも要るなとアイコンを置いたのはいいけど、さてFileZillaをどう起動させるか?で悩んで、実は経緯は逆転しているのですが、そこからOffice URI スキーマへと行き着きました。
ftpのimgを囲うaタグのhref のコード
<a href="ms-excel:ofe|u|http://localhost/helper.xlsm">
<img src="img/icon60_ftp.png">
</a>
helper.xlsm の Workbook_Open() からは 標準モジュールの Sub Main() を呼んでいて、そこのモジュールはこんな感じに。
Public Const PATH_APACHE$ = "C:\pgm\apache24\"
Public Declare PtrSafe Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Public Sub Main()
'Shift押下でMacroを停止できるように
If GetAsyncKeyState(vbKeyShift) Then Stop
Dim oWSH As New IWshRuntimeLibrary.WshShell
oWSH.Run """C:\Program Files\FileZilla FTP Client\filezilla.exe"" -c=0/web_cloudfree_jp"
'URIスキーマの場合はExcelを終わらせる
If ThisWorkbook.Path Like "http*" Then
Application.DisplayAlerts = False
ThisWorkbook.SaveAs PATH_APACHE & "htdocs\" & Replace(ThisWorkbook.Name, ".xlsm", "_1.xlsm")
Application.DisplayAlerts = True
Application.Quit
End If
End Sub
Excelを残したくないので
‘URIスキーマの場合はExcelを終わらせる
のところがやや工夫した箇所です。読み取り専用でしか開けないから少々ワケワカメなことになってます。
一方、ナイスと思えるのは FileZilla の起動Option
-c=0/web_cloudfree_jp
これでサイトマネージャに”web_cloudfree_jp”という名前で登録したサイトに接続するところまでしてくれます。
ちなみにFileZillaの起動オプションの公式ヘルプはこちら。(-h で表示されます)
https://wiki.filezilla-project.org/Command-line_arguments_(Client)
FTPアイコンをクリックで、FileZillaがcloudfreeに接続した状態でサッと立ち上がってくれました。
『ここまでできるなら、FTPアイコンはcloudfreeゾーンへ移そう』
と調子にのって、次はApacheのアイコンを配置。
これをクリックすると、テキストエディタ(sakura)が httpd.conf を開いた状態で立ち上がると。

このあたりがVBAの強みで、拡張子関連付けが背後で働いて
oWSH.Run “C:\pgm\Apache24\conf\httpd.conf”
でそうなるのですが、問題はその手前でした。
helper.xlsm にどうやったらパラメータを渡せるか?
FTPなのかApacheなのか、です。
ms-excel:ofe|u|http://localhost/helper.xlsm?p=123
とすれば VBA.Command に格納されているのでは?と期待しましたが、
?p=123と付けただけでセキュリティ違反(?)になってマクロがブロックされました。
処理の数だけExcelを用意するのは1つの解決策ですが、プログラマ魂がそれを許しません。
どうするか、悩みは つづき ます。