Добавление значения в форму ввода в IE с VBA - PullRequest
0 голосов
/ 06 декабря 2018

У меня проблемы с созданием кода, который вводит данные из столбца в Excel в мои работы. Страница с ценами продажи. Мой цикл для доступа ко всем входам страницы работает правильно, однако у меня возникают проблемы с итерацией по диапазону столбцов, которыйданные в Excel.

Также я не могу опубликовать веб-сайт, который я использую, потому что он требует входа в систему с моей работы.

Я чувствую, что моя проблема здесь

For Each SalePrice In Inputs

    SalePrice.innerText = ThisWorkbook.Sheets("Prices").Range("A1:A69")

Next

Когда я ввожу диапазон в формате «A: A», он не будет вводить текст ячейки в форму браузера.Если я добавлю только один диапазон ячеек, например «А1» или «тест с жестким кодом», он добавит это значение ячейки к входным данным.

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

Я немного новичок в этом, поэтому заранее прошу прощения за что-либо.

Мой код:

Sub Test1()

    Dim ie As Object
    Dim doc As HTMLDocument

    Set ie = CreateObject("InternetExplorer.Application")
    saleNum = InputBox("Enter the Sale Address")

    ie.Visible = True
    ie.navigate "WEBSITE" & saleNum

    Do While ie.Busy

        Application.Wait DateAdd("s", 1, Now)

    Loop

    Set doc = ie.document
    doc.getElementById("check_all").Click

    Dim cells As Range
    Dim SalePrice
    Dim Inputs
    Dim PriceRange As Range

    Set SalePrice = doc.getElementsByName("saleprice")
    Set Inputs = doc.getElementsByName("saleprice")

    For Each SalePrice In Inputs

        SalePrice.innerText = ThisWorkbook.Sheets("Prices").Range("A1:A69")

    Next

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Поскольку здесь вы используете две отдельные коллекции (диапазон рабочей таблицы и элемент saleprice с веб-страницы, я лично предпочел бы инструкцию For i =, а не For Each, и вы можете просто просмотреть каждую коллекцию объектов.используя их индекс.

Dim i As Long
With Inputs
    For i = 0 To .Length - 1
        .Item(i).Value = ThisWorkbook.Sheets("Prices").Cells(i + 1, "A")
    Next
End With
0 голосов
/ 06 декабря 2018

В настоящее время вы пытаетесь передать массив, а не одно значение во время цикла над входными элементами.Предполагая, что есть 69 входных элементов, т.е. количество элементов в Inputs равно 69, и что ваши данные в листе находятся в порядке, который вы хотите ввести, тогда что-то вроде:

Dim i As Long
i = 1
For Each SalePrice In Inputs
    SalePrice.Value = ThisWorkbook.Worksheets("Prices").Range("A" & i).Value
    i = i + 1
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...