実行ファイル(Exeファイル)は、Shellで開くことができますが、テキストファイルやHtmlファイルなどのデータ用ファイルを開く場合は、ShellExecuteを使います。
ShellExecuteを使うと関連付けられたファイルを開くことができます。
もし、開かない場合は、ファイルの関連付けを事前に行う必要があります。
ファイルの関連付けを変更する方法
1. マイ コンピュータまたはエクスプローラで関連付けを変更する拡張子のファイルを右クリックし、[プログラムから開く] をクリック
2. [プログラムの選択] ダイアログ ボックスで、ファイルを開くプログラムをクリックするか、[参照] をクリックして使用するプログラムを指定
3. [この種類のファイルを開くときは、選択したプログラムをいつも使う] チェック ボックスをオンにする
関連する「外部アプリケーションの起動方法|Shell関数の使い方」を掲載していますので、参考にしてください。
関連付けられたファイルを開くVBA
ExcelシートのVBAコード
Option Explicit
'関連付けられたファイルを開くAPI
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd_ As Long) As Long
Private Const SW_HIDE = 0 'ウィンドウ非表示
Private Const SW_SHOWNORMAL = 1 '通常の状態で開く
Private Const SW_SHOWMINIMIZED = 2 'ウィンドウ最小化
Private Const SW_SHOWMAXIMIZED = 3 'ウィンドウ最大化
Private Const SW_SHOW = 5 'ウィンドウを現在の位置とサイズで表示
Private Const SW_RESTOR = 6 'ウィンドウを元の位置とサイズで表示
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&
'関連付けられたファイルを開く
Private Sub ExOpenKanrenFile()
Dim lret As Long
Dim msg As String
lret = ShellExecute(0, "open", "c:\sitemap.html", vbNull, vbNull, SW_SHOW)
If lret < 31 Then
Select Case lret
Case 0
msg = "メモリ不足です。"
Case ERROR_FILE_NOT_FOUND
msg = "ファイルが見つかりません。"
Case ERROR_PATH_NOT_FOUND
msg = "ファイルのパスが見つかりません。"
Case Else
msg = lret & "その他のエラー"
End Select
MsgBox msg, 16
End If
End Sub
Private Sub CommandButton1_Click()
ExOpenKanrenFile
End Sub
Excel実行画面
「開く」ボタンをクリックすると、実行を開始します。
成功した場合、指定したHtmlファイルが開きます。
エラーが発生した場合、メッセージが表示されます。