Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA从HTML表格中删除单个值并插入Excel单元格_Vba_Excel_Screen Scraping_Forex - Fatal编程技术网

使用VBA从HTML表格中删除单个值并插入Excel单元格

使用VBA从HTML表格中删除单个值并插入Excel单元格,vba,excel,screen-scraping,forex,Vba,Excel,Screen Scraping,Forex,请参阅下面的代码。我正在excel中编译一个不寻常的货币配对列表,我希望用VBA来清理这些数据。我只想将值本身插入单元格。有人知道我哪里出了问题吗?我得到一个“运行时错误'91':对象变量或块变量未设置”。我对VBA比较陌生,对此我有很多想法 Sub ie_open() Dim wb As Workbook Dim ws As Worksheet Dim TxtRng As Range Dim ie As Object Set ie = CreateOb

请参阅下面的代码。我正在excel中编译一个不寻常的货币配对列表,我希望用VBA来清理这些数据。我只想将值本身插入单元格。有人知道我哪里出了问题吗?我得到一个“运行时错误'91':对象变量或块变量未设置”。我对VBA比较陌生,对此我有很多想法

Sub ie_open()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim TxtRng As Range
    Dim ie As Object

    Set ie = CreateObject("INTERNETEXPLORER.APPLICATION")
    ie.NAVIGATE "http://www.barchart.com/quotes/forex/British_Pound/Costa_Rican_Colon/%5EGBPCRC"
    ie.Visible = True

    While ie.ReadyState <> 4
        DoEvents
    Wend

    Set wb = ActiveWorkbook
    Set ws = wb.Sheets("Test Sheet")
    Set TxtRng = ws.Range("A1")
    TxtRng.Value = ie.document.getelementsbyname("divQuotePage").Item.innertext

End Sub
Sub ie_open()
将wb设置为工作簿
将ws设置为工作表
Dim TxtRng As范围
模糊的物体
设置ie=CreateObject(“INTERNETEXPLORER.APPLICATION”)
即“导航”http://www.barchart.com/quotes/forex/British_Pound/Costa_Rican_Colon/%5EGBPCRC"
可见=真实
而ie.ReadyState 4
多芬特
温德
设置wb=ActiveWorkbook
设置ws=wb.Sheets(“测试表”)
设置TxtRng=ws.Range(“A1”)
TxtRng.Value=ie.document.getelementsbyname(“divQuotePage”).Item.innertext
端接头
这是我试图搜集的数据:


谢谢。

我在网页抓取方面不是很在行,但这种错误通常意味着你找的东西不在那里。特别是,我在您提供的屏幕截图中没有看到
divQuotePage

但如果您想要报价(793.19),您可以做如下操作:

Dim V As Variant
Set V = ie.document.getelementbyid("dtaLast")
TxtRng = V.innertext
这会奏效的

子测试() 模糊的物体

Set IE = CreateObject("InternetExplorer.Application")
With IE
    .Visible = True
    .Navigate "http://www.barchart.com/quotes/forex/British_Pound/Costa_Rican_Colon/%5EGBPCRC" ' should work for any URL
    Do Until .ReadyState = 4: DoEvents: Loop

        x = .document.body.innertext
        y = InStr(1, x, "Last Price")
        Z = Mid(x, y, 19)

        Range("A1").Value = Trim(Z)

        .Quit
    End With

End Sub

您可以使用CSS选择器
div.pricechangerow>span.last change
将该元素作为目标; 可以简化为
。上次更改

“.”表示类,您可以使用

Debug.Print ie.document.querySelector.querySelector(".last-change").innerText

这是该网站在2018-06-30的当前版本

您介意分享导致错误消息的行吗?还是我们应该试着去猜?猜测:你没有床单。那会导致那个消息。谢谢,我很快就修改了。现在显示“运行时错误”91:“未设置对象变量或带块变量”。我认为问题在于对html元素的引用。当错误发生时,如果选择调试选项,代码中的特定行应该突出显示。这就是导致错误的那一行。您需要在问题中清楚地表明这一点。将
ie.document.getelementsbyname(“divQuotePage”).Item.innertext
更改为
ie.document.getelementsbyname(“divQuotePage”).Item(0)。innertext
您也可以尝试:
ie.document.getElementById(“dtaLast”).innertHtml