Shell関数

Shell関数は、VBA関数の中でWindows・その他の関数に分類される関数です。

目次

スポンサー リンク

Shell関数とは

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 は、アプリケーションの実行中に、そのアプリケーションがフォーカスを取得できるかどうかを指定するだけです。

引数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関数のサンプルコード

次の例は、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

実行結果

解説

Windows・その他の関数一覧

関数名内容
Command起動時に指定されたコマンドラインの引数を返します。
CreateObjectActiveXオブジェクトへの参照を作成して返します。
DoEventsVBAからWindowsにイベントの処理を依頼します。
EnvironOSの環境変数に割り当てられた名前を返します。
Environ$指定した数番目の環境変数を返します。
GetAllSettingsアプリケーションの項目からすべてのキー設定に対応する値リストを返します。
GetObjectファイルから取得したActiveXオブジェクトへの参照を返します。
GetSettingアプリケーションの項目からキー設定値を返します。
IMEStatusMS-IME(日本語入力システム)の現在の状態を返します。
QBColor指定した番号に対応するRGBコードを返します。
RGBRGBの値を色で指定します。
Shell指定したプログラムを実行します。
ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。