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!