Нажатие кнопки отправки VBA

1

Я получаю ошибку времени выполнения "438" (объект не поддерживает это свойство или метод) при попытке щелкнуть по кнопке с помощью VBA на веб-сайте PHP, и я занимаюсь поиском в течение последних нескольких часов и не могу найти путь вокруг него.

Этот код ниже делает все, в чем я нуждаюсь, но не могу найти, как нажать кнопку без ее провала, попробовал следующее:

IE.Document.getElementsByName("Calculate").Click
IE.Document.getElementsByID
IE.Document.getElementsByClassName

и т.д. все терпят неудачу.

Код для кнопки, как я вижу, приведен ниже:

<button onclick="calculate();" class="btn btn-primary">Calculate</button>

Поэтому при использовании ByClassName я использовал btn btn-primary и по имени я использовал Calculate. Я теряю голову сейчас, какие-то идеи? Код ниже:

ps, используя IE11, если это имеет значение.

    Sub testWeb()
    Dim sht As Worksheet
    Dim IE As Object

    Dim Item As Variant
    Dim objElement As Object

    Set sht = ActiveSheet
    Set IE = CreateObject("InternetExplorer.Application")
    'Open IE
    IE.Visible = True
    IE.Navigate "http://www.doogal.co.uk/DrivingDistances.php"

    'Wait until site is loaded
    Do While IE.ReadyState <> 4 'READYSTATE_COMPLETE
        DoEvents
    Loop


    IE.Document.getElementById("startLocs").Value = "TEST"
    IE.Document.getElementById("endLocs").Value = "TEST1"
    IE.Document.getElementsByName("Calculate").Click

    IE.Document.forms(1).submit    


End Sub
  • 1
    Есть ли конкретная причина, по которой вы используете VBS на веб-сайте? Потому что, если нет, пожалуйста, не .. Перейти на JavaScript. VBS походит на злого маленького недоедающего брата JS, которого никто не любит.
  • 0
    Это пробел в знаниях, приятель :), мне нужна информация в Excel, поэтому я использую то, что я знаю, чтобы вставить эти данные.
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

У вас есть 2 проблемы с отправленным кодом.

  1. Метод .getElementsByName возвращает коллекцию элементов. Вам нужно будет выяснить, какой элемент является элементом, который вы хотите щелкнуть. Таким образом, ваш код должен выглядеть примерно так:

    IE.Document.getElementsByName("Calculate").Item(5).Click

  2. Если HTML, который вы отправили, находится с фактического сайта, то <BUTTON> не имеет свойства name, поэтому он не будет в коллекции элементов, возвращаемых getElementsByName.

Возможно, вам придется исследовать другой метод поиска вашего элемента DOM. ИДК сколько кнопки на форме, и я не знаю, какой класс присваивается каждой кнопке, но, возможно, вы можете getElementsByTagName затем цикл по каждому item, глядя на его .class собственности или вы могли бы getElementsByClassName и петля через эту коллекцию, пока вы не найдете элемент кнопки .type.

  • 0
    Бум, ты легенда :). Мне нужен был ByClassName и .Item (0) .click вместо щелчка. Бум :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню