Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
Excel 2010 VBA-从网站中提取表格_Vba_Excel - Fatal编程技术网

Excel 2010 VBA-从网站中提取表格

Excel 2010 VBA-从网站中提取表格,vba,excel,Vba,Excel,我是Excel VBA的新手,有人给了我一些代码让我玩。我成功地修改了一次,但后来我尝试再次修改它,但它不会提取正确的信息。可能是因为我不确定表id?我不理解这个例子中的所有代码……这可能是另一个问题。不管怎么说,我正试图从历史价格表中剔除。它提取一些数据,但不是正确的数据。任何帮助都将不胜感激。谢谢 这是我目前的代码: Sub GrabHistData() Dim Ptrtbl As Long, r As Long, c As Long Dim htm As Object

我是Excel VBA的新手,有人给了我一些代码让我玩。我成功地修改了一次,但后来我尝试再次修改它,但它不会提取正确的信息。可能是因为我不确定表id?我不理解这个例子中的所有代码……这可能是另一个问题。不管怎么说,我正试图从历史价格表中剔除。它提取一些数据,但不是正确的数据。任何帮助都将不胜感激。谢谢

这是我目前的代码:

Sub GrabHistData()

    Dim Ptrtbl As Long, r As Long, c As Long
    Dim htm As Object
    Dim elemCollection As Object

    Set htm = CreateObject("htmlFile")

    With CreateObject("msxml2.xmlhttp")
        .Open "GET", "http://finance.yahoo.com/q/hp?s=TWTR&a=04&b=30&c=2012&d=01&e=7&f=2014&g=d", False
        .send
        htm.body.innerhtml = .responsetext
    End With

    Set elemCollection = htm.getElementsByTagName("TABLE")

    Ptrtbl = 1
    For Each elem In elemCollection
        Ptrtbl = Ptrtbl + 1
        If elem.ID <> "yfncsumtab" Then GoTo Nxtelem
        With elemCollection(Ptrtbl)

                For c = 0 To (.Rows(r).Cells.Length - 1)
                    Cells(r + 1, c + 1) = .Rows(r).Cells(c).innertext
                Next c

        End With
        Exit For
Nxtelem:
    Next elem

End Sub
Sub-GrabHistData()
尺寸Ptrtbl为长,r为长,c为长
作为对象的Dim htm
作为对象的暗元素集合
设置htm=CreateObject(“htmlFile”)
使用CreateObject(“msxml2.xmlhttp”)
.打开“获取”http://finance.yahoo.com/q/hp?s=TWTR&a=04&b=30&c=2012&d=01&e=7&f=2014&g=d”“错
邮寄
htm.body.innerhtml=.responsetext
以
Set elemCollection=htm.getElementsByTagName(“表”)
Ptrtbl=1
对于elemCollection中的每个元素
Ptrtbl=Ptrtbl+1
如果元素ID为“yfncsumtab”,则转到NXTLEM
带elemCollection(Ptrtbl)
对于c=0到(.Rows(r).Cells.Length-1)
单元格(r+1,c+1)=.行(r).单元格(c).内部文本
下一个c
以
退出
NXTLEM:
下一个要素
端接头

如果你想坚持你目前的方法,这对我很有用

Sub GrabHistData()
    Dim Ptrtbl As Long, r As Long, c As Long
    Dim htm As Object
    Dim elemCollection As Object

    Set htm = CreateObject("htmlFile")

    With CreateObject("msxml2.xmlhttp")
        .Open "GET", "http://finance.yahoo.com/q/hp?s=TWTR&a=04&b=30&c=2012&d=01&e=7&f=2014&g=d", False
        .send
        htm.body.innerhtml = .responseText
    End With

    Set elemCollection = htm.getElementsByTagName("td")
    For Each itm In elemCollection
        If itm.classname = "yfnc_tabledata1" Then
            ActiveCell = itm.innertext

            If ActiveCell.Column = 7 Then
                ActiveCell.Offset(1, -6).Select
            Else
                ActiveCell.Offset(0, 1).Select
            End If
        End If
    Next
End Sub

会有帮助吗?该页面上有一个“下载到CSV”链接,因此您可以使用
http://ichart.finance.yahoo.com/table.csv?s=TWTR&a=04&b=30&c=2012&d=01&e=7&f=2014&g=d&ignore=.csv
作为路径(与您试图从中获取的URL模式大致相同…)啊,好主意。我非常喜欢firefox元素搜索选项。我现在也看到,csv文件方法可能更容易。谢谢