Я бы дал селеновую базовую оболочку для vba, если вам разрешено установить. После установки вы добавляете ссылку на библиотеку типов селена через vbe> инструмент> ссылки. Вам нужна последняя версия Chrome для установки и chromedriver, а chromedriver.exe должен находиться в той же папке, что и исполняемые файлы Selen.
Тогда синтаксис вашей задачи будет приятным и описательным. Я не добавил петлю для vins, но показаны основные элементы для поиска. Я предоставляю подпрограмму для записи результатов на рабочий лист.
Я хотел бы иметь возможность убрать явное ожидание после SendKeys, но я не вижу каких-либо событий / изменений на странице, которые я могу отслеживать, чтобы определить, когда нажимать кнопку и включить отправленный vin. Ожидание в 1 секунду кажется достаточным. Вы можете уменьшить это в зависимости от того, сколько поисков вы выполняете.
Option Explicit
Public Sub SearchVins()
Dim d As WebDriver, hTable As Object, ws As Worksheet, t As Date
Dim headers(), vin As String
Const MAX_WAIT_SEC As Long = 10
Set d = New ChromeDriver
Set ws = ThisWorkbook.Worksheets("Sheet1")
Const URL = "https://www.autoreturn.com/indianapolis-in/find-vehicle/"
headers = Array("License", "State", "Make", "Model", "Color", "Vin", "Status", "Tow date and Time")
vin = "1G4HD57287U218052"
With d
.Start "Chrome"
.get URL
.FindElementById("vin").SendKeys vin '<== vin
Application.Wait Now + TimeSerial(0, 0, 1)
.FindElementByCss("[onclick='submitVin()']").Click
t = Timer
Do
DoEvents
On Error Resume Next
Set hTable = .FindElementByCss("table") 'use tag name of results table to target table
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While hTable Is Nothing
'do something with results
If Not hTable Is Nothing Then
WriteTable hTable, LastRow(ws) + 2, ws
Set hTable = Nothing
End If
.FindElementByCss("a.more-link").Click '<== search again button
'Another search for example.....
Stop '<==Delete me later
ws.Cells(2, 2).Resize(1, UBound(headers) + 1) = headers '<== Finally add headers
.Quit
End With
End Sub
Public Sub WriteTable(ByVal hTable As Object, ByVal startRow As Long, ByVal ws As Worksheet)
Dim tr As Object, td As Object, r As Long, c As Long
r = startRow
For Each tr In hTable.FindElementsByTag("tr")
c = 1
For Each td In tr.FindElementsByTag("td")
ws.Cells(r, c) = td.Text
c = c + 1
Next
r = r + 1
Next
End Sub
Public Function LastRow(ByVal sh As Worksheet) As Long
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
Если Вы серьезно относитесь к программированию, я думаю, учась C, действительно важно. Это - основа многих языков, и Вы встретитесь с большим количеством исходного кода, записанного в C. Однако мы могли сказать так о Java, C++, и т.д.
По моему скромному мнению, я думаю, что необходимо только продолжить писать модули и изучать новые вещи, поскольку Вам нужны они. Это - лучший способ изучить вещи
Если бы Вы не собираетесь быть использованием C ни для чего больше, я рекомендовал бы переключению на Java, поскольку это - параллелизм, намного легче (по-моему, по крайней мере).
Это также имеет очень крупную стандартную библиотеку, которая очень легка работать с и вероятно значительно ускорит Вашу разработку.
Возможно, я - немного модернист, но если бы Вы собираетесь изучить C правильно, я не рекомендовал бы запуститься с K&R. Почему исследование устаревший стандарт? Заберите книгу, которая преподает Вам стандарт C99, и извлеките уроки из этого. Так как Вы уже немного знакомы, возможно, C Краткая информация Плюс или что-то подобное.
Прочитайте книгу.Вы не пожалеете, что сделали это. Это представит Вас большому количеству материала, с которым Вы иначе не столкнулись бы. Вы будете представлены всем функциям языка, вместо того, чтобы иметь необходимость споткнуться через них, когда Вы будете думать, что Вам нужны они.
Я прогрессировал от ОСНОВНОГО до ФОРТРАНА затем Java и в настоящее время главным образом использование комбинаций PHP и Perl. Я действительно никогда не использовал C кроме бездельничания с модулями Apache, но какой бы ни язык, который Вы действительно изучаете лучший способ выучить, путем выполнения.
Используйте книгу, чтобы представить Вас языку, но изучить это практически.
Я определенно рекомендовал бы получить Язык программирования C (K&R). Это - очень краткая и полезная ссылка на C. Если бы Вы находите приобретение знаний из K&R немного трудно, я не смущался бы получать более нежную книгу по языку, но K&R является книгой, Вы будете возвращаться, к тому, когда существует что-то, в чем Вы не уверены.
Кроме того, стоит указать, что поточное программирование открывает совершенно новый мир потенциальных проблем, таким образом, я определенно рекомендовал бы заставить книгу изучать, как сделать это правильно также.
Я сказал бы, что никогда не повреждает изучать что-то правильно. И основательное понимание C будет определенно далее Ваше понимание программирования.
Не имеет значения при использовании самого языка в будущем, но для понимания, что происходит под капотом, его бесценным.
Я сказал бы, что для каждого программиста важно освоить понятия низкого уровня, которые важны в C, как указатели и ручное управление памятью. Это дает Вам огромное понимание, как вещи действительно работают, и полезно, программируя в более высоких уровнях. Однако, если Вы не будете использовать C регулярно, я не вижу точки в действительно освоении целого языка. Например, я не провел бы слишком много времени на стандартной библиотеке или при изучении, как разработать нетривиальные проекты в C. Просто придерживайтесь ключевых понятий.
Даже если у Вас нет плана программировать в C в будущем, или даже Вы уверены, что никогда не должны будете разрабатывать на некоторых c-related языках, я рекомендовал бы так или иначе книгу K&R по историческим причинам: это - хорошая практика для изучения от известных ведущих устройств искусства.
Я настоятельно рекомендовал бы ту книгу. Даже если Вы не видите, что себя используете C в будущем, Вы никогда не знаете, можете ли Вы иметь к, и это - идеальная книга для получения еще некоторого опыта/знания для C с.
И, как упомянуто выше C основа многих других популярных языков, поэтому даже если Вы не заканчиваете тем, что использовали C больше, можно закончить использование одного из него преемники.
Только изучите столько, сколько Вы должны.
Вы не должны проводить время, чтобы считать Язык программирования C и изучить каждую функцию языка для него, чтобы быть полезными. Используйте Язык программирования C в качестве взгляда инструмент, поскольку Вам нужен он. Если Вы начинаете программировать в c чаще, то вкладываете капитал, время учит язык более тщательно.
Кажется, что Вы уже вполне успеваете. Что относительно открытого определения источника тех модулей и просьбы об обратной связи от сообщества?
Лучший способ выучить язык программирования при помощи его. Так выходить вперед и на самом деле запись апачских модулей в C являются хорошим подходом. Если Вы, однако, хотите погрузиться глубже в тот язык, необходимо сделать несколько вещей:
При разговоре от моей "карьеры" я также запустил с PHP и закончил в C. Чтение книг (я могу настоятельно рекомендовать "Опытное Программирование C" липой Peter van der, которая, к сожалению, распродана) даст Вам более глубокое понимание inners языка и таким образом сделает Вас лучшим программистом. Я не знаю каждую страницу K&R, но я никогда не сожалел, что использовал и стал довольным им (я думаю, что скорее использовал его, чем чтение он - это не учебник, а ссылка, по-моему).
Я думаю реальные проблемы, с которыми Вы сталкиваетесь, вот:
1) действительно ли C подходит для задачи, которую Вы делаете?
2) необходимо ли увеличить знание языка C, когда требования изменяются?
Для вопроса 1, возможно, существуют альтернативы C для Вашего приложения. Необходимо произвести изображения .png, и необходимо справиться с поточной обработкой: возможно, Java или Python являются лучшими альтернативами C (.png, вывод является несколькими строками на обоих языках, в то время как я думаю, что Вам нужны внешние библиотеки и такой в C. То же самое для поточной обработки.
Для вопроса 2, если Вы сохраняетесь в использовании C, вероятно, лучше изучить язык больше подробно, если Вы хотите избежать ловушек, когда сложность увеличивается (expecially для низкоуровневого языка как C).