関数・メソッド

指定ウィンドウを最前面に表示する【AppActivate】【ExcelVBA】

指定するウィンドウを最前面に表示させたい

Excel 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とは別です。

関連記事

コメント

  1. 私は最小化→最大化でExcelを前面に出す事ができました。

タイトルとURLをコピーしました