プロが教える店舗&オフィスのセキュリティ対策術

フレームを使ってるサイトは、タグの取得はできないのでしょうか?

vbaでieを操作をしていて、サイトにログイン後、
imgタグの中にあるaltの値を取得したいのですが、

For Each myObj In objIE.document.all.tags("img")
Debug.Print myObj.alt
Next

これがスルーされてしまいます。

imgタグがいくつもあるのにスルーされてしまうし、imgタグだけでなくtdタグなどもすべてスルーされます。
その原因はサイトにフレームが使われてるからなのでしょうか?

なぜか
For Each myObj In objIE.document.all.tags("frame")
Debug.Print myObj.Name
Next
なら値が取得できるんです。

For Each myObj In objIE.document.all.tags("form")
Debug.Print myObj.Name
Next
はダメでした。
いつもなら、ソースにformタグがあれば、これで取得できるのですが・・・

A 回答 (2件)

 例えば、


http://masaboo.cside.com/new_html1/ht_sun/frame0 …
のページでしたら、右側のフレームが
<frame src="mainc.htm">
というソースになっていますので、#1さんがお書きの様に
objIE.navigate "http://masaboo.cside.com/new_html1/ht_sun/mainc. …
と、直接に、そのフレームのURLを開いてやれば、フレームの内容、というか、そのページが「objIE」に代入されます。


 あるいは、むしろ、こちらの方が簡単かも知れませんが、下記の様に、
Set objFr = objIE.document.Frames.Item(1)
というような形で、当該のフレームを、別のオブジェクトに格納してしまえば、objFr が、objIE と同じように扱えます。

 例示のページではフレームに名前が付いておりませんが、例えば、
<frame src="menuc.htm" name="hoge">
というように、名前の付いているフレームでしたら、
Set objFr = objIE.document.hoge
みたいなことができるかも知れません。

Sub Macro1()
  Dim myURL As String
  Dim objIE As Object
  Dim objFr As Object
  Dim myLnk As Object
  myURL = "http://masaboo.cside.com/new_html1/ht_sun/frame0 …
  Set objIE = CreateObject("InternetExplorer.Application")
  With objIE
    .navigate myURL
    While .Busy Or .ReadyState <> 4: DoEvents: Wend
    Set objFr = .document.Frames.Item(1)
    With objFr
      For Each myLnk In .document.getElementsByTagName("a")
        Debug.Print myLnk.href
      Next
    End With
    .Quit
  End With
  Set objIE = Nothing
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/07/03 21:48

そのフレームだけを開いて・・

    • good
    • 0
この回答へのお礼

vbaで、どう操作すればいいでしょうか?
教えてください。

お礼日時:2013/06/16 08:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!