三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク



STOPで止めてからウォッチ式でオブジェクト変数の中身を確認してみた

http://d.hatena.ne.jp/ken3memo/20120121/1327083218

続き。

あっ、間違えた。。。

前回、下記の質問をいただきました。


>下記のコードでホームページの中のiframeを回して「src」に記載してある相対パス
>絶対パスを知りたいと思い試行錯誤しています。
>
>For Each objITEM In objIE.Document.getElementsByTagName("iframe")
> Debug.Print objITEM.src
>Next
>
>上記コードの場合、相対パスがsrcに設定されている場合の絶対パスが知りたいと考えています。
>デバッグモードでobjITEMの直下に「ie8_src」というプロパティがあり、絶対パスらしきものがあるのですが、
>objITEM.ie8_srcとしてもエラーになってしまい取り出せません。
>何か方法はありますでしょうか?
>
>os xp
>ブラウザ ie8

回答として、聞きたかったのは、
相対パスがsrcに設定されている場合の絶対パスが知りたい
でした。

.srcだと、相対パスのままでした。

追加で探ってみたいと思います。

STOPで止めて、ウォッチリストを活用してみる。

VBA IE操作 STOPで止めてウォッチ式でオブジェクト変数を確認 - YouTube

↑STOPで止めてから、
変数を選択、右クリック、ウォッチ式の追加でオブジェクトの中身を見る。
そんな流れで、IEのプロパティを探る方法もあります。

ソース

Option Explicit

Sub ietest_0120_2() 'STOPで止めて、インラインフレームを探る

    Dim objIE As Object

    'IEのオブジェクトを作成する
    Set objIE = CreateObject("InternetExplorer.application")
    objIE.Top = 250
    objIE.Left = 250
    objIE.Width = 800
    objIE.Height = 400

    objIE.Visible = True

    'ページを開く(.Navigateで表示する。)
    objIE.Navigate "http://dec2011.top1-12.info/test0120.html"

    '読み込み完了となるまで、ループする。
    While objIE.ReadyState <> 4 Or objIE.Busy  'READYSTATE_COMPLETE = 4
        DoEvents
    Wend

    'iframeのタグを集める .getElementsByTagName("iframe")を使用
    Dim objIFRAME As Object
    Set objIFRAME = objIE.document.getElementsByTagName("iframe")

    Debug.Print TypeName(objIFRAME(0))  'オブジェクトのタイプを確認。

    Dim oHTMLIFrame As HTMLIFrame   'As HTMLIFrameと参照設定後 型宣言すると便利
   
    Dim n As Integer
    For n = 0 To objIFRAME.Length - 1 '配列が0からなので-1
        Set oHTMLIFrame = objIFRAME(n)  'n番目を代入
        Stop  '止めてデバッグモード、ウォッチ式で変数を見ると便利ですよ
        Debug.Print n
        Debug.Print ".src " & oHTMLIFrame.src          '相対パスや絶対パス、ソースの文字列
        Debug.Print ".ie8_src " & oHTMLIFrame.ie8_src  'ここに入っているのがiFrameのURL?
        Debug.Print ".document.URL " & oHTMLIFrame.document.URL  '親のURLだった
        Debug.Print ".document.domain " & oHTMLIFrame.document.domain  '親のドメインだった
    Next n
    
'IEを閉じたり、後始末
    'objIE.Quit    'デバックなのでコメントアウト IEを閉じたり、後始末をする

End Sub

終わりのあいさつ

んっ、.ie8_src が参照できた、、質問者は参照できなかった・・・と言っているので、
何か別の原因なのかなぁ・・・?

テスト環境が、OS:Vista 32 の IE9 なので、XP IE8でテストしてみないとなぁ。

STOPで止めて、Document.URLだ・・と説明したかったのに、
今回も、質問の答えが見つからなかった・・・
なんだろう?と気になりつつも、本来はお蔵入りの動画と操作手順を公開します。
※反面教師として、みなさんの肥やしになれば幸いです。 三流プログラマー Ken3