VBAのShell関数について解説しています。
Shell関数は、VBA関数の中でWindows・その他の関数に分類される関数です。
Shell関数は、実行可能プログラムを実行し、実行が完了するとプログラムのタスク ID を示すバリアント型 (内部処理形式 Double の Variant) の値を返します。プログラムの実行に問題が発生した場合は、0 を返します。
| 構文 | Shell(pathname[,windowstyle]) | |
|---|---|---|
| 引数 | 省略 | 説明 | 
| pathname | × | バリアント型 (内部処理形式 String の Variant) の値を指定します。実行するプログラム名と必要な引数名またはコマンド ラインのスイッチを指定します。また、フォルダ、またはドライブを含めて指定できます。Macintosh では、MacID 関数を使ってアプリケーションの名前の代わりにシグネチャを指定できます。次の例は、Microsoft Word のシグネチャを使用したものです。Shell MacID("MSWD") | 
| windowstyle | ● | 実行するプログラムのウィンドウの形式に対応するバリアント型 (内部処理形式 Integer の Variant) の値を指定します。引数 windowstyle を省略すると、プログラムはフォーカスを持った状態で最小化され、実行を開始します。Macintosh (System 7.0 以降) では、windowstyle は、アプリケーションの実行中に、そのアプリケーションがフォーカスを取得できるかどうかを指定するだけです。 | 
| 定数 | 値 | 説明 | 
|---|---|---|
| vbHide | 0 | フォーカスを持ち、非表示にされるウィンドウ。定数 vbHide は、Macintosh では使用できません。 | 
| vbNormalFocus | 1 | フォーカスを持ち、元のサイズと位置に復元されるウィンドウ | 
| vbMinimizedFocus | 2 | フォーカスを持ち、最小化表示されるウィンドウ | 
| vbMaximizedFocus | 3 | フォーカスを持ち、最大化表示されるウィンドウ | 
| vbNormalNoFocus | 4 | フォーカスを持ち、最大化表示されるウィンドウ | 
| vbMinimizedNoFocus | 6 | 最小化表示されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです。 | 
指定したプログラムが問題なく実行できると、プログラムのタスク ID が返されます。タスク ID は、実行中のプログラムを識別する重複しない番号です。指定されたプログラムが実行できないと、エラーが発生します。Microsoft Windows 上で、MacID 関数を使用するとエラーが発生します。
Macintosh では、vbNormalFocus、vbMinimizedFocus、vbMaximizedFocus はすべてアプリケーションをフォアグラウンドで実行し、vbHide、vbNoFocus、vbMinimizeFocus はすべてアプリケーションをバックグラウンドで実行します。
メモ 既定の設定では、Shell 関数はプログラムを非同期的に実行します。したがって、Shell 関数を使用して実行を開始したプログラムが終了しなくても、Shell 関数の次のステートメントは実行されます。
次の例は、Shell 関数を使って、ユーザーが指定したアプリケーションを実行します。Macintosh でファイル名が変わってしまったアプリケーションを実行するには、MacID 関数を使用すると確実です。Macintosh では、既定のドライブ名は "HD:" です。パス名は、円記号 (\) ではなくコロン (:) で区切ります。また、Windows フォルダの代わりに Macintosh フォルダを指定します。
Sub Sample()
' Microsoft Windows では、2 番目の引数に 1 を指定すると、
' アプリケーションが通常のサイズで開かれ、そのアプリケーションに
' フォーカスが移ります。
Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)    ' 電卓を実行します。
' Macintosh では、次のいずれのステートメントでも、Microsoft Excel を実行します。
RetVal = Shell("Microsoft Excel")        ' ファイル名を指定します。
RetVal = Shell(MacID("XCEL"))            ' シグネチャを指定します。
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
| 関数名 | 内容 | 
|---|---|
| Command | 起動時に指定されたコマンドラインの引数を返します。 | 
| CreateObject | ActiveXオブジェクトへの参照を作成して返します。 | 
| DoEvents | VBAからWindowsにイベントの処理を依頼します。 | 
| Environ | OSの環境変数に割り当てられた名前を返します。 | 
| Environ$ | 指定した数番目の環境変数を返します。 | 
| GetAllSettings | アプリケーションの項目からすべてのキー設定に対応する値リストを返します。 | 
| GetObject | ファイルから取得したActiveXオブジェクトへの参照を返します。 | 
| GetSetting | アプリケーションの項目からキー設定値を返します。 | 
| IMEStatus | MS-IME(日本語入力システム)の現在の状態を返します。 | 
| QBColor | 指定した番号に対応するRGBコードを返します。 | 
| RGB | RGBの値を色で指定します。 | 
| Shell | 指定したプログラムを実行します。 | 
↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。
VBAのIE操作入門↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。
こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。