2015-08-17 42 views
3

У меня есть макрос, который я написал в excel, и я перешел на веб-страницу, используя «ActiveWorkbook.FollowHyperlink», который работает так, как мне это нужно!VBA Set Dropdown value

Однако теперь мне нужно обновить выпадающее меню на этой веб-странице.

У меня есть идентификатор выпадающего списка, и каждый выбор, очевидно, имеет значение. Я хочу установить выбранную опцию, используя значение, которое у меня есть на листе excel.

Я борюсь за то, что не знаю, как получить доступ к элементам на странице, после открытия с использованием .FollowHyperlink.

После .FollowHyperlink - это веб-страница, затем активная, есть ли что-то вроде ActiveWebPage.getElementById?

Цените любую помощь.

Майк

ответ

0

, что вы хотите сделать, это использовать автоматизацию ком назвать экземпляр интернет-проводник и перейдите на страницу в вопросе, это даст вам модель документа, оттуда вы можете делать практически все, см IE (Internet Explorer) Automation using Excel VBA

образца VBA следует

Private Sub IE_Autiomation() 
Dim i As Long 
Dim IE As Object 
Dim objElement As Object 
Dim objCollection As Object 

' Create InternetExplorer Object 
Set IE = CreateObject("InternetExplorer.Application") 

IE.Visible = False 

IE.Navigate "http://www.excely.com/" 

' Statusbar 
Application.StatusBar = "www.excely.com is loading. Please wait..." 

' Wait while IE loading... 
Do While IE.Busy 
    Application.Wait DateAdd("s", 1, Now) 
Loop 

' Find 2 input tags: 
' 1. Text field 
' <input type="text" class="textfield" name="s" size="24" value="" /> 
' 
' 2. Button 
' <input type="submit" class="button" value="" /> 

Application.StatusBar = "Search form submission. Please wait..." 

Set objCollection = IE.document.getElementsByTagName("input") 

i = 0 
While i < objCollection.Length 
    If objCollection(i).Name = "s" Then 

     ' Set text for search 
     objCollection(i).Value = "excel vba" 

    Else 
     If objCollection(i).Type = "submit" And _ 
      objCollection(i).Name = "" Then 

      ' "Search" button is found 
      Set objElement = objCollection(i) 

     End If 
    End If 
    i = i + 1 
Wend 
objElement.Click ' click button to search 

' Wait while IE re-loading... 
Do While IE.Busy 
    Application.Wait DateAdd("s", 1, Now) 
Loop 

' Show IE 
IE.Visible = True 

' Clean up 
Set IE = Nothing 
Set objElement = Nothing 
Set objCollection = Nothing 

Application.StatusBar = "" 
End Sub