【问题标题】:VBA pull XML data to ExcelVBA 将 XML 数据提取到 Excel
【发布时间】:2017-02-13 23:05:59
【问题描述】:

一个关于 VBA 的棘手问题 请查看图片以了解您对问题的准确看法

如果您在 Google 上键入“SEC EDGAR”,并在公司搜索字段 中输入 BDX,请单击搜索,然后在搜索结果中单击第一个文档按钮 ,然后选择 10- K 你得到归档细节。如果我们从那里选择 XBRL 实例文档 。最后在 XML 文档中的元素 中,您可以在最后一张图片中看到我们有元素及其名称。

有没有办法通过 VBA 来拉这个东西,然后把它放在我们的 Excel 单元格中 偏爱? 我是 VBA 的初学者,所以请多解释一下代码,以及我们从 VBE 的工具中添加了哪些参考以及原因。

我真正在寻找的是一个代码块,它可以在 XML 元素之间获取数据(**重要提示:XML 实例文档应该位于提供的 Web 位置。)**例如在<Current> 5 </Current)> 中会拉出 5 并填充代码块中指定的单元格和一些指令,这样我就可以抓住它并研究代码****

这个问题已经得到解答。为了使答案中的代码正常工作,您必须在 VBE 的工具上打开 Microsoft XML V6.0-->参考

【问题讨论】:

  • 是的,这是可能的。查看HtmlDocument Class Reference,因为它包含您需要的大部分内容。更具体地说,查看GetElementsByTagName 方法。也许也看看这个previous question
  • 我认为您可以只使用 URL 并在您的问题中截取 2/3 的这些屏幕截图。
  • 同意@RBarryYoung。这在几乎任何编程语言中都是可能的。就个人而言,我可以用 3 种语言做到这一点,但难度各不相同。它被称为网络抓取/提取,您的目标并不是真的“非常”困难,因为您的赏金状态。这只是一点工作。例如,在 Excel 中,可以使用简单的 DOM 工作或通过 Selenium 来完成,您甚至不需要超过 200 行代码。 :)
  • @BK201 我们可以聊聊吗?
  • 我们可以,但我必须承认,除非您非常了解网络抓取的概念,否则我不会花时间。我建议你在 SO 中找到一个例子,理解它,然后回来。 ;)

标签: xml excel vba


【解决方案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

【讨论】:

  • 先生,我感激不尽!我现在必须出发去工作,但一旦我回来,我会认真研究这个答案
猜你喜欢
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 2019-10-13
  • 2021-07-17
相关资源
最近更新 更多