【VBA】Shell関数で外部のアプリケーション(電卓、メモ帳など)を起動する方法

目次

はじめに

VBAマクロの処理の流れの中で、「メモ帳を開いてログを書き出したい」「ブラウザを開いて特定のURLにアクセスさせたい」といったように、Excel以外の外部アプリケーションを起動したい場面があります。

VBAの Shell 関数を使えば、このような外部プログラムの実行を簡単に行うことができます。この記事では、Shell関数の基本的な使い方を、2つのパターンに分けて解説します。


Shell関数の基本的な使い方

Shell関数は、指定したプログラムを実行し、成功すればそのプログラムのタスクID(識別番号)を、失敗すれば0を返します。

基本構文: Shell(PathName As String, [WindowStyle As VbAppWinStyle = vbMinimizedFocus])

  • PathName: 実行したいプログラムのパスとファイル名を文字列で指定します。
  • WindowStyle: プログラムをどのように表示するかを指定する定数です(後述)。

1. プログラム名を直接指定して起動する

電卓(calc.exe)やメモ帳(notepad.exe)のように、Windowsの環境変数 Path が通っている一般的なプログラムは、ファイル名だけで起動できます。

サンプルコード

' メモ帳を通常のウィンドウサイズで起動する
Sub LaunchNotepad()
    Dim taskID As Variant
    
    ' Shell関数で "notepad.exe" を実行
    ' 第2引数 vbNormalFocus で、通常のウィンドウでフォーカスを当てて開く
    taskID = Shell("notepad.exe", vbNormalFocus)
    
    ' 実行に成功したかチェック
    If IsError(taskID) Then
        MsgBox "メモ帳の起動に失敗しました。"
    Else
        Debug.Print "メモ帳がタスクID: " & taskID & " で起動しました。"
    End If
End Sub

2. フルパスを指定して起動する

Microsoft EdgeやGoogle Chromeといった、パスが通っていない特定のアプリケーションを起動する場合は、その実行ファイルのフルパスを正確に指定する必要があります。

サンプルコード

' Microsoft Edgeを起動する
Sub LaunchWebApp()
    Dim appPath As String
    Dim taskID As Variant
    
    ' 実行ファイルのフルパスを文字列変数に格納
    appPath = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
    
    ' ファイルが存在するか確認
    If Dir(appPath) = "" Then
        MsgBox "指定されたアプリケーションが見つかりません。", vbCritical
        Exit Sub
    End If
    
    ' フルパスを指定してShell関数を実行
    taskID = Shell(appPath, vbNormalFocus)
    
    If IsError(taskID) Then
        MsgBox "アプリケーションの起動に失敗しました。"
    End If
End Sub

注意: アプリケーションのインストール場所は環境によって異なる場合があります。Dir関数でファイルの存在を確認してから実行するのが安全です。


WindowStyle引数について

Shell関数の第2引数では、起動するアプリケーションのウィンドウの表示スタイルを指定できます。

定数説明
vbNormalFocus通常のウィンドウサイズで、フォーカスを当てて表示。(デフォルト)
vbMinimizedFocus最小化した状態で、フォーカスを当てて表示。
vbMaximizedFocus最大化した状態で、フォーカスを当てて表示。
vbHideウィンドウを非表示にして実行。
vbNormalNoFocus通常のウィンドウサイズで、フォーカスは当てずに(現在のウィンドウに残したまま)表示。

まとめ

今回は、VBAの Shell関数を使って外部のアプリケーションを起動する方法を解説しました。

  • メモ帳などの一般的なツールは、ファイル名だけで起動できる
  • 特定のアプリケーションは、実行ファイルのフルパスを指定する必要がある。
  • 第2引数で、ウィンドウの表示スタイル(最大化、最小化など)を制御できる。

この関数を使えば、マクロから他のツールを呼び出して連携させるなど、VBAの活用の幅をさらに広げることができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次