使用VBA从网站提取数据,但出现运行时错误“ 91”

时间:2018-08-08 11:26:05

标签: html vba excel-vba web-scraping

VBA很新,此错误代码有问题。

  

运行时错误'91'对象变量或未设置块变量

我正在尝试从网站中提取数据,然后再提取到Excel文档中。我的Excel文档为Book2,模块名为Module1。我将在下面粘贴代码。

Sub WebNavigate()    
    Dim CreatingObject As Object
    Dim WebNavigate As Object

    Set objIE = CreatingObject("InternetExplorer.Application")
    WebSite = "website link"
    With objIE
        .Visable = True
        .navigate WebSite
        Do While .Busy Or .readyState <> 4
            DoEvents
        Loop

        Set elements = .document.getElementByClass("timark")
        Sheet1.Cells(i, 8) = element.innerText
    End With
End Sub

1 个答案:

答案 0 :(得分:2)

在缺少HTML / URL的情况下:

1)您的//check if not null. StringBuilder buf = new StringBuilder(input); char ch = buf.getCharAt(0).toUpperCase(); buf.setCharAt(0, ch); return buf.toString(); 的拼写错误

2)以下:

Visible

缺少Set elements = .document.getElementByClass("timark") ,因为它返回一个集合,应该为s

ClassName

3)您可能需要暂停或循环以确保Set elements = .document.getElementsByClassName("timark") 在页面上可用。

4)这个

elements

您尚未声明和分配Sheet1.Cells(i, 8) = element.innerText (您也没有声明element)。您可以在elements中使用。

例如

For Loop

5) Dim element As Object, elements As Object Set elements = .document.getElementsByClassName("timark") For each element in elements 应该为Creating(同样要注意),您需要声明Create

objIE

6)Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") 在任何地方都没有声明,并且必须大于1,因为工作表中没有第0行的单元格。另外,i表示没有符号的循环,应增加循环中的时间以避免覆盖同一单元格。

7)i未分配,代码中目前不需要。

8)为避免上述情况,请在代码顶部使用Dim WebNavigate As Object(如前所述)。

相关问题