2015-08-27 35 views
0

我正在嘗試自動填充USPS webform,它用於街道地址,城市和郵政編碼,但我無法填寫州下拉菜單。有任何想法嗎?使用VBA EXCEL填充USPS webform下拉列表

這是我目前擁有的代碼:

Sub USPS() 
Dim IE As Object 
Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = True 

IE.Navigate "https://tools.usps.com/go/ZipLookupAction!input.action?mode=1&refresh=true" 
Do 
DoEvents 
Loop Until IE.READYSTATE = 4 

Call IE.Document.getElementByID("tAddress").SetAttribute("value", "2 Peabody Terrace") 
Call IE.Document.getElementByID("tCity").SetAttribute("value", "Cambridge") 
Call IE.Document.getElementByID("sState").SetAttribute("value", "MA") 
Call IE.Document.getElementByID("Zzip").SetAttribute("value", "02138") 

Set AllHyperLinks = IE.Document.GetElementsByTagName("A") 
    For Each hyper_link In AllHyperLinks 
    If ID = "lookupZipFindBtn" Then 
     hyper_link.Click 
     Exit For 
    End If 
    Next 
End Sub 

非常感謝您的幫助!

回答

0

讓這改變了代碼:

'Call IE.Document.getElementByID("sState").SetAttribute("value", "MA") 
With IE.Document.getElementByID("sState") 
    For i = 0 To .Length - 1 
     If .Item(i).Value = "MA" Then 
      .Item(i).Selected = True 
      Exit For 
     End If 
    Next 
End With 

這將工作...但網頁仍然會顯示類似的選擇要素並沒有改變。這是一種幻覺。我懷疑頁面中有一些JavaScript干擾了此元素的顯示。

但是,如果你這樣做的VBEditor的即時窗口:

?IE.Document.getElementByID("sState").value 

...你會看到,對於控制值確實已經變更爲「MA」。此外,如果您繼續並單擊網頁的「查找」按鈕,您將看到「MA」實際上包含在「您輸入的內容:」中。

所以我上面的代碼是解決您的問題。

+0

非常感謝!它似乎在起作用,但並不是因爲國家改變了,而是因爲該網站不要求國家(即使它說明了)。所以當我點擊查找時,它會拋出沒有狀態的地址,並使用Zipcode找到正確的位置。 – alf10087

+0

那太好了。但是你是否說上面的代碼沒有導致'MA'使它到達服務器?它確實在這裏工作。同樣,它不會改變表單的外觀,但它確實會改變傳遞給服務器的控件的實際值。 –

+0

是的,你是對的。我重新檢查它,它正在工作! – alf10087