top of page
検索

Selenium Basic 使ってみた-(Excelウィンドウを最前面に表示!: AppActivateステートメント)

更新日:2021年8月12日

こんにちは。

最近、Selenium系開発が続いています。


ツールの動作において不都合?が発生した際には MsgBox で利用者と対話したりしたいのですが、Webブラウザーを開いた以降は前面に表示されているので、Excel VBA から表示した MsgBox に気づいてもらえなかったりします💦


で、当初は、該当Webブラウザを最小化する方法を考えていたのですが、今使ってるSelenium Basicの限界なのか、最大化はできるが最小化ができない💦


で、仕方なくWebブラウザのサイズ変更(サイズ縮小)でせめて MsgBox に気が付かせようと思ったのですが、Excel自体が前面に来ていないかぎり、MsgBox は表示されないまま(=ピコピコモード?)なののですね…💦


ということで、発想を変えて、Excelを前面にもってこれないか?と調査した結果、解決策にたどり着き、備忘録する運びとなりました。^^



■ 動作環境

 

OS: Windows 8.1(64ビット)

Excel: 2013(32ビット)

Chrome: 88.0.4324.150(64ビット)

Selenium Basic: v2.0.9.0



■ AppActivateステートメント

 

結論は、指定したアプリケーションをアクティブ化する AppActivate ステートメントを使用します。



<構文>

> AppActivate title[, wait]


<引数>

  • title は、アクティブにするアプリケーションのタイトルバーに表示される文字列を指定(String)。また、Shell 関数から返されるタスクIDを指定することも可能。

  • wait は、省略可能(既定値: False)。該当アプリケーションをアクティブにする前に、呼び出し元のアプリケーションにフォーカスを移すかどうかを指定(Boolean)。

<戻り値>

  • なし



■ 参考コード

 

□ 駄目パターン

※これ以降も同様ですが、「m_」で始まる英語大文字の変数名みたいな名称は、何れも私が別途定義している定数です。


これを実行すると MsgBox のところで、タスクバー上のExcelアイコンがピコピコします。Webブラウザが前面に表示されているので想定どおりの動きです。^^



□ 改善後

検索ボタンのクリック後、MsgBox発行前に…


> AppActivate Application.Caption


を差し込んだことで、Excelが前面に登場し、メッセージボックスが表示されたことを正しく?キャッチできました。


Excel VBAで、Application オブジェクトの Caption プロパティは、Microsoft Excel ウィンドウのタイトル バーに表示される名前を取得します。それを AppActivate ステートメントに渡すことで、結果、Excelウィンドウが前面に表示されたわけです。



■ まとめ

 

いかがでしたでしょうか?

そもそもは Selenium 経由で立ち上げたWebブラウザを最小化したいなぁ…と思っていたのですが、AppActivate ステートメントのお陰で目的のことが簡単に実現できました。^^

壁にぶち当たった際は、視点を変える…ですね!


なお、本備忘録を活用した【メルカリ管理ツール】を以下サイトで提供しております。

ご興味ございましたらご覧ください。


次回以降も、苦労した点を備忘録しようと思います。

閲覧数:5,773回0件のコメント

Comments


bottom of page