Open2
VBA開発時、次回活かせるコードやノウハウをメモしておく
' ------------------------------------------------------------------------------------------------
' EdgeブラウザのパスをOSバージョンに基づいて取得
' ------------------------------------------------------------------------------------------------
Private Function GetEdgePath() As String
' デフォルトのパスを設定
Dim defaultPaths(1 To 2) As String
defaultPaths(1) = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
defaultPaths(2) = "C:\Program Files\Microsoft\Edge\Application\msedge.exe"
' ファイルシステムオブジェクトを作成
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' デフォルトのパスをチェック
Dim i As Integer
For i = 1 To UBound(defaultPaths)
If fso.FileExists(defaultPaths(i)) Then
GetEdgePath = defaultPaths(i)
Exit Function
End If
Next i
' レジストリから検索
On Error Resume Next
' シェルシェルオブジェクトを作成
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
' レジストリからEdgeのパスを取得しようとする
Dim regPath As String
regPath = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe\")
' エラーがなく、regPathが空でない場合
If Err.Number = 0 And regPath <> "" Then
GetEdgePath = regPath
Else
' デフォルトに戻る
GetEdgePath = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
End If
On Error GoTo 0
End Function
以下はVBA関数GetEdgePath
の技術解説用説明文です。
関数概要
GetEdgePath
は、Microsoft Edgeの実行ファイルパスをOSのバージョンやインストール形態に応じて動的に取得するための関数です。32ビット/64ビットOSへの対応や、ユーザーがカスタムインストールパスを選択した場合にも柔軟に対応します。
主な特徴
-
デュアルパス検索システム
- デフォルトのインストールパス(32ビット版と64ビット版)を優先的にチェック
defaultPaths(1) = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" defaultPaths(2) = "C:\Program Files\Microsoft\Edge\Application\msedge.exe"
-
レジストリ連動検索
- Windowsレジストリから実際のインストールパスを取得
regPath = WshShell.RegRead("HKEY_LOCAL_MACHINE\...")
-
フォールバック機構
- すべての検索に失敗した場合、デフォルトパスを返す安全設計
GetEdgePath = "C:\Program Files (x86)\...msedge.exe"
技術的ポイント
-
OS互換性:
Program Files (x86)
とProgram Files
の両方をチェックし、OSアーキテクチャを自動判別 -
効率的な検索: ファイルシステムオブジェクト
Scripting.FileSystemObject
で直接存在確認 -
エラートレランス:
On Error Resume Next
でレジストリアクセスエラーを制御 - 拡張性: レジストリキーのパスを変更すれば他アプリケーションにも応用可能
使用シーン例
- Excel VBAからEdgeを自動起動するマクロ開発
- 企業環境での複数バージョンのEdge管理
- ユーザーカスタムインストールパスへの対応が必要なアプリケーション
この関数は、VBAでブラウザ連携を行う際の基盤技術として、安定したブラウザパス取得を実現します。特にWindowsレジストリを活用した動的パス取得の部分は、プロフェッショナルなアプリケーション開発で重要なテクニックと言えます。
VSCodeでVBA開発時に文字化けを解決する方法
VSCodeでVBA(Visual Basic for Applications)を開発する際、.basや.clsファイルを開くと文字化けが発生することがあります。これはVSCodeがデフォルトでUTF-8エンコーディングを使用するためで、VBAファイルがShift_JISで保存されていることが原因です。
この問題を解決するには、.vscode/settings.jsonに以下の設定を追加します:
.vscode/settings.json
{
// ファイル拡張子とVBAの関連付け
"files.associations": {
"*.bas": "vb",
"*.cls": "vb",
"*.frm": "vb"
},
// VBAファイルのエンコーディングをShift_JISに設定
"[vb]": {
"files.encoding": "shiftjis"
},
// エディタの表示設定(オプション)
"editor.fontFamily": "Consolas",
"editor.fontSize": 13,
"editor.fontWeight": "normal",
"editor.lineHeight": 16,
"editor.letterSpacing": 0.4,
"editor.tabSize": 4
}
設定のポイント
-
files.associations
VBAファイルの拡張子(.bas, .cls, .frm)をVBAとして認識させる -
[vb]エンコーディング設定
VBAファイルをShift_JISで開くように指定 -
エディタ表示設定(オプション)
開発しやすいフォントやサイズを指定
この設定を行うことで、VSCodeでVBAファイルを開いた際の文字化け問題が解消されます。また、VBAのシンタックスハイライトも正しく表示されるようになります。