VBA将XML数据提取到Excel

时间:2014-01-28 17:49:06

标签: xml excel vba

关于VBA的棘手问题 请参阅图片以准确查看问题

如果您在Google上输入“SEC EDGAR”Step 1,并在公司搜索字段Step 2中输入BDX,请单击搜索,然后在搜索结果中单击第一个文档按钮{{0}你可以选择10-K来获取文件明细。如果我们选择XBRL实际文件Step 3,那就从那里开始。最后在元素Step 4中的XML文档中,如上图所示,我们有元素及其名称。

无论如何,通过使用VBA并将其放入我们的Excel单元格来拉动这个东西 偏爱? 我是VBA的初学者,所以请善意再解释一下代码,以及我们从VBE中的工具添加什么参考资料以及为什么。

我真正想要的是一个代码块,用于抓取XML元素之间的数据(**重要:XML实例文档应该位于提供的Web位置。)**例如在<Current> 5 </Current)>中将拉出5并填充代码块中指定的单元格以及一些指令,以便我可以保留并研究代码****

这个问题已得到答复。为了获得工作中的代码订单,您必须在VBE的工具上使用Microsoft XML,V6.0 - &gt;参考

1 个答案:

答案 0 :(得分:1)

您仍然应该尝试了解Microsoft XML Core Services (MSXML)但是为了让您入门,您可以从以下内容开始,并根据需要进行修改。如果您需要大量值,则值得循环ChildNodes objXMLNodexbrl,因为许多节点似乎也是重复的。

而不是在我的示例中使用<Current>我使用us-gaap:DebtInstrumentInterestRateStatedPercentage的实际值(您在问题中圈出的那个)

Sub GetNode()
Dim strXMLSite As String
Dim objXMLHTTP As MSXML2.XMLHTTP
Dim objXMLDoc As MSXML2.DOMDocument
Dim objXMLNodexbrl As MSXML2.IXMLDOMNode
Dim objXMLNodeDIIRSP As MSXML2.IXMLDOMNode

Set objXMLHTTP = New MSXML2.XMLHTTP
Set objXMLDoc = New MSXML2.DOMDocument

strXMLSite = "http://www.sec.gov/Archives/edgar/data/10795/000119312513456802/bdx-20130930.xml"

objXMLHTTP.Open "POST", strXMLSite, False
objXMLHTTP.send
objXMLDoc.LoadXML (objXMLHTTP.responseText)

Set objXMLNodexbrl = objXMLDoc.SelectSingleNode("xbrl")

Set objXMLNodeDIIRSP = objXMLNodexbrl.SelectSingleNode("us-gaap:DebtInstrumentInterestRateStatedPercentage")

Worksheets("Sheet1").Range("A1").Value = objXMLNodeDIIRSP.Text
End Sub