2013-03-08 71 views
1

这里是我的代码,遗憾的是到公司的问题我不能发布真实的URL,它的工作原理,但不是我想要的方式,检查我下面的问题:Excel VBA中的表单提交并解析结果数据

Dim doc As HTMLDocument 
Dim IE As InternetExplorer 
Dim TDelements As IHTMLElementCollection 
Dim TDelement As HTMLTableCell 
Dim r As Long 

Sub ficfinder() 
Set IE = CreateObject("InternetExplorer.Application") 
    With IE 
     .Visible = True 
     .navigate URL:="...INPUT"<---this is my search form, but i have to redact due to co policy 
    Do 'Until .readyState = 4 
    DoEvents 
    Loop Until IE.readyState = READYSTATE_COMPLETE 
    'pick field to fill out 
    Set mytextfield1 = .document.all.Item("WESTAC") 
    'set value to put in 
    mytextfield1.Value = "5416869160" 
    'click the submit button 
    IE.document.all.Item("Submit").Click 
    Do 'Until .readyState = 4 
    DoEvents 
    Loop Until IE.readyState = READYSTATE_COMPLETE 
    End With 
'I think i'm missing something here 

    Set doc = IE.document 
    Dim sdd As String 
    Set TDelements = doc.getElementsByTagName("td") 
    r = 0 
    For Each TDelement In TDelements 
     If TDelement.Align = "right" Then 
      Sheet2.Range("A1").Offset(r, 0).Value = TDelement.innerText 
      r = r + 1 
     End If 
    Next 
End Sub 

所以这个工作,并将数据放入我的电子表格,但它所拉的数据来自搜索表单,而不是提交后出现的页面。我如何让IE.document出现的新页面?

任何帮助表示感谢,谢谢!

+1

如果您在“Do”(在提交表单之后)放置了一个休息区,您是否可以在IE中看到页面刷新?如果你在VB编辑器中点击“继续”,你会得到预期的结果吗? – 2013-03-08 18:25:26

+0

是的,这使得数据正确!那么我需要等待之前呢? – 2013-03-08 18:39:54

+0

等待可能会这样做。 – 2013-03-08 18:46:12

回答

0

我加

Do While IE.Busy: DoEvents: Loop 

刚过提交和它完美的作品。感谢Tim Williams的帮助!