Excel VBA скрипт для предварительного заполнения онлайн формы с помощью IE?

Я нуждаюсь в помощи. Я пытаюсь написать сценарий VBA, который будет принимать значение в столбце A и помещать его в онлайн-форму в элемент ввода без идентификатора, кроме имени ("OLDURL»). Затем сценарий VBA будет принимать значение в соседней ячейке в столбце B и помещать его в ту же форму ("digiSHOP») в поле ввода с именем ("NEWURL»).

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

Sub Redirect()
Dim IE As Object
Dim doc As Object
Dim form As Object
Dim OldURL As Object
Dim NewURL As Object

Set IE = CreateObject("InternetExplorer.Application")

With IE
    .Visible = True
    .Navigate "https://...."

    Do Until .ReadyState = 4: DoEvents: Loop

    Set doc = IE.Document
    Set form = doc.forms("digiSHOP")
    Set OldURL = doc.getElementById("OldUrl")'Error occurs here. Element has no ID
    OldURL.Value = Range("A2")
    Set NewURL = doc.getElementById("NewUrl")
    NewURL.Value = Range("B2")
    form.submit

    Do Until .ReadyState = 4: DoEvents: Loop
    Do While .Busy: DoEvents: Loop

    End With
End Sub

Тоже я не былне уверен, как нацелиться на весь столбец и зациклить его, поэтому значение устанавливается в ячейку A2. Это было больше, чтобы проверить сценарий.

 Tim Williams21 мая 2013 г., 06:19
Пытатьсяform.elements("OldUrl").Value = Range("A2")Value

Ответы на вопрос(1)

Решение Вопроса
Sub Redirect()
Dim IE As Object
Dim doc As Object

    Set IE = CreateObject("InternetExplorer.Application")

    With IE
        .Visible = True
        .Navigate "https://...."

        Do Until .ReadyState = 4: DoEvents: Loop

        With .Document.forms("digiSHOP")
            .elements("OldUrl").Value = Range("A2")
            .elements("NewUrl").Value = Range("B2")
            .submit
        End With

        Do Until .ReadyState = 4: DoEvents: Loop
        Do While .Busy: DoEvents: Loop

    End With
End Sub
 user230092323 мая 2013 г., 02:28
Это сработало, спасибо, Тим. Код был прост для чтения, и теперь я знаю, как нацеливать элементы по имени. Еще раз спасибо!

Ваш ответ на вопрос