Как использовать VBA для ввода текста в Google и нажмите кнопку поиска - PullRequest
0 голосов
/ 29 августа 2018

Моя конечная цель - автоматизировать использование VBA для открытия браузера и ввода имени пользователя и пароля для веб-сайта, а затем нажать кнопку «Войти» для дальнейшей навигации по различным страницам и загрузки файлов!

Я хочу начать с самой простой пробной версии поиска Google! Я думаю, что идея будет похожа, потому что оба требуют ввода чего-то и щелкнуть что-то.

Я нашел в IE -> Инструменты (Alt + X) -> Инструменты разработчика F12, которые могут отображать HTML-коды веб-сайтов, и, что еще удобнее, кажется, я могу выбирать регионы и получать ключевые слова, которые меня интересуют! Вот 2 скриншота из этих регионов, первый для панели поиска , я нашел "input name = "q", , а второй для кнопки поиска , где я нашел "input name = "btnK".

А вот и мои коды:

Sub test()

Set IE = CreateObject("InternetExplorer.Application")
my_url = "https://www.google.ca/?gws_rd=ssl"
IE.Visible = True
IE.navigate my_url

'For example, if I want to search "123"
IE.Document.getElementById("q").Value = "123"

'Click the "Search" button
IE.Document.getElementById("btnK").Click


End Sub

Возвращает ошибку при IE.Document.getElementById("q").Value = "123",

Ошибка метода «Документ» объекта «iwebbrowser2».

Не понимаю, где что-то пошло не так. Я действительно новичок в том, как использовать VBA для управления браузерами ... Пожалуйста, помогите, спасибо всем!

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Убедитесь, что вы используете правильный синтаксис ожидания, чтобы страница загрузилась. Вам также не нужно зацикливаться, чтобы отправить форму. Просто отправьте прямо с

.forms(0).submit

Код:

Option Explicit
Public Sub test()
    Const MY_URL = "https://www.google.ca/?gws_rd=ssl"
    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .navigate MY_URL
        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document
            .getElementById("lst-ib").Value = "123"
            .forms(0).submit
        End With
        'Other code
        '.Quit  '<== Uncomment me later
    End With
End Sub
0 голосов
/ 29 августа 2018

Имя элемента HTML не совпадает с идентификатором.

Например, "q" - это не идентификатор панели поиска, а ее имя. Это ID "lst-ib"

Добавляем код:

Sub test()

    Dim ie As Object

    Set ie = CreateObject("InternetExplorer.Application")
    my_url = "https://www.google.ca/?gws_rd=ssl"
    ie.Visible = True
    ie.navigate my_url

    Do While ie.Busy
        DoEvents
    Loop
    Wait 3

    'For example, if I want to search "123"
    ie.Document.getElementById("lst-ib").Value = "123"

    ' Pressing enter
    SendKeys "{ENTER}"

End Sub

Sub Wait(seconds As Integer)

    Application.Wait Now + timeValue("00:00:0" & CStr(seconds))

End Sub
...