首页 > 解决方案 > Excel:VBA:如何使脚本动态化?

问题描述

我有以下脚本:

Sub Test1()

Dim IE As Object
Set IE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")

IE.Visible = True
IE.navigate "https://share.amazon.com/sites/IPV/Lists/IPV%20Appeals%20tracker/NewForm.aspx?Source=https%3A%2F%2Fshare%2Eamazon%2Ecom%2Fsites%2FIPV%2FLists%2FIPV%2520Appeals%2520tracker%2FAllItems%2Easpx&RootFolder="

Do While IE.Busy
    Application.Wait DateAdd("s", 1, Now)
Loop

IE.document.getElementById("Title_fa564e0f-0c70-4ab9-b863-0177e6ddd247_$TextField").Value = ThisWorkbook.Sheets("sheet1").Range("a1")
IE.document.getElementById("Seller_x0020_ID_2b32b5fa-ace8-44d5-bba5-5c0e321671ed_$TextField").Value = ThisWorkbook.Sheets("sheet1").Range("b1")
IE.document.getElementById("Seller_bba5-5c0e321671ed_$TextField").Value = ThisWorkbook.Sheets("sheet1").Range("c1")
IE.document.getElementById("Seller_bba5-5c0e321671ed_$TextField").Value = ThisWorkbook.Sheets("sheet1").Range("d1")
IE.document.getElementById("Seller_bba5-5c0e321671ed_$TextField").Value = ThisWorkbook.Sheets("sheet1").Range("e1")

结束子

该脚本假设在 excel 中复制以下行范围内的值并自动填充网站表单。这样做的问题是我只将它应用于第一行,但我想要一种能够选择将其应用于哪一行的方法。

我希望我的解释是有道理的。

标签: htmlexcelvbascript

解决方案


在行号中连接,例如

Dim rowNumber As Long

rowNumber = 2

IE.document.getElementById("Title_fa564e0f-0c70-4ab9-b863-0177e6ddd247_$TextField").Value = ThisWorkbook.Sheets("sheet1").Range("A" & rowNumber)

如果在循环中使用,那么您将在循环变量中连接并使 id 也是一个变量。

其他物品的原理相同。

您还可以从单元格中选择行号

IE.document.getElementById("Title_fa564e0f-0c70-4ab9-b863-0177e6ddd247_$TextField").Value = ThisWorkbook.Sheets("sheet1").Range("A" & ActiveSheet.Range("A1").value)

避免使用 ActiveSheet 并使用实际的工作表名称。


推荐阅读