关于VBA的棘手问题 请参阅图片以准确查看问题
如果您在Google上输入“SEC EDGAR”,并在公司搜索字段中输入BDX,请单击搜索,然后在搜索结果中单击第一个文档按钮{{0}你可以选择10-K来获取文件明细。如果我们选择XBRL实际文件,那就从那里开始。最后在元素中的XML文档中,如上图所示,我们有元素及其名称。
无论如何,通过使用VBA并将其放入我们的Excel单元格来拉动这个东西 偏爱? 我是VBA的初学者,所以请善意再解释一下代码,以及我们从VBE中的工具添加什么参考资料以及为什么。
我真正想要的是一个代码块,用于抓取XML元素之间的数据(**重要:XML实例文档应该位于提供的Web位置。)**例如在<Current>
5 </Current)>
中将拉出5并填充代码块中指定的单元格以及一些指令,以便我可以保留并研究代码****
这个问题已得到答复。为了获得工作中的代码订单,您必须在VBE的工具上使用Microsoft XML,V6.0 - &gt;参考
答案 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