2014-01-28 101 views
1

在VBA 请看图片的问题VBA拉XML数据到Excel

您准确地了解如果你在谷歌“SEC EDGAR” Step 1类型,你在公司的搜索领域Step 2进入BDX一个棘手的问题单击“搜索”,然后在搜索结果中单击第一个“文档”按钮Step 3,然后选择10-K,即可获取归档细节。如果我们选择XBRL INSTANCE DOCUMENT Step 4,那么从那里开始。最后,在元素Million Pains-For-Me Question中的XML文档中,您可以在上一张图片中看到我们的元素,它的名称。

有没有办法通过使用VBA来拉这个东西,并把它放在我们的 偏好的Excel单元中? 我是VBA的初学者,所以请客气一点,再解释一下代码,以及我们在VBE中为工具添加的参考以及为什么。

什么实际上我正在寻找是抓住XML元素之间的数据的码块(**重要:XML实例文档应当在提供的Web位置。)**例如在东西,将拉5和填充代码块中指定的单元格和一些指令,所以我可以坚持下去,并研究代码****

这个问题得到了回答。为了解决这个问题,你必须在VBE的Tools上使用Microsoft XML V6.0 - >参考文献

+2

是的,它是可能的。查看[HtmlDocument类参考](http://msdn.microsoft.com/en-us/library/System.Windows.Forms.HtmlDocument(v = vs.110).aspx),因为它包含了大部分你我需要。更具体地说,看看'GetElementsByTagName'方法。也许也看看这个[上一个问题](http://stackoverflow.com/questions/7393236/reading-web-pages-using-excel-vba) –

+2

我认为你可以只使用一个URL并截掉2/3的这些截图在你的问题中。 – RBarryYoung

+1

同意@RBarryYoung。几乎所有的编程语言都可以这样做。就我个人而言,我可以用三种语言来做到这一点,但有各种困难。这就是所谓的网页抓取/提取,你的目标是做什么并不真正“非常”困难,因为你的赏金状态。这只是一些工作。例如,在Excel中,可以使用简单的DOM工作或通过Selenium来完成,而且甚至不需要超过200行代码。 :) – Manhattan

回答

1

你仍应该尝试并了解Microsoft XML Core Services (MSXML),但为了让你开始你可以开始并根据需要进行修改。如果你需要很多值,那么将会有一个值得循环的ChildNodesobjXMLNodexbrl,因为许多节点似乎也被复制了。

,而不是我的样品中使用<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 
+0

先生,我不能够感谢你!我现在必须离开工作,但只要我回来,我会研究这个答案的骨头 – ExoticBirdsMerchant