指定するウィンドウを最前面に表示させたい
Excel VBAマクロで最前面に表示させたいケースがあります。
■最前面に表示させたいケース
・VBAでIE操作を行い、Internet Explorerが前面にあるので、Excelのウインドウを表示したい。
・メモ帳にVBAで作成したデータをSendKeyを使用してコピペしたい。
(ただし、こちらはテキストデータにアウトプットした方が間違いがありません。詳細は下記記事を参考に)
「指定した範囲をCSV出力して保存する」【VBAマクロ】
「指定した範囲をタブ区切り(TSV)テキスト出力して保存する」【VBAマクロ】
「ActiveSheetをCSV出力して保存する」をパーツ化する。【ショートカットキー】【VBAマクロ】
「ActiveSheetをタブ区切りのテキストで出力保存する」をパーツ化する。【VBAマクロ】
・VBAでIE操作を行い、Internet Explorerが前面にあるので、Excelのウインドウを表示したい。
・メモ帳にVBAで作成したデータをSendKeyを使用してコピペしたい。
(ただし、こちらはテキストデータにアウトプットした方が間違いがありません。詳細は下記記事を参考に)
「指定した範囲をCSV出力して保存する」【VBAマクロ】
「指定した範囲をタブ区切り(TSV)テキスト出力して保存する」【VBAマクロ】
「ActiveSheetをCSV出力して保存する」をパーツ化する。【ショートカットキー】【VBAマクロ】
「ActiveSheetをタブ区切りのテキストで出力保存する」をパーツ化する。【VBAマクロ】
指定するウィンドウを最前面に表示する方法
'■各種ウィンドウを最前面に表示する Public Sub sample_AppActivate() '■起動している Book1 を最前面に表示 Call AppActivate("Book1") '■変数を使って本ブックの1つ目のブックを最前面に表示 Dim wd As Window Set wd = ThisWorkbook.Windows(1) Call AppActivate(wd.Caption) '■起動している メモ帳 を指定した場合(メモ帳が立ち上がっていないとエラー) '実行時エラー5 'プロシージャの呼び出し、または引数が不正です Call AppActivate("メモ帳") '■タスクID を使用して、最前面に表示 Call AppActivate(Shell("notepad", vbNormalNoFocus)) End Sub
注意点
- メモ帳などのアプリケーションであれば、前面に表示が可能です。
- Windowsフォルダ等は、前面に表示できません。(別方法で表示する必要があります)
- 起動していないアプリケーションを最前面に表示しようとすると「実行時エラー」が発生します。
‘実行時エラー5
‘プロシージャの呼び出し、または引数が不正です - 単純にエクセル内のあるシートを最前面に表示する場合は、シート名.Activateで行ってください。
※本記事はウィンドウの最前面表示であり、WorkSheetのActivateとは別です。
コメント
私は最小化→最大化でExcelを前面に出す事ができました。