2013-05-22 11 views
5

私たちの事業は、操作のためにブラウザベースのプログラムを使用しています。私はこのサイトをナビゲートするソリューションを自動化し、最後にいくつかのデータを取得します。VBA IEオートメーション - iFrameを読む

サイト自体が通常のフレームを非常に重く使用しています。しかし、プロセスの最後に、データはフレームにではなく、iFrameに取り込まれます。また、サイト全体に非常に広範なjavascriptがあり、物事は泥だらけです。

iFrameのsrc URLを取得して新しいブラウザで開くと、ページが間違って表示されます(コンテンツの代わりにエラーテキストが表示されます)。

私の質問:

私はVBA経由のiFrameの外にテキストをつかむことができますどのように?

私がこれまでにを試みた何(スキップして自由に感じる)

ターゲットの特定の特定のフレーム内のiFrame、とグラブinnerHTMLの

With ie.document.frames(myFrameNum).document.getElementsByTagName("iframe")(1).document.body 
stringResult = .innerHTML 

ターゲットA特定のiFrameを特定のフレームでIDで取得し、innerHTMLを取得する

Dim iFrm As HTMLIFrame 
Set iFrm = ie.document.frames(myFrameNum).document.getElementByID("iFrameID") 
Debug.Print iFrm.document.body.innerText 

のiFrameのすべてのインスタンスを検索し、それらをつかむません -

Dim iFrm As HTMLIFrame 
Dim doc As HTMLDocument 
For iterator = 0 To ie.document.all.Length - 1 
    If TypeName(ie.document.all(iterator)) = "HTMLIFrame" Then 
    Set iFrm = ie.document.all(iterator) 
    Set doc = iFrm.document 
    Debug.Print & doc.body.outerHTML 
    End If 
Next 
+0

あなたがリンクを共有する場合は、私は試してみることができます。このリンクはあなたに役立つかもしれません。http://www.vbaexpress.com/forum/showthread.php?t=40649 – Santosh

+0

あなたがすでに試したことのある特定の問題は何ですか? *「特定のフレーム内の特定のiFrameをターゲットに設定し、innerHTMLを取得する」ためのコードは正しいと思われます。 – Gaffi

+0

@Santoshそれは私的なイントラネットサイトなので共有できません。しかし、私はそのポストを以前に見ました。問題は、iframeのsrcに移動しようとすると、ページのエラーです。私はページへのナビゲートがオプションだとは思わない。 –

答えて

-2

使用してみてください(結果なしインラインフレームをフレーム内に埋め込まれているので、おそらく?)を:

`Dim iFrm As HTMLIFrame 
Set iFrm = ie.document.frames(myFrameNum).document.getElementByID("iFrameID") 
Debug.Print iFrm.contentDocument.body.innerHTML` 
+0

「これはうまくいきませんでした」セクションからコピー&ペーストしましたか? –

3

私が直面しています同じ問題を解決し、次のスクリプト行を使用して解決策を得ました。

IE.Document.getElementsbyTagName( "iframe")(0)。 contentDocument .getElementsbyTagName

+0

この質問は少し古いので、私はもはや私の前にプロジェクトを持っていません。しかし、私はそれをすぐに掘り下げ、これを後世のためにテストすることを見ていきます。私はこれが少なくとも有望に見えて、私はそれのさまざまな部分についてグーグル・グーグルであり、その(または非常に似たコードの)使用に関していくつかのコンセンサスがあるようです。 –

+0

私は質問が少し古くなっていることを知っています...そして、私は解決策を探しているこのページに上陸しました...しかし何とか私は解決策を得ましたので、私を助けたものを貼りました...将来的にいくつかの人になるかもしれません..didn 'それを投票した理由は理解できませんでしたか? – abhinov

+0

ええ、なぜそれがどちらかと言われても分かりませんが、それは私のものではありませんでした。混乱させて申し訳ありません。 –

4

はこれを試してみてください.innertext(0)( "身体")...

Dim elemCollection As IHTMLElementCollection 

Set elemCollection = objDoc.frames("iFrameID").document.all 
Debug.Print elemCollection.Item("pagemenuli-adv").innerText 
2

ありがとうabhinov .....これがために仕事をした

IE.Document.getElementsbyTagName("iframe")(0).contentDocument.getElementsbyTagName("body")(0).innertext... 

私.....

0

私は同様の問題に直面し、最後にそれを使用して解決しました:

ObjIE.document.frames(0).document.forms(0).innerText

注:私が必要としていたテキストは、iframeにある形式で存在していました。

VBAの新機能ですが、フレーム(0)/フォーム(0)の正確な内容は何ですか?

フレームインデックスまたはフレーム番号(私の前提として)フレームインデックス(どのHTMLでも)を見つける方法を教えてください。

+0

あなたの回答に質問しないでください – 3dd

+0

ヒントを確認しませんでした申し訳ありませんが、新しい質問を投稿します。 – Sukesh

関連する問題