2013-05-22 46 views
5

Doanh nghiệp của chúng tôi sử dụng chương trình dựa trên trình duyệt để hoạt động. Tôi đang tự động hóa một giải pháp để điều hướng qua trang web này và truy xuất một số dữ liệu ở cuối.Tự động hóa VBA IE - Đọc iFrame

Trang web sử dụng khung hình thông thường rất nhiều. Tuy nhiên, vào cuối quá trình của tôi, nó sẽ điền dữ liệu của tôi vào một khung, nhưng là một khung nội tuyến. Ngoài ra còn có javascript rất rộng khắp trang web, làm cho mọi thứ trở nên lầy lội.

Lấy URL src của iFrame và mở trong một lỗi trình duyệt mới ngoài trang (nghĩa là trang hiển thị văn bản lỗi thay vì nội dung).

Câu hỏi của tôi:

Làm thế nào tôi có thể lấy các văn bản ra khỏi một iFrame qua VBA?

Những gì tôi đã cố gắng cho đến nay(bạn có thể bỏ qua):

Target một iFrame cụ thể trong một khung cụ thể, và lấy innerHTML

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

Target một iFrame cụ thể theo ID trong một khung cụ thể và lấy bên trongHTML

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

Tìm bất kỳ trường hợp iFrame, và lấy chúng (Không có kết quả - có lẽ vì khung nội tuyến được embeded trong một khung?)

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

Nếu bạn chia sẻ liên kết tôi có thể thử. Liên kết này có thể hữu ích cho bạn http://www.vbaexpress.com/forum/showthread.php?t=40649 – Santosh

+0

Các vấn đề cụ thể với những gì bạn đã thử? Mã cho * "Nhắm mục tiêu một iFrame cụ thể trong một khung cụ thể và lấy innerHTML" * có vẻ như nó sẽ chính xác. – Gaffi

+0

@Santosh Đó là trang web mạng nội bộ riêng tư, vì vậy tôi không thể chia sẻ. Tuy nhiên, tôi đã thấy bài đăng đó trước đây. Vấn đề là khi tôi cố gắng điều hướng đến iframe src như nó gợi ý, các lỗi trang. Tôi không tin rằng điều hướng đến trang là một tùy chọn. –

Trả lời

-2

Cố gắng sử dụng:

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

Bạn vừa sao chép/dán nội dung này từ phần "Mọi thứ tôi đã thử không hoạt động"? –

3

tôi phải đối mặt với cùng một vấn đề và tôi đã nhận được giải pháp bằng cách sử dụng dòng mã sau đây ..

IE.Document.getElementsbyTagName ("iframe") (0). contentDocument .getElementsbyTagName ("cơ thể") (0) .innertext

+0

Câu hỏi này hơi cũ nên tôi không còn dự án trước mặt mình nữa. Tuy nhiên, tôi sẽ sớm xem xét việc đào nó và thử nghiệm điều này, cho hậu thế. Tôi sẽ nói rằng điều này ít nhất có vẻ đầy hứa hẹn, tôi googled xung quanh các phần khác nhau của nó và có vẻ như là một số đồng thuận về việc sử dụng (hoặc rất giống mã) của nó. –

+0

Tôi biết câu hỏi là một chút cũ..và tôi đã hạ cánh trên trang này tìm kiếm giải pháp ... nhưng bằng cách nào đó tôi đã nhận giải pháp vì vậy tôi dán những gì đã giúp tôi ... có thể là một số trong tương lai được lợi ích..didn ' t hiểu lý do bỏ phiếu nó xuống? – abhinov

+0

Vâng, tôi không chắc tại sao nó lại bị downvoted, nhưng không phải bởi tôi. Xin lỗi vì sự nhầm lẫn. –

4

Hãy thử này ...

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... 

này đã làm công việc cho Tôi .....

0

Tôi gặp phải sự cố tương tự, cuối cùng đã giải quyết vấn đề đó bằng cách sử dụng:

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

Lưu ý: Văn bản mà tôi đang cần có mặt dưới dạng khung nội tuyến.

Mới đối với VBA, có thể một số nội dung giải thích chính xác 0 trong khung (0)/biểu mẫu (0) là gì không?

Nếu có thứ gì đó như Chỉ số khung hoặc số khung (Theo giả định của tôi), vui lòng cho tôi biết cách chúng tôi có thể tìm thấy chỉ mục khung (trong bất kỳ HTML nào)?

+0

Bạn không nên đặt câu hỏi trong câu trả lời – 3dd

+0

Không kiểm tra mẹo , xin lỗi vì điều đó, tôi sẽ đăng một câu hỏi mới. – Sukesh

Các vấn đề liên quan