【发布时间】:2018-01-31 21:33:05
【问题描述】:
我有一个代码可以导航到一个网站并填写一个包含 33 个输入的表单。
这是代码:
Dim i As Long
Dim IE As Object
Dim objCollection As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "https://mylink.com"
Do While IE.Busy: DoEvents: Loop
Do While IE.ReadyState <> 4: DoEvents: Loop
Set objCollection = IE.Document.getElementsByTagName("input")
For i = 0 To objCollection.Length
objCollection(i).innertext = "Test " & i
Next i
Set IE = Nothing
Set objElement = Nothing
Set objCollection = Nothing
现在,这就像一个魅力。没有一个错误。
输入1接收“Test 1”;输入2接收“Test 2”; ... ; 输入33接收“Test 33”;
但是,我需要传递的实际数据在我的工作表中,范围为 AI43:AI75
如果我改变这部分
For i = 0 To objCollection.Length
objCollection(i).innertext = "Test " & i
Next i
到这里
j = 1
For i = 0 To objCollection.Length
objCollection(i).innertext = Range("AI" & 42 + j).Text
j = j + 1
Next i
输出,每次都不一样,而且总是错的。输入的顺序变得疯狂,一些输入保持空白。
例子:输入1接收“数据1”,输入2接收“数据2”,输入3 接收到“数据 30”,输入 4 没有接收到,输入 5 接收到“数据” 10 英寸。
每次我运行它,输出都是不同的。任何想法为什么?想不通。
【问题讨论】:
-
为什么要使用
j?为什么不只是43 + i? -
@ScottHoltzman 你不知道你的处理器完成的数学方程越多,效率就越高?
-
@K.Dᴀᴠɪs - 我想我在那堂课上睡着了。
-
@K.Dᴀᴠɪs 相同的输出。没有任何改变
-
@K.Dᴀᴠɪs 对不起,我写错了。我做了 j = j + 1
标签: vba excel ie-automation