2013-05-22 2 views
5

Наш бизнес использует браузерную программу для операций. Я могу автоматизировать решение для навигации по этому сайту и получить некоторые данные в конце.VBA IE Automation - Чтение iFrame

Сайт сам использует регулярные рамки очень сильно. Однако в самом конце моего процесса он заполняет мои данные не в фрейм, а в iFrame. Там также очень обширный javascript на всем сайте, что делает вещи грязными.

Схват URL-адреса src iFrame и открытие в новом браузере ошибок на странице (то есть на странице отображается текст ошибки вместо содержимого).

Моего вопрос:

Как я могу взять текст из-за плавающий фрейм через VBA?

То, что я пытался до сих пор(не стесняйтесь, чтобы пропустить):

Цель конкретного плавающего фрейма в определенном кадре, и захватить innerHTML

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

Target конкретный 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) .innertext

+0

Этот вопрос немного устарел, поэтому у меня больше нет проектора передо мной. Тем не менее, я скоро увижу, как скоро выкопать его и проверить это для потомков. Я скажу, что это, по крайней мере, выглядит многообещающим, я googled вокруг различных его частей, и, похоже, есть некоторый консенсус относительно его (или очень похожего кода) использования. –

+0

Я знаю, что вопрос немного старый .. и я приземлился на эту страницу, чтобы найти решения ... но почему-то я получил решение, поэтому я вставил то, что помогло мне ... может быть, кто-то в будущем получит выгоду ... .didn ' t понял причину его голосования? – abhinov

+0

Да, я не уверен, почему это было ниспровергнуто, но это было не мной. Извините за путаницу. –

4

Попробуйте это ...

Dim elemCollection As IHTMLElementCollection 

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

Thanx abhinov .....

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

Это сделало работу для Me .....

0

Я сталкивался с подобной проблемой, наконец, решить ее с помощью:

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

Примечание: текст, который мне нужен, присутствовал в форме, расположенной в iframe.

Является новым для VBA, может ли какое-то тело объяснить, что именно 0 в Frames (0)/forms (0) есть?

Если это что-то вроде индекса кадра или номера кадра (по моему предположению), пожалуйста, дайте мне знать, как мы можем найти индекс кадра (в любом HTML)?

+0

Вы не должны задавать вопросы в своих ответах – 3dd

+0

Не проверял советы , извините за это, я отправлю новый вопрос. – Sukesh

Смежные вопросы