shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel VBA】ウィンドウを最前面にする AppActivate Application.Caption の使い方

Excel VBAでWordやPowerPointなどを操作後、元のExcelウィンドウを最前面に移動したいとき、AppActivate Application.Captionを利用します。Excel VBAで他のアプリケーションを操作するときには利用することが多いコードです。

内容:

なお、確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2505)です。

必要な場面

Excel VBAでWordやPowerPointを操作する場合、処理の途中でこれらのアプリケーションがアクティブになることがあります。その後、処理が終了したことをユーザーに知らせるためにメッセージボックスを表示しても、Excelのウィンドウが最前面にないと、ユーザーが気づきにくいという問題が発生します。
その結果、手動でExcelウィンドウをクリックして初めてメッセージボックスの存在に気づき、マクロを終了することになるため、スムーズな処理完了通知ができなくなってしまいます。

AppActivate Application.Captionとは

AppActivate は、指定したアプリケーションウィンドウをアクティブにするためのVBA関数です。
そして、Application.Caption は現在開いているExcelのウィンドウタイトル(キャプション)を取得するプロパティです。
このコードを実行するとExcelのウィンドウが最前面に移動し、アクティブになります。

実際のコード
Sub WordやPowerPoint操作後の通知()
    ' WordやPowerPointの操作処理(省略)
    
    ' Excelを最前面にする
    AppActivate Application.Caption
    
    ' メッセージボックスの表示
    MsgBox "処理が完了しました。", vbInformation
End Sub
具体的な事例

次の事例では、AppActivate Application.Caption を利用しています。

このマクロでAppActivate Application.Captionがないと、メッセージボックスが前面に表示されず、ユーザーが気づけないという問題が発生します。

shikumika.org

以上、Excel VBAでウィンドウを最前面にする AppActivate Application.Caption の使い方でした。