VBAでIEを操作する際のオブジェクトの構造について質問です。


次の処理(objIEはIEオブジェクト)
Dim objFRAME As FramesCollection
Set objFRAME = objIE.Document.frames
Debug.Print "フレームの数は" & objFRAME.length
について、objFRAME.lengthの下位構造ってどうなってます?

例えばフレームの数は5だとして、objIEのイメージだと
objFRAME.Item(0)~objFRAME.Item(4)
が指定できそうですけど、objFRAMEの下にItem(1)~Item(5)は見つかりません。

どうやってフレームを発見し、指定したら良いのでしょう?(概念が間違っていたら教えて下さい。)

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/09/26 09:29:36
  • 終了:2010/09/26 19:03:25

ベストアンサー

id:Silvanus No.2

Silvanus回答回数174ベストアンサー獲得回数672010/09/26 15:42:54

ポイント70pt

これで答えになっているでしょうか。

----------

Option Explicit

Sub Hatena_ReoReo7_100926()

Dim Count1 As Integer

Dim NofFrames As Integer

Dim objAppIE As Object

Set objAppIE = CreateObject("InternetExplorer.Application")

objAppIE.Visible = True

objAppIE.Navigate "http://XXX.YYY/ZZZ.htm"

Do While objAppIE.Busy = True

DoEvents

Loop

With objAppIE.Document

NofFrames = .frames.Length

Debug.Print "フレームの数は" & NofFrames & " です。"

For Count1 = 1 To NofFrames

Debug.Print Count1 & "番目のフレームに表示中のURLは " & .frames(Count1 - 1).Location.href; " です。"

Next

End With

End Sub

id:ReoReo7

ありがとうございます。

frame(数字)で指定するのだったのですね!!

2010/09/26 19:03:16

その他の回答(1件)

id:Silvanus No.2

Silvanus回答回数174ベストアンサー獲得回数672010/09/26 15:42:54ここでベストアンサー

ポイント70pt

これで答えになっているでしょうか。

----------

Option Explicit

Sub Hatena_ReoReo7_100926()

Dim Count1 As Integer

Dim NofFrames As Integer

Dim objAppIE As Object

Set objAppIE = CreateObject("InternetExplorer.Application")

objAppIE.Visible = True

objAppIE.Navigate "http://XXX.YYY/ZZZ.htm"

Do While objAppIE.Busy = True

DoEvents

Loop

With objAppIE.Document

NofFrames = .frames.Length

Debug.Print "フレームの数は" & NofFrames & " です。"

For Count1 = 1 To NofFrames

Debug.Print Count1 & "番目のフレームに表示中のURLは " & .frames(Count1 - 1).Location.href; " です。"

Next

End With

End Sub

id:ReoReo7

ありがとうございます。

frame(数字)で指定するのだったのですね!!

2010/09/26 19:03:16
  • id:ReoReo7
    「objFRAME.lengthの下位構造」というか「objFRAMEの下位構造」という表現が正しいですね。
    失礼しました。
  • id:mkonomi
     
    質問内容とは関係ありませんが、ちょっと失礼します・・・
    umIは不適切な回答を繰り返しているようですので、オープンしなくてもいいと思います。

    http://q.hatena.ne.jp/umI/answerlist
     
    開いてしまったなら不適切回答にチェックを入れて送信してください。

  • id:Silvanus
    回答にコメント入れ忘れました…。
    要は、Document.frames の下位に それぞれにフレームがあるのではなく、
    それぞれのフレームへは Document.frames(x) でアクセスする、ということです。
  • id:Silvanus
    ちょっと訂正。文字が化けちゃってます。
    回答中のマクロの下から4行目の末尾は
    .href & " です。"
    が正しいです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません