2013-06-18 6 views
5

Napisałem makro, które otworzy stronę internetową, znajdę miejsca, w których potrzebuję umieścić dane, a następnie chcę, aby makro trafiło przycisk wypełniania, następnie naciśnij Ok.Potrzebuję znaleźć i nacisnąć przycisk na stronie internetowej przy użyciu VBA

Kod źródłowy strona dla przycisku to:

<input type="text" size="30" maxlength="40" name="name" id="name"> 
<input type="button" value="Prefill" onclick="prefill()"> 

Szukałam odpowiedzi przez cały tydzień i myślę, że mam podstawową wiedzę o tym, jak to ma działać, uruchamiając pętlę szukać za to, ale nie mam szczęścia w moim wysiłku, aby to osiągnąć.

Czy ktoś może mi pokazać pętlę, która przeszuka moją stronę dla tego przycisku?

Z góry dziękuję.

Zamówiony kod dotychczas

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

    Set IE = CreateObject("InternetExplorer.Application") 

    IE.Visible = True 
    IE.Navigate "website" 'make sure you've logged into the page 

    Do 
     DoEvents 
    Loop Until IE.READYSTATE = 3 

    Do 
     DoEvents 
    Loop Until IE.READYSTATE = 4 
    ActiveSheet.EnableCalculation = False 
    ActiveSheet.EnableCalculation = True 
    Call IE.document.getelementbyid("name").SetAttribute("value", ActiveSheet.Range("b2").Value) 
    Call IE.document.getelementbyid("aw_login").SetAttribute("value", ActiveSheet.Range("a2").Value) 

    Set objCollection = IE.document.getElementsByTagName("input") 
    i = 0 
    While i < objCollection.Length 
     If objCollection(i).Type = "button" And _ 
      objCollection(i).Name = "Prefill" Then 
       Set objElement = objCollection(i) 
     End If 
     i = i + 1 
    Wend 
    objElement.Click 
End Sub 
+1

można pisać kod, który masz tak daleko? – sigil

+0

Jestem ciekawy, czy VBA może być używany do funkcji tak obcej, więc pozostanę z nami. Prawdopodobnie możesz usunąć tag 'macros' i możesz chcieć powiedzieć, z której wersji Office korzystasz. – Smandoli

+0

znajdujesz swoje okno za pomocą interfejsu winAPI i wysyłasz kliknięcie: –

Odpowiedz

4

Wygląda na to są całkiem blisko, to co ja kiedyś zrobić coś podobnego

With ie.document 

     Set elems = .getelementsbytagname("input") 
     For Each e In elems 
      If (e.getattribute("className") = "saveComment") Then 
       e.Click 
       Exit For 
      End If 
     Next e 

    End With 

Prawdopodobnie po prostu trzeba zmienić if.

Ja również zauważyć, że kod odwołuje się do .Name = "Prefill" ale twój html fragment odnosi się do .value = "Prefill"

Powiązane problemy