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

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")

メモ帳でテキストファイルを開く


Dim i As Integer
' D:\tips.txt のファイルをメモ帳で開く
i = Shell("C:\Windows\System32\notepad.exe D:\tips.txt")

エクスプローラーでフォルダを開く


Dim i As Integer
' D:\tips のフォルダをエクスプローラーで開く
i = Shell("C:\Windows\explorer.exe D:\tips")
  • 目次
    • 構文
    • 解説
    • 使用例