はじめに
ひらちんです。
今回は、VBAからEXCEL以外の他のアプリケーションを起動する方法を紹介します!
他のアプリケーションを起動するには、Shell関数を利用します。
Shell関数
引数 | 説明 |
---|---|
pathname | 実行するプログラム名を指定 |
windowstyle | 省略可(省略すると”vbMinimizedForcus”) 実行時のウィンドウの形式を指定 |
windowstyleに指定出来る定数
定数 | 値 | ないよう |
---|---|---|
vbHide | 0 | フォーカスを持ち、非表示にされるウィンドウ |
vbNormalFocus | 1 | フォーカスを持ち、元のサイズと位置に復元されるウィンドウ |
vbMinimizedFocus | 2 | フォーカスを持ち、最小化表示されるウィンドウ |
vbMaximizedFocus | 3 | フォーカスを持ち、最大化表示されるウィンドウ |
vbNormalNoFocus | 4 | 最後にウィンドウを閉じたときのサイズと位置に復元されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです |
vbMinimizedNoFocus | 6 | 最小化表示されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです |
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.exe | Excel (Microsoft Office) |
explorer.exe | エクスプローラー |
ftp.exe | ftpクライアント |
iexplorer.exe | Internet Explorer |
mspaint.exe | ペイント |
notepad.exe | メモ帳 |
outlook.exe | Outlook (Microsoft Office) |
pbrush.exe | ペイント |
powerpnt.exe | Powerpoint (Microsoft Office) |
powershell.exe | Powershell |
winword.exe | Word (Microsoft Office) |
write.exe | ワードパッド |
cmdとか、powershellとかは、セキュリティソフトに怒られるかもしれないですが、、、w
コメント