2013-06-18 27 views
5

Tôi đã viết một macro sẽ mở một trang web, tìm các điểm tôi cần để đưa dữ liệu vào và sau đó tôi muốn macro nhấp vào nút prefill, sau đó nhấn Ok.Tôi cần tìm và nhấn một nút trên trang web bằng cách sử dụng VBA

Trang mã nguồn cho các nút là:

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

Tôi đã tìm kiếm câu trả lời tất cả các tuần và tôi nghĩ rằng tôi có một sự hiểu biết cơ bản về cách này là nghĩa vụ phải làm việc bằng cách chạy một vòng lặp để tìm kiếm cho nó, nhưng tôi không có may mắn trong nỗ lực của tôi thực sự nhận được điều này để làm việc.

Ai đó có thể hiển thị cho tôi vòng lặp sẽ tìm kiếm trang của tôi cho nút này không?

Cảm ơn bạn trước.

đang yêu cầu cho đến nay

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

Bạn có thể gửi mã mà bạn có cho đến nay? – sigil

+0

Tôi tò mò nếu VBA có thể được sử dụng cho một chức năng như vậy người nước ngoài, vì vậy tôi sẽ chơ. Bạn có thể xóa thẻ 'macro' và có thể bạn muốn nói phiên bản Office nào bạn đang sử dụng. – Smandoli

+0

bạn tìm thấy cửa sổ của bạn bằng cách sử dụng winAPI và gửi một cú nhấp chuột –

Trả lời

4

Hình như bạn là khá chặt chẽ, đây là những gì tôi đã sử dụng để làm điều gì đó tương tự

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 

Bạn có thể sẽ phải thay đổi câu lệnh if.

Tôi cũng nhận thấy rằng mã của bạn đề cập đến .Name = "Prefill" nhưng đoạn html của bạn đề cập đến .value = "Prefill"