Vba 对要在所有行上运行的代码的修改

Vba 对要在所有行上运行的代码的修改,vba,excel,Vba,Excel,我目前对excel电子表格上的一组数据进行了以下编码: Sub DemoMutual2() Dim URL As String Dim ieDoc As Object, dObj As Object Dim cel As Range URL = Range("G2").Value With CreateObject("InternetExplorer.Application") .Visible = False .Navigate URL

我目前对excel电子表格上的一组数据进行了以下编码:

    Sub DemoMutual2()
Dim URL As String
Dim ieDoc As Object, dObj As Object
Dim cel As Range

    URL = Range("G2").Value
    With CreateObject("InternetExplorer.Application")
        .Visible = False
        .Navigate URL

        Do Until .ReadyState = 4: DoEvents: Loop

        Set ieDoc = .Document
        Set dObj = ieDoc.getElementsByClassName("_50f3")
        [K2].Value = Split(ieDoc.getElementsByClassName("_50f3")(0).innerText, " ")(0)
        For i = 0 To dObj.Length - 1
            If InStr(1, dObj(i).getElementsByTagName("a")(0).innerText, "since") Then
                [M2].Value = Trim(Split(dObj(i).getElementsByTagName("a")(0).innerText, "since")(1))
            End If
        Next
        .Quit
    End With
    Set ieDoc = Nothing
    Set dObj = Nothing

End Sub
目前,基于单元格G2中的URL,这只适用于一行。我想让这段代码为G列中的所有URL(G2、G3、G4等)运行,并在代码中指定的单元格(K2、K3、K4等和M2、M3、M4等)中返回所需的结果

所以在G2中搜索URL,并在K2和M2中返回结果 然后是G3,结果是K3和M3,依此类推

目前,这对一行非常有效,但我正在努力更改它,以便可以对多行执行此操作

非常感谢您的帮助。

这是如何工作的

Sub DemoMutual2()
Dim URL     As String
Dim ieDoc As Object, dObj As Object
Dim cel     As Range
Dim lastRow As Long, i As Long, iRow As Long

lastRow = Cells(Rows.Count, 7).End(xlUp).Row

For iRow = 2 To lastRow
    URL = Range("G" & iRow).Value
    With CreateObject("InternetExplorer.Application")
        .Visible = False
        .Navigate URL

        Do Until .ReadyState = 4: DoEvents: Loop

        Set ieDoc = .Document
        Set dObj = ieDoc.getElementsByClassName("_50f3")
        Cells(iRow, 11).Value = Split(ieDoc.getElementsByClassName("_50f3")(0).innerText, " ")(0)
        For i = 0 To dObj.Length - 1
            If InStr(1, dObj(i).getElementsByTagName("a")(0).innerText, "since") Then
                Cells(iRow, 13).Value = Trim(Split(dObj(i).getElementsByTagName("a")(0).innerText, "since")(1))
            End If
        Next i
        .Quit
    End With
    Set ieDoc = Nothing
    Set dObj = Nothing
Next iRow

End Sub

注意:为了提高性能,最好将
IE.Quit
Set ieDoc=Nothing
行移动到整个循环之外,但如果行数不太多,这应该可以工作。

是否有特定的行来运行它,或者希望它从
G2
运行到G列的最后一个单元格?您好,BruceWayne,谢谢你的回复。我希望它一直运行到G列的最后一个单元格,因为工作表中的数据量会有所不同。太棒了,太完美了!谢谢布鲁斯韦恩,事实证明并不是所有的英雄都穿斗篷…或者他们。。。