【EXCEL VBA】VBAから他のアプリを起動するShell関数

スポンサーリンク

はじめに

ひらちんです。

今回は、VBAからEXCEL以外の他のアプリケーションを起動する方法を紹介します!

他のアプリケーションを起動するには、Shell関数を利用します。

スポンサーリンク

Shell関数

構文

Shell( pathname [ ,windowstyle ] )

引数説明
pathname実行するプログラム名を指定
windowstyle省略可(省略すると”vbMinimizedForcus”) 実行時のウィンドウの形式を指定

windowstyleに指定出来る定数

定数ないよう
vbHide0フォーカスを持ち、非表示にされるウィンドウ
vbNormalFocus1フォーカスを持ち、元のサイズと位置に復元されるウィンドウ
vbMinimizedFocus2フォーカスを持ち、最小化表示されるウィンドウ
vbMaximizedFocus3フォーカスを持ち、最大化表示されるウィンドウ
vbNormalNoFocus4最後にウィンドウを閉じたときのサイズと位置に復元されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです
vbMinimizedNoFocus6最小化表示されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです

Shell関数は、非同期実行のため、Shell関数が起動したプログラムが終了しなくてもVBAの次のステートメントは実行されていきます。


スポンサーリンク

新規でメモ帳を起動する

では、サンプルを実行してみましょう!

Sub Sample()

    MsgBox "メモ帳を開きます。"

    Shell "Notepad.exe", 1
    
    MsgBox "メモ帳を開きました。"
    
End Sub

メモ帳を開いているのは、

Shell "Notepad.exe", 1

の部分です。

動画で分かると思いますが、メモ帳が開いてから、閉じていいないのに次の

MsgBox "メモ帳を開きました。"

の行に進んでいますね。

プログラムが終了してもメモ帳は勝手に閉じたりはしません。

すでにあるメモ帳を起動する

既存のメモ帳も名前を指定して開くことが出来ます。

例えば、

C:\ひらちんの部屋\Shell関数から開くメモサンプル.txt

というファイルを用意しておきます。

中身は次です。

これを呼び出すためには、次のようにします。

Sub Sample()

    Shell "Notepad.exe" & " " & "C:\ひらちんの部屋\Shell関数から開くメモサンプル.txt", 1
    
End Sub

実行したいプログラムの後に「” “」半角スペースを繋げて、その後に開きたいファイルのパスを指定しています。

コマンドラインで実行する時とおんなじですね。

このようにすると、

指定したファイルを開くことが出来ます。

ちなみに、

“Notepad.exe”

の部分ですが、メモ帳のnotepad.exeは、システムフォルダにありパスが通っているので、ファイル名だけで起動が出来ますが、パスが通っていないexeの場合は、フルパスで指定します。

Shell "C:\Windows\System32\Notepad.exe" & " " & "C:\ひらちんの部屋\Shell関数から開くメモサンプル.txt", 1

みたいな感じです。

システム起動ファイル名のサンプル

環境によっても違うと思いますが、このあたりの機能はフルパス書かなくても実行出来ると思います。

コマンドプログラム
calc.exe電卓
charmap.exe文字コード表
cmd.exeコマンドプロンプト
excel.exeExcel (Microsoft Office)
explorer.exeエクスプローラー
ftp.exeftpクライアント
iexplorer.exeInternet Explorer
mspaint.exeペイント
notepad.exeメモ帳
outlook.exeOutlook (Microsoft Office)
pbrush.exeペイント
powerpnt.exePowerpoint (Microsoft Office)
powershell.exePowershell
winword.exeWord (Microsoft Office)
write.exeワードパッド

cmdとか、powershellとかは、セキュリティソフトに怒られるかもしれないですが、、、w

コメント

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