Excel VBA - 从网页表导入数据

时间:2014-01-18 08:59:25

标签: excel vba excel-vba

网站http://api.eve-central.com/api/marketstat?typeid=34&usesystem=30000142允许开发人员以下列格式从其网站提取数据:

<evec_api version="2.0" method="marketstat_xml">
    <marketstat>
        <type id="34">
            <buy>
                <volume>22949619736</volume>
                <avg>4.61</avg>
                <max>4.76</max>
                <min>1.72</min>
                <stddev>0.64</stddev>
                <median>4.66</median>
                <percentile>4.75</percentile>
            </buy>
            <sell>
                <volume>18253017309</volume>
                <avg>6.01</avg>
                <max>11.87</max>
                <min>4.79</min>
                <stddev>1.23</stddev>
                <median>6.09</median>
                <percentile>4.81</percentile>
            </sell>
            <all>
                <volume>41214748156</volume>
                <avg>5.23</avg>
                <max>11.87</max>
                <min>0.26</min>
                <stddev>1.32</stddev>
                <median>4.75</median>
                <percentile>4.31</percentile>
            </all>
        </type>
    </marketstat>
</evec_api>

如果我使用“Microsoft Excel 2010” - &gt; “数据” - &gt; “从Web”向导然后一切都以易于使用的方式格式化,但我想在VBA中使用“For Each”循环查询结果。我尝试用它来测试一个结果:

Sub URL_Static_Query()
    Set QT = ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://api.eve-central.com/api/marketstat?typeid=34&usesystem=30000142", _
    Destination:=Range("A1"))
    With QT
        .EnableEditing = False
        .BackgroundQuery = True
        .Refresh BackgroundQuery:=False
        .SaveData = False
    End With
End Sub

当我调用此函数时,它的格式与使用向导的方式大不相同。这使得处理信息变得更加困难,尤其是在同一张纸上从几个不同的网页查询时。

我的主要目标是仅在没有任何列或行标题的情况下提取买入和卖出结果;那些我可以手动输入的。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

经过数小时和数小时的搜索,我终于从http://www.mrexcel.com/forum/excel-questions/697000-importing-web-xml-data.html找到了我的问题的答案。

代码是:

 ActiveWorkbook.XmlImport URL:= _
        "http://api.eve-central.com/api/marketstat?typeid=34&usesystem=30000142", _                            
        ImportMap:=Nothing, _
        Overwrite:=True, Destination:=Range("$A$1")

谢谢chis neilsen的建议!它确实帮助我最终找到了我需要的东西。

相关问题