[英]I need help inputting a column from excel in VBA with html macro.
我选择了2个单元,并将它们命名为“ perch”和“ stats”。 使用我在单元格中输入的内容,我能够进行搜索并从html代码(为了安全起见更改)中检索所需的数据。 但是我的问题是要输入整个列,而不仅仅是单个单元格。 并在单个列中产生多个结果。 另外,输入的数量将定期更改〜300,因此我无法指定特定范围。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = Range("perch").Row And _
Target.Column = Range("perch").Column Then
Dim IE As New InternetExplorer
'IE.Visible = True
IE.navigate "http://"google/not_real_link"
Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE
Dim Doc As HTMLDocument
Set Doc = IE.document
Dim sTD As String
sTD = Trim(Doc.getElementsByTagName("td")(33).innerText)
IE.Quit
Range("stats").Value = sTD
End If
End Sub
你通常会看到Worksheet_SelectionChange
instaed使用的事件Worksheet_Change
。
以下是使用这些事件的一些技巧:
关闭EnableEvents。 如果不这样做,您可能会重新触发该事件并陷入无限循环
使用“ Intersect
方法来测试您的范围和“目标”是否相交。
您应该使用Target.Cells.Count来查看是否有多个细胞受到影响。
私有子Worksheet_SelectionChange(ByVal目标作为范围)如果不相交(Target,Range(“ perch”))不存在,则Application.EnableEvents = False
Application.EnableEvents = True
End If
结束子
我不太确定您要如何处理多个值。
创建将值添加到列表末尾的函数通常会有所帮助。
Sub AddStatusRow(value As Variant)
Const StatColumn = 5
Dim lastRow As Long
lastRow = Range(Cells(1, StatColumn), Cells(Rows.count, StatColumn)).End(xlUp).Row + 1
Cells(lastRow, StatColumn) = value
End Sub
您可能要考虑遍历表的行而不是Doc.getElementsByTagName("td")(33).innerText
。
您可以从下面的URL中找到许多您想做的很好的例子。
http://www.tushar-mehta.com/publish_train/xl_vba_cases/vba_web_pages_services/index.htm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.