Заполните веб-форму данными из Excel и внесите изменения в журнал

#javascript #excel #vba #webforms

Вопрос:

Я не слишком хорошо разбираюсь в JavaScript и в основном в коде на VB. Я ищу решение того, что, как я думал, будет простой проблемой. У меня есть большой лист с более чем 150 000 строками людей, которые нужно просмотреть в онлайн-базе данных. Мне нужно просмотреть каждую из них в веб-форме и записать количество найденных комбинаций. Есть несколько проблем, которые я не могу преодолеть:

  1. Версия IE, которую мы используем, устарела, и мы не можем обновить ее из-за критической программы, зависящей от архитектуры версии
  2. Веб-страница не будет функционировать в IE из-за устаревшей версии
  3. Мы никак не могли получить прямой доступ к базе данных для выполнения запроса

Процесс, который я себе представляю, заключается в следующем:

 Open Chrome
Nav to webpage
Fill Form with data
Submit Form
Obtain Result
Clear Form
Repeat 3-6 Until Last Row
 

Я знаю, что в моем коде остались важные части головоломки, такие как открытие Chrome, навигация по странице и ожидание загрузки страницы, чтобы проверить результат. Я просто не знаю, с чего начать.

Я мог бы просмотреть рабочий лист и экспортировать однострочные коды JavaScript в текстовый документ, но я не знаю, как написать, как дождаться загрузки браузера, а затем получить результат. Даже если результат зарегистрирован в csv или текстовом файле, я мог бы что-нибудь с ним сделать.

Мои данные похожи на:

фамилия имя дата рождения SSN
Кузнец Джон 1/1/1970 111-11-1111
Кузнец Джонатан 2/2/1990 222-22-2222

Код для экспорта в JS у меня пока есть:

 Public Function GenerateJavascript()

    Dim ws      As Worksheet
    Dim lRow    As Long
    Dim myStr   As String
    Dim myFile  As String

    Set ws = Application.ThisWorkbook.Worksheets("Data")

    lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

    myFile = Application.DefaultFilePath amp; "students.csv"
    Open myFile For Output As #1

    For i = 2 To lRow

        myStr = "document.getElementsByName(" amp; Chr(34) amp; "lnr_lastName" amp; Chr(34) amp; _
        ")(0).value = " amp; Chr(34) amp; ws.Cells(i, 5) amp; Chr(34)     

        Write #1, myStr

        myStr = "document.getElementsByName(" amp; Chr(34) amp; "lnr_firstName" amp; Chr(34) amp; _
        ")(0).value = " amp; Chr(34) amp; ws.Cells(i, 6) amp; Chr(34)

        Write #1, myStr

        myStr = "document.getElementsById(" amp; Chr(34) amp; "searchForm" amp; Chr(34) amp; _
        ").submit()"

        Write #1, myStr
    Next i
End Function
 

Комментарии:

1. Если вы не можете использовать IE, вам нужно посмотреть на Selenium Basic: florentbr.github.io/SeleniumBasic

2. …или, если в базе данных есть API, вы могли бы использовать его.

3. Я не на 100% понимаю, что вы пытаетесь сделать, но если основная проблема в том, что вам нужны данные на листе Excel для запроса, может быть, загрузите данные excel в таблицу данных, а затем запросите их?