#javascript #excel #vba #webforms
Вопрос:
Я не слишком хорошо разбираюсь в JavaScript и в основном в коде на VB. Я ищу решение того, что, как я думал, будет простой проблемой. У меня есть большой лист с более чем 150 000 строками людей, которые нужно просмотреть в онлайн-базе данных. Мне нужно просмотреть каждую из них в веб-форме и записать количество найденных комбинаций. Есть несколько проблем, которые я не могу преодолеть:
- Версия IE, которую мы используем, устарела, и мы не можем обновить ее из-за критической программы, зависящей от архитектуры версии
- Веб-страница не будет функционировать в IE из-за устаревшей версии
- Мы никак не могли получить прямой доступ к базе данных для выполнения запроса
Процесс, который я себе представляю, заключается в следующем:
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 в таблицу данных, а затем запросите их?