教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでShell関数の使い方

構文

構文は以下の通りです。

Shell(パス名, 窓のスタイル)

解説

Shell関数は、外部プログラムを実行するために使います。パス名は、実行したいプログラムのファイルパスを文字列で指定します。例えば、メモ帳を開くには"notepad.exe"という文字列を指定します。窓のスタイルは、ウィンドウが表示されるスタイルを指定します。主なスタイルは以下の通りです。

【窓のスタイル】

定数 内容
vbNormalFocus 通常のウィンドウを表示(既定値)
vbMinimizedFocus 最小化した状態でウィンドウを表示
vbMaximizedFocus 最大化した状態でウィンドウを表示

プログラミング例

具体的なプログラミング例を紹介します。

Sub メモ帳を開く()
    ' Shell関数でメモ帳を開く
    Dim プロセスID As Long
    プロセスID = Shell("notepad.exe", vbNormalFocus)
    ' 結果を表示
    If プロセスID > 0 Then
        MsgBox "メモ帳を開きました。プロセスIDは " & プロセスID & " です。"
    Else
        MsgBox "メモ帳の起動に失敗しました。"
    End If
End Sub

上記のプログラムでは、Shell関数を使ってメモ帳を開き、プロセスIDを変数プロセスIDに格納しています。プロセスIDが0より大きい場合はメモ帳の起動に成功し、そうでない場合は失敗しています。このようにプロセスIDを確認することで、外部プログラムの起動の成否を判断できます。vbNormalFocusを指定しているため、メモ帳は通常のウィンドウで開かれます。

まとめ

Shell関数は、外部プログラムをVBAから実行するのに非常に便利な関数です。プログラムのパスとウィンドウのスタイルを指定するだけで簡単に起動できます。実行されたプログラムのプロセスIDを取得することで、プログラムが正しく起動したかを確認することも可能です。