HOME > 即効テクニック > AccessVBA > API > 指定ファイルを関連付けられたアプリケーションで開く(API)

即効テクニック

API

指定ファイルを関連付けられたアプリケーションで開く(API)

(Access 97)

ShellExecute API関数を使って、指定ファイルを関連付けられたアプリケーション
で開くことが出来ます。


● 準備 ●
(1)新規標準モジュールを用意し、以下の宣言文とSubプロシージャを記述します。

(2)VBEのメニューから、[表示]-[イミディエイトウィンドウ]([Ctrl]+[G])を選択しイミディエイトウィンドウを表示させておきます。

 ※Access97の場合はデバッグウィンドウになりますので、以後読み替えて下さい。


● サンプルプログラム ●
' ファイルオープン/表示/印刷関数(API)の宣言
Declare Function ShellExecute Lib "SHELL32" Alias "ShellExecuteA" _    (ByVal hwnd&, ByVal lpOperation$, ByVal lpFile$, _    ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&) As Long

' 指定ファイルを関連付けられたアプリケーションで開く関数
Public Sub OpenFile(strPath As String)
    ' 現在の位置とサイズで表示 5(SW_SHOW)
    Call ShellExecute(hWndAccessApp, "open", strPath, vbNullString, "", 5) 
End Sub


● 動作確認 ●
イミディエイトウィンドウにて「OpenFile "パス名"」の形式で打ち込みます。
例えばExcelがインストールされていればOpenFile "D:\MyDATA\Test.xls"のように実行してみて下さい。
 また、
 OpenFile "http://www.moug.net"
のように、URLを指定すれば、既定のブラウザでWEBページが開かれます。


● 詳細 ●

[ShellExecute API関数]
  引数:hwnd - 親ウィンドウのハンドル
	lpOperation - "open"(開く)、"print"(印刷)、
       "explore"(指定フォルダをエクスプローラ表示) のいずれか
	lpFile - ファイルパス文字列
	lpParameters - アプリケーションに渡すパラメータ
	lpDirectory - デフォルトのフォルダ名
	nShowCmd - 表示方法。以下、主なパラメータ値。
          0 (SW_HIDE): ウィンドウ非表示
          2 (SW_SHOWMINIMIZED): ウィンドウ最小化
          3 (SW_SHOWMINIMIZED): ウィンドウ最大化
          5 (SW_SHOW): ウィンドウを現在の位置とサイズで表示
          6 (SW_RESTORE): ウィンドウを元の位置とサイズで表示
  戻り値:成功すれば、実行されたアプリケーションのハンドルが返ります。
    失敗の場合は、エラー内容に応じた数値が返ります。(詳細省く)


● 補足説明 ●
引数のhwnd(親ウィンドウのハンドル)には、サンプルのようにhWndAccessApp(アクセスアプリケーションのインスタンスハンドル)やGetDesktopWindow(API関数)を指定すればいいでしょう。