繁体   English   中英

我需要使用html宏在VBA中从excel输入一列的帮助。

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM