2011年1月17日月曜日

VBAでIE操作~起動中の画面タイトルを取得~

IEで起動している画面のタイトル一覧を作成するというVBAのプロシージャを作りました。
元々はある掲示板にあったソースで、それを自分の作業用に改変しました。
参考:http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200508/05080025.txt

今回こんなプロシージャを作ったのは、IEにおいて、起動しようとしている画面が既に開かれていないかをチェックするためです。
同一画面を2つ以上立ち上げていると予期せぬ不具合が発生しうるというシステムに対する回避策です。
今後のソース改造と勉強のためにひとまずエントリーしておきます。


以下ソース

Sub GetIETitle()
'IE test 用プロシージャ
'開いているIEWindowのタイトルを取得する

Dim objShell As Object
Dim intIEcnt As Integer
Dim i As Integer
Dim objIE(64) As Object
Dim objWindow As Object



'IE検索
'シェルのオブジェクトを作成する
Set objShell = CreateObject("Shell.Application")
      
'IEウィンドウ数初期化
intIEcnt = 0
      
'ウインドウの数だけまわす
For Each objWindow In objShell.Windows
  
    'MsgBox TypeName(objShell.windows)
    'Debug.Print "タイプは:" & TypeName(objWindow.document)
            
    'HTMLDocumentだったら
    If TypeName(objWindow.document) = "HTMLDocument" Then
        'オブジェクトを代入する
        Set objIE(intIEcnt) = objWindow
        intIEcnt = intIEcnt + 1
    End If
Next
Set objShell = Nothing

'IE TITLE取得
'発見したウインドウの数だけまわす
For i = 0 To (intIEcnt - 1)
    objIE(i).Visible = True
    Worksheets("test").Cells(i + 1, 1).Value = objIE(i).document.Title
  
Next i
End Sub

0 件のコメント:

コメントを投稿