Automatización de Internet Explorer con eventos de entrada VBA

Estoy tratando de usar la automatización desde Microsoft Access 2003 para controlar Internet Explorer 9 para completar un formulario usando datos de la base de datos.

La entrada activa un evento en el navegador que valida los datos y hace que el botón Guardar esté visible. Si uso sendkeys, el evento se activa; sin embargo, he encontrado que las claves de envío son muy poco confiables. Si cambio el valor del elemento y luego uso .fireevent ("onchange"), no ocurre nada, ni siquiera un error.

Mi pregunta es, ¿cómo puedo despedir el evento? O, ¿cómo puedo saber qué javascript está ejecutando. ¿Hay un tipo de complemento de depuración para IE que me diga qué evento se activa? Si es así, ¿puedo ejecutar el script yo mismo?

Mi código está abajo.

<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>

Los html de los campos de entrada son:

<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>

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta