使用VBA在IE中的输入表单中添加值

时间:2018-12-06 16:44:39

标签: excel vba

我在创建代码时无法从excel的列中输入数据进入我的作品销售定价页面。我的循环访问页面的所有输入均能正常工作,但是,在遍历该列范围时遇到了麻烦数据在excel中。

我也无法发布我正在使用的网站,因为它需要我的工作登录。

我觉得我的问题在这里

For Each SalePrice In Inputs

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

Next

当我以“ A:A”格式输入范围时,它将不会在浏览器表单中输入单元格文本。如果我只添加一个像“ A1”或硬编码“ test”这样的单元格区域,它将将该单元格值添加到输入中。

有人对我如何从列范围内的每个单元格提取数据并将其输入表格有任何建议吗?

对此我有点陌生,所以我对任何事情表示歉意。

我的代码:

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 :(得分:1)

您当前正在尝试在输入元素的循环期间传递数组,而不是传递单个值。假设有69个输入元素,即“输入”中的元素数为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

答案 1 :(得分:1)

由于您在这里使用了两个单独的集合(工作表范围和网页中的this.canvasContext = canvas.getContext('2d'); // ^-- Missing `this` here 元素,因此我个人希望使用this.语句而不是saleprice,并且您可以只需使用它们的索引遍历每个对象集合。

For i =