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がないと、メッセージボックスが前面に表示されず、ユーザーが気づけないという問題が発生します。
以上、Excel VBAでウィンドウを最前面にする AppActivate Application.Caption の使い方でした。