html - 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 中复制以下行范围内的值并自动填充网站表单。这样做的问题是我只将它应用于第一行,但我想要一种能够选择将其应用于哪一行的方法。
我希望我的解释是有道理的。
解决方案
在行号中连接,例如
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 并使用实际的工作表名称。
推荐阅读
- c# - 为什么改变是一个数组数据改变了C#中另一个数组的值
- php - 与数据库的连接在读取通信数据包时出错
- keycloak - 在 Keycloak 7.x 中访问用户资源、策略和权限
- chart.js - 在chart.js中将y轴旋转到顶部,将x轴旋转到左边
- shell - 堆栈安装 curl 失败
- hibernate - 如何使用许多 @ManyToOne 优化 Hibernate 对象图的插入?
- angular - Rxjs map() 函数的参数为空
- php - nginx 404 中的 levrage 缓存未找到错误
- c# - 如何使用 WriteableBitmap 绘制一个矩形?
- javascript - 如何过滤掉字符串以仅包含香草Javascript中的字母?