Excelから他のアプリケーションを起動するにはShell関数を使用します。指定方法について紹介します。
構文
記述方法は以下の通りとなります。
(1)他のアプリケーションを起動する
Shell ”[アプリケーションパス]”,vbNormalFocus
[説明]:
他のアプリケーションを起動するには
「Shell ”[アプリケーションパス]”,vbNormalFocus」
と記述します。
[アプリケーションパス] | 起動するアプリケーションのパスを記述します。 ※「”」(ダブルクォーテーション)で囲みます。 |
アプリケーションパスを幾つか紹介しておきます。参考にして下さい。
アプリケーション | パス |
メモ帳 | C:\Windows\System32\notepad.exe |
電卓 | C:\Windows\System32\calc.exe |
エクスプローラ | C:\Windows\explorer.exe |
IE | C:\Program Files\internet explorer\iexplore.exe |
Word | C:\Program Files (x86)\Microsoft Office\Office16\WINWORD.EXE |
Powerpoint | C:\Program Files (x86)\Microsoft Office\Office16\POWERPNT.EXE |
Outlook | C:\Program Files (x86)\Microsoft Office\Office16\OUTLOOK.EXE |
[記述例]:
Shell "C:\Windows\System32\notepad.exe", vbNormalFocus
Shell "C:\Windows\calc.exe", vbNormalFocus
Shell "C:\Program Files\internet explorer\iexplore.exe", vbNormalFocus
(2)他のアプリケーションを起動し戻り値を取得する
[変数]= Shell( ”[アプリケーションパス]”,vbNormalFocus)
[説明]:
他のアプリケーションを起動し、起動した結果の戻り値を取得するには
「[変数]= Shell( ”[アプリケーションパス]”,vbNormalFocus)」
と記述します。
[変数] | 任意の変数を記述します。 アプリケーション起動時の戻り値がセットされます。 戻り値は以下いずれかとなります。 ・起動に失敗した場合:0が戻ります。 ・起動に成功した場合:0以外が戻ります。 |
[アプリケーションパス] | 起動するアプリケーションのパスを記述します。 ※「”」(ダブルクォーテーション)で囲みます。 |
[記述例]:
戻り値 = Shell("C:\Windows\System32\notepad.exe", vbNormalFocus)
使い方
使い方について具体的に説明します。
他のアプリケーションを起動する
他のアプリケーションを起動する方法について説明します。
[プログラミング例①]:
Sub サンプル()
Shell "C:\Windows\System32\notepad.exe", vbNormalFocus
End Sub
内容は、「メモ帳を起動して下さい。」との意味になります。
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例①]:
①<実行>ボタンをクリックします。
②メモ帳が起動します。
[サンプル①]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
他のアプリケーションを起動する方法(例①)についての説明は以上です。
[プログラミング例②]:
Sub サンプル()
Shell "C:\Windows\System32\calc.exe", vbNormalFocus
End Sub
内容は、「電卓を起動して下さい。」との意味になります。
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例②]:
①<実行>ボタンをクリックします。
②電卓が起動します。
[サンプル②]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
他のアプリケーションを起動する方法(例②)についての説明は以上です。
[プログラミング例③]:
Sub サンプル()
Shell "C:\Program Files\internet explorer\iexplore.exe", vbNormalFocus
End Sub
内容は、「IEを起動して下さい。」との意味になります。
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例③]:
①<実行>ボタンをクリックします。
②IEが起動します。
[サンプル③]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
他のアプリケーションを起動する方法(例③)についての説明は以上です。
他のアプリケーションを起動し戻り値を取得する
他のアプリケーションを起動して戻り値を取得する方法について説明します。
[プログラミング例]:
Sub サンプル()
'↓処理①
Dim 戻り値 As Long
'↓処理②
戻り値 = Shell("C:\Windows\System32\notepad.exe", vbNormalFocus)
If (戻り値 = 0) Then
MsgBox "エラーがあります。(戻り値:" & 戻り値 & ")", 16, "エラー"
Else
MsgBox "正常に起動されました。(戻り値:" & 戻り値 & ")"
End If
End Sub
処理の流れは以下の通りとなります。
[処理①]:変数定義
Dimによる戻り値を格納する変数定義となります。
[処理②]:Shell関数によるメモ帳の起動
Shell関数でメモ帳を起動させます。起動時の戻り値は[処理①]で定義した変数:戻り値に「0」又は「0以外」でセットします。セットされた戻り値をIF文で判定し、「0」の場合はMsgBoxで”エラーがあります。”を表示し、「0以外」の場合は”正常に起動されました。”を表示します。(※Shell関数の戻り値は、「0」の場合は他のアプリケーション起動に失敗した値となり、「0以外」の場合は正常に起動した値となります。)
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
①<実行>ボタンをクリックします。
②メモ帳が開きます。
③また、MsgBoxで「正常に起動されました。(戻り値:13536)」が表示されます。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
他のアプリケーションを起動し戻り値を取得する方法についての説明は以上です。
おわりに
今回は他のアプリケーション起動する方法について説明しました。Excel→メモ帳を起動してデータを転記する場合やExcel→Wordを起動してデータを転記する場合等、他のアプリケーションとの連携は何かと使用します。是非活用してみて下さい。