【ExcelVBA・マクロ】Shell関数の使い方|アプリやコマンドを実行する方法【コピペOK】

Shell関数の使い方 ExcelVBA

VBAで自動化をしていると、次のようなことはありませんか?

  • メモ帳やChromeを起動したい
  • バッチファイルを実行したい
  • 外部プログラムを自動起動したい

このような場合は、Shell関数を使うことで解決できます。
WindowsのアプリやコマンドをVBAから実行できる非常に便利な関数です。

この記事では、Shell関数の基本から実務で使える応用方法まで分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • アプリを起動できる
  • コマンドを実行できる
  • バッチファイルを実行できる
  • 外部ツール連携ができる

Shell関数とは?

Shell関数は、Windowsのプログラムやコマンドを実行する関数です。

例えば:

  • メモ帳起動
  • Chrome起動
  • cmdコマンド実行
  • バッチファイル実行

などが可能です。


基本:Shell関数の使い方

基本構文はこちらです。

Shell(実行コマンド, ウィンドウ表示形式)

基本例:メモ帳を起動する

Shell "notepad.exe", vbNormalFocus

メモ帳が起動します。


Chromeを起動する

Shell "C:\Program Files\Google\Chrome\Application\chrome.exe", vbNormalFocus

バッチファイルを実行する

Shell "C:\test\sample.bat", vbNormalFocus

コマンドプロンプトを実行する

Shell "cmd.exe /c dir", vbNormalFocus

dirコマンドを実行します。


PowerShellを実行する

Shell "powershell.exe", vbNormalFocus

URLを開く

ブラウザでWebページを開けます。

Shell "cmd /c start https://www.google.com", vbHide

Shell関数の戻り値

戻り値はタスクIDです。

Dim taskID As Long

taskID = Shell("notepad.exe", vbNormalFocus)

MsgBox taskID

ウィンドウ表示形式一覧

定数内容
vbHide非表示
vbNormalFocus通常表示
vbMinimizedFocus最小化表示
vbMaximizedFocus最大化表示

実務での活用例

  • 外部システム起動
  • バッチ自動実行
  • ファイル自動オープン
  • ブラウザ起動

システム連携で非常によく使われます。


注意点

① パスに空白がある場合

ダブルクォーテーションで囲みます。

Shell """C:\Program Files\App\app.exe""", vbNormalFocus

② 実行ファイルが存在しない

エラーになるためパス確認が必要です。


③ Shellは非同期処理

起動後すぐ次の処理へ進みます。

完了待ちしたい場合は別処理が必要です。


安全な書き方(おすすめ)

Dim appPath As String

appPath = "notepad.exe"

If Dir(appPath) <> "" Then
    Shell appPath, vbNormalFocus
Else
    MsgBox "ファイルが存在しません"
End If

よくあるエラーと対処法

① ファイルが見つかりません

パスが正しいか確認してください。

② 起動しない

管理者権限が必要な場合があります。

③ パスに空白がある

ダブルクォーテーションで囲ってください。

④ コードは正しいのにエラーになる

コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。


まとめ

  • Shellは外部プログラムを実行する関数
  • アプリ起動やバッチ実行で活躍
  • システム連携で非常に便利
  • 実務では使用頻度が高い

Shell関数を使いこなせるようになると、ExcelVBAの自動化レベルが大きく向上します。
特に実務自動化では非常に強力なので、ぜひマスターしておきましょう。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました