簡體   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