即効テクニック |
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関数)を指定すればいいでしょう。