何の因果か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
そんなこんなでお仕事も順調!?に進んでいる次第.