【VBA】 Excelとの格闘: ExcelでIEを使い倒せ!? | さすらいびとの徒然漂流記

さすらいびとの徒然漂流記

ふらふら漂流するさすらいびとのように,色々な話題についてお気楽極楽,徒然なるままに…

何の因果かExcel/VBAとの格闘をする羽目に.

使い始めて1ヶ月足らずのさすらいびとが,とりあえずやったのはActiveXとしてIE内に表示されたExcelのVBAからのIEの制御とCookieの取得.


[IEオブジェクトの作成]

これは簡単にできることが判明.


Dim myIE As Object

Set myIE = CreateObject("InternetExplorer.Application")


まあ,こんな感じ.


[IEオブジェクトの検索]

これもそんなには難しくない.


Dim shell As Object

Set shell = CreateObject("Shell.Application")

Dim window As Object

Const IE_EXE_NAME As String = "iexplore.exe"
For Each window In shell.Windows
If Right$(window.FullName, IE_EXE_NAME.Length) = IE_EXE_NAME
Then

If window.locationURL = "http://www.yahoo.co.jp/ " Then
MsgBox "見つけた!" & window.locationURL
End If
End If
Next


これはURL(http://www.yahoo.co.jp/ )での検索の例.

ほかにもWebBrowserオブジェクトの各種プロパティでの検索が可能.


[Cookieの取得]

その前に,準備として…


・ExcelオブジェクトとIEオブジェクト

この関係がちょっと面倒.

実のところ,IE内のExcelからIEが保持しているはずのCookieを取得したかったんだけど,どうも直接IE内でExcelを開いてしまうとIEオブジェクトではなくなってしまうということらしい.


,とりあえず試したのがHTMLフレーム内のコンテンツとして表示するもの.

このとき,Excelを開いているIEを取得するのはこんな感じ.


Dim containerIE As Object

Set containerIE = ThisWorkbook.Container


とっても簡単でしょ?


・IEオブジェクトからのCookie取得

さて,本編ですが,HTMLDocumentを保持しているIEオブジェクトを取得できれば,これはとっても簡単.

普通にCookieを保持したIEオブジェクトがえられれば次のようにするだけ.


Dim cookie As String

cookie = ieObject.Document.cookie



そんなこんなでお仕事も順調!?に進んでいる次第.