Automatyzacja programu Internet Explorer za pomocą zdarzeń wejściowych VBA

próbuję użyć automatyzacji z programu Microsoft Access 2003 do sterowania programem Internet Explorer 9, aby wypełnić formularz przy użyciu danych bazy danych.

Wejście uruchamia zdarzenie w przeglądarce, które weryfikuje dane i sprawia, że ​​przycisk Zapisz jest widoczny. Jeśli używam sendkeys, zdarzenie jest wyzwalane; jednak znalazłem, że posłańcy są bardzo zawodni. Jeśli zmieniam wartość elementu, a następnie używam .fireevent („onchange”), nic się nie dzieje - nawet błąd.

Moje pytanie brzmi, jak odpalić wydarzenie. Lub, jak mogę dowiedzieć się, co działa javascript. Czy istnieje dodatek do debugowania dla IE, który powie mi, które zdarzenie zostało uruchomione? Jeśli tak, czy mogę sam uruchomić skrypt?

Mój kod jest poniżej.

<code>    Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.Navigate "https://extranet.website.com/Planning/Edition/Periodic?language=en"

Do While IE.ReadyState <> 4 Or IE.Busy = True
    DoEvents
Loop


'log in
If IE.Document.Title = "website- access" Then
    IE.Document.getElementById("login_uid").Value = "username"
    IE.Document.getElementById("login_pwd").Value = "password"
    IE.Document.all("ButSubmit").Click
    Do While IE.ReadyState <> 4 Or IE.Busy = True
        DoEvents
    Loop
End If

Do While Not RstAvailability.EOF
    StartDate = RstAvailability!AvailDate
    IE.Document.getElementById("periodStart").Value = Format(StartDate, "dd mmm yy")
    IE.Document.getElementById("periodEnd").Value = Format(StartDate, "dd mmm yy")
    Set LinkCollection = IE.Document.GetElementsByTagName("A")
    For Each link In LinkCollection
        If link.innertext = "Add" Then
            link.Click
            Exit For
        End If
    Next
    Do While IE.ReadyState <> 4 Or IE.Busy = True
        DoEvents
    Loop


    Set objRows = IE.Document.GetElementsByTagName("tr")
    If RstAvailability!RoomType = "DTW" Then
        n = 0
        While n < objRows.Length
            If Trim(objRows(n).Cells(0).innertext) = "Single Room" Then
                For i = 1 To 7
                    'objRows(n).FireEvent ("onchange")
                    'objRows(n).Cells(i).GetElementsByTagName("input")(0).Focus
                    'SendKeys Format(RstAvailability!roomcount - RstAvailability!RoomsSold, "0") & "{TAB}"
                    objRows(n).Cells(i).GetElementsByTagName("input")(0).Value = Format(RstAvailability!roomcount - RstAvailability!RoomsSold, "0")
                    objRows(n).Cells(i).GetElementsByTagName("input")(0).fireevent ("onchange")
                    Do While IE.ReadyState <> 4 Or IE.Busy = True
                        DoEvents
                    Loop
                 Next i
            End If
            n = n + 1
        Wend
    End If

    Set objButtons = IE.Document.getelementsbyname("savePlanning")
    objButtons(0).Click

    Do While IE.ReadyState <> 4 Or IE.Busy = True
        DoEvents
    Loop

    newtime = Now + TimeValue("0:00:10")
    Do While True
        If Now > newtime Then Exit Do
    Loop

    RstAvailability.MoveNext
Loop
</code>

HTML pól wejściowych to:

<code><tr class="first" roomId="30494" articleId="0" type="Availability" readonly="False">
</code>

<code><div>

  <span class="roomName">

    Single Room

  </span>



</div>
</code>

<code><span class="data">
</code>

<code><input id="Availabilities" name="Availabilities" type="text" value="" />
</code>

<code></span>
</code>

<code><span class="data">
</code>

<code><input id="Availabilities" name="Availabilities" type="text" value="" />
</code>

<code></span>
</code>

Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion