2015-08-27 3 views
0

Я пытаюсь автоматически заполнить веб-форму USPS, и она работает для адреса улицы, города и почтового индекса, но я не могу заставить его заполнить раскрывающийся список State. Есть идеи?Заполните раскрывающийся список веб-форм USPS с помощью VBA EXCEL

Вот код, который я в настоящее время:

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, который мешает отображению этого элемента.

ОДНАКО, если вы сделаете это в окне Immediate в VBEditor:

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

... вы увидите, что значение для контроля действительно изменилось в «М».

Далее, если вы нажмете кнопку «Найти» на веб-странице, вы увидите, что «MA» фактически включено в «Вы ввели:».

Так что мой код выше - это решение вашей проблемы.

+0

Большое вам спасибо! Кажется, что это работает, но не потому, что государство изменено, а потому, что веб-сайт не требует государства (даже если он говорит, что это так). Поэтому, когда я нажимаю find, он выдает адрес без состояния и использует Zipcode для поиска правильного местоположения. – alf10087

+0

Это здорово. Но вы говорите, что приведенный выше код не привел к тому, что 'MA' сделал его на сервере? Это, безусловно, работает здесь. Опять же, это не меняет внешний вид формы, но меняет фактическое значение элемента управления ..., который передается на сервер. –

+0

Да, ты прав. Я перепроверил его, и он работает! – alf10087

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