- ベストアンサー
Excel VBAでアプリのウィンドウ名取得
- Excel VBAでウィンドウ名を取得する方法について調査しています。具体的には、WindowsXPとExcel2007を使用しており、ExcelからIE8にキーコードを送りたいですが、ウィンドウがアクティブにならない問題が発生しています。ウィンドウタイトルを変更しても問題が解決しないため、現在開いているアプリのすべてのウィンドウ名を表示するコードを探しています。
- Excel VBAでアプリのウィンドウ名を取得する方法について教えてください。WindowsXPとExcel2007を使用しており、ExcelからIE8にキーコードを送信したいのですが、ウィンドウがアクティブにならない問題が発生しています。ウィンドウタイトルを変更しても解決しないため、開いているアプリのすべてのウィンドウ名を取得する方法を知りたいです。
- Excel VBAでアプリのウィンドウ名を取得する方法を教えてください。私はWindowsXPとExcel2007を使用しており、ExcelからIE8にキーコードを送信しようとしていますが、ウィンドウがアクティブになりません。ウィンドウタイトルを変更しても問題が解決しないため、開いているアプリのすべてのウィンドウ名を取得するVBAコードを探しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
hzd00430様 こんばんわ。IE限定なら、こんな感じでタイトルをゲットできますよ。 (ウィンド名 = タイトルという仮定の話ですが...) 外してたら、ゴメンナサイ。 Sub Test() Dim objShell As Object, i As Variant, cnt As Integer 'シェルオブジェクトを作成 Set objShell = CreateObject("Shell.Application") cnt = objShell.Windows.Count '全ウィンドウをループ For i = cnt - 1 To 0 Step -1 If TypeName(objShell.Windows((i)).document) = "HTMLDocument" Then 'タイトルを表示 MsgBox objShell.Windows((i)).document.Title End If Next i End Sub
その他の回答 (1)
- maverik1226
- ベストアンサー率75% (9/12)
こんばんわ。 >ただ、ウィンドウ名としては、タイトルに続くアプリケーション名(- Windows Internet Explorerの部分)が得られないのですね。 >今後の参考まで、可能でしたらウィンドウ名そのものを得る方法があれば知りたいです。 色々チャレンジしてみたのですが、私の能力ではできませんでした orz... ちなみに objShell.Windows((i)).FullName とすると、そのウィンドウを起動しているソフトのEXEファイルのフルパスが得られます。 例えばIEだと「C:\Program Files\Internet Explorer\iexplore.exe」が返ってきます(Win7の場合です) アプリケーション名であれば、これを使うのも一案かなぁと思います。 あと蛇足ですが、当方IE9なのですが「- Windows Internet Explorer」が表示されなくなりましたね。(私のPC環境だけかな?)
お礼
わざわざお手数をおかけして申し訳ありません。 何しろ win_activate に渡す引数を得るのが目的なものですから、ウィンドウ名そのものを得たいなぁと思ってまして。 ですから、実行ファイル名が得られてもちょっと使えません(^^;; > 「- Windows Internet Explorer」が表示されなくなりましたね。 そうなんですか?ウィンドウ名が「(開いているファイル等)- (アプリケーション名)」という形式なのはWindowsのシェル全体の話だと思ってました(Officeソフトやメモ帳や、大抵のアプリはそういう形式だったので)。でもそうなってないアプリもありますね。
お礼
ありがとうございます。タイトルの文字列が得られました。 その文字列を使ってCall activate_winをしたところ、 無事IEをアクティブにすることができました。 ただ、ウィンドウ名としては、タイトルに続くアプリケーション名(- Windows Internet Explorerの部分)が得られないのですね。 今後の参考まで、可能でしたらウィンドウ名そのものを得る方法があれば知りたいです。