サイトについて      連絡先   検索

VBA Shell 関数

はじめに

Excel VBA の Shell 関数を紹介します。

Shell 関数は、外部プログラムを実行します。

メモ帳など外部プログラムを実行したいときに使用します。

構文

Shell(パス)

Shell(パス, 状態)

名前 説明
引数「パス」実行したい外部プログラムのフルパスを指定します。
引数「状態」省略できます。起動時の状態を指定します。
戻り値数値型 (Integer)

引数「状態」の値

名前 状態
vbHide0フォーカスを持ち、非表示の状態
vbNormalFocus1フォーカスを持ち、元のサイズと位置で復元された状態
vbMinimizedFocus (既定)2フォーカスを持ち、最小化された状態
vbMaximizedFocus3フォーカスを持ち、最大化された状態
vbNormalNoFocus4フォーカスを持たず、最後にウィンドウを閉じたときのサイズと位置に復元された状態
vbMinimizedNoFocus6フォーカスを持たず、最小化された状態

解説

プログラムが実行されると、それを識別するタスク ID が返ります。

プログラムが存在しないなど問題があるとエラーが発生します。

Shell 関数はプログラムの起動を待たずに制御を返します。Shell 関数を実行直後にそのプログラムに対して操作すると、失敗する可能性があります。

パスには環境変数 (%SystemRoot% など) は使用できません。環境変数からパスを取得するには「Environ 関数」を使用します。

使用例

Dim i As Integer
' メモ帳を起動
i = Shell("C:\Windows\System32\notepad.exe")
i = Shell("C:\Windows\System32\notepad.exe", vbNormalFocus)
i = Shell("C:\Windows\System32\notepad.exe", vbNormalNoFocus)

' 環境変数を使用して起動
' メモ帳のパス "%SystemRoot%\system32\notepad.exe"
Dim s As String
s = Environ("SystemRoot")
i = Shell(s & "\System32\notepad.exe")

関連ページ