VBA

2013-06-18 27 views
5

'u kullanarak bir web sayfasındaki bir düğmeyi bulup ona basmalıyım Bir web sayfası açacak, verileri yerleştirmem gereken noktaları bulabildiğim bir makro yazdım ve makroun bir önceden doldurma düğmesine basmasını istiyorum. sonra Tamam'a basın. Bütün hafta cevap ararken oldumVBA

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

ve ben aramak için döngü çalıştırarak işe bu beklenir nasıl temel bir anlayış var düşünüyorum:

düğmesi için sayfa kaynak kodu Bunun için, ama aslında bunu işe almak için çabalarımda hiç şansım yok.

Birisi bu düğüme sayfamı arayacak döngüyü gösterebilir mi?

Önceden teşekkür ederiz. Eğer oldukça yakın olduğu gibi

Talep edilen kod şimdiye kadar

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

atıfta fark? – sigil

+0

VBA bir yabancı için bir işlev için kullanılabilir eğer merak ediyorum, bu yüzden ben ayarlı kalacağım. Muhtemelen 'macros' etiketini kaldırabilir ve hangi Office sürümünü kullandığınızı söylemek isteyebilirsiniz. – Smandoli

+0

winAPI kullanarak pencerenizi bulup bir tıklama gönderin –

cevap

4

bu ben Muhtemelen sadece eğer deyimi değiştirmek zorunda kalacak benzer

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 

şey yapmak için kullanmış nedir görünüyor.

Ben de kodunuzu .Name = "Prefill" atıfta ama o ana kadar sahip kod gönderebilir miyim html pasajı .value = "Prefill"