Shell 関数

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Microsoft Jet Expression Service がサンドボックス モードで実行されている場合 (安全でない可能性がある式の評価は行われません)、このトピックで説明する関数、メソッド、オブジェクト、またはプロパティは無効です。 サンドボックス モードの詳細については、ヘルプで "サンドボックス モード" を検索してください。

実行可能プログラムを実行し、成功した場合はプログラムのタスク ID を示す Variant (Double) を返し、それ以外の場合は 0 を返します。

構文

Shell(pathname [, windowstyle ] )

Shell 関数の構文には、次の引数があります。

引数 説明
pathname 必須。 Variant (String)。 実行するプログラムの名前と、必要な引数またはコマンド ライン スイッチ。ディレクトリまたはフォルダーとドライブを含めることができます。 Macintosh では、 MacID 関数を使用して、名前の代わりにアプリケーションの署名を指定できます。 次の例では、Microsoft Word の署名を使用します。Shell MacID("MSWD")
windowstyle 省略可能。 プログラムを実行するウィンドウのスタイルに対応する Variant (Integer)。 windowstyle を省略すると、プログラムはフォーカスを使用して最小化されて開始されます。 Macintosh (System 7.0 以降) では、 windowstyle は、アプリケーションが実行時にフォーカスを取得するかどうかを決定するだけです。

    

windowstyle という名前の引数には、次の値があります。

定数 説明
vbHide 0 ウィンドウは非表示で、フォーカスは非表示ウィンドウに渡されます。 vbHide 定数は Macintosh プラットフォームでは適用されません。
vbNormalFocus 1 ウィンドウにフォーカスが移動し、元のサイズと位置に復元されます。
vbMinimizedFocus 2 ウィンドウはフォーカス付きでアイコンとして表示されます。
vbMaximizedFocus 3 ウィンドウはフォーカス付きで最大化表示されます。
vbNormalNoFocus 4 ウィンドウの最近のサイズと位置が復元されます。 現在アクティブなウィンドウはアクティブなままです。
vbMinimizedNoFocus 6 ウィンドウはアイコンとして表示されます。 現在アクティブなウィンドウはアクティブなままです。

    

解説

指定したファイルを Shell 関数で正常に実行できた場合、起動されたプログラムのタスク ID が返されます。 タスク ID は、実行中のプログラムを識別する一意の番号です。 指定したプログラムを Shell で起動できない場合、エラーが発生します。

Macintosh では、vbNormalFocusvbMinimizedFocusvbMaximizedFocus のいずれを使用してもアプリケーションはフォアグラウンドに移動されます。また、vbHidevbNoFocusvbMinimizeFocus のいずれを使用してもアプリケーションはバックグラウンドに移動されます。

Shell 関数の既定では、他のプログラムが非同期に実行されます。 つまり、Shell で起動したプログラムが、Shell 関数の次のステートメントを実行するまでに完了しないことがあります。

次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。

この例では、Shell 関数を使用して、ユーザーが指定したアプリケーションを実行します。 Macintosh では、"HD" が既定のドライブ名で、パス名の各部分は円記号ではなくコロンで区切られます。 同様に、\Windows ではなく、Macintosh フォルダーを指定します。

' Specifying 1 as the second argument 
' opens the application in normal size and 
' gives it the focus.
Dim RetVal
' Run Calculator.
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)