【问题标题】:Extract XBRL facts to Excel将 XBRL 事实提取到 Excel
【发布时间】:2019-06-01 14:35:44
【问题描述】:

我想自动循环浏览数百个 XBRL 文件并收集某些特定的数据并将它们粘贴到 Excel 表中。我设法让“切线代码”工作,但无法回答核心问题。

例如,在 XBRL 文件中,我需要这个事实的值,针对 pfs:GainLossBeforeTaxes 的概念报告:

<pfs:GainLossBeforeTaxes
    unitRef="U-EUR"
    decimals="INF" 
    contextRef="CurrentDuration">1091134.68</pfs:GainLossBeforeTaxes>

==>我需要获取1091134.68

这无疑是使用 Regex 很容易做到的事情,但我似乎无法让它发挥作用。时间限制对我来说也是一件事,所以我想到目前为止获得某种最小可行的产品,然后再扩展它,但在这一点上,代码更多的是达到目的的手段,而不是最终产品(分析)本身。

到目前为止,我想出了以下几点:

Sub EDI_Input()

Dim myFile As String
Dim textline As String
Dim StartPos As Integer
Dim EndPos As Integer

myFile = Application.GetOpenFilename()

Open myFile For Input As #EDI
Do Until EOF(EDI)
Line Input #EDI, textline


If InStr(textline, "NonRecurringFinancialCharges") <> 0 And InStr(textline, "CurrentDuration") <> 0 Then

Endpos = InStr(textline, "</pfs:NonRecurringFinancialCharges><")


result = Left(textline, Endpos - 1)
StartPos = InStr(textline, "Char(34)&CurrentDuration&Char(34)&>")
textline = Left(textline, StartPos + 18)
Debug.Print (textline)

End If

Loop 

我一直在“无效的调用过程或参数错误”上绊倒,这可能是因为我在字符串中加载了许多数据。

任何人对如何获得至少部分工作的程序有任何意见 - 这样我至少可以部分开始我的分析 - 或者为初学者/有此问题经验的教程?

【问题讨论】:

  • 根据您所写的内容,您只需要在字符串中找到第一个数字和点的子字符串。但我怀疑你的书面说明不完整。
  • XBRL 规范可在此处获得:specifications.xbrl.org 这是一个非常好的问题,对于许多查看财务报告的人来说也是一个非常常见的用例。从 XBRL 实例中提取子字符串有点冒险,因为有一种精确的方法可以继续从 XBRL 实例中获取值及其上下文,然后根据数据模型进行过滤。
  • 您使用的是哪个版本的 Excel?您应该能够使用诸如 Arelle 或 Gepsio 之类的开源处理器来完成您正在寻找的事情,具体取决于您使用的 Excel 版本。

标签: excel vba xbrl


【解决方案1】:

欢迎来到 StackOverflow!

我建议使用 XBRL 处理器,例如 Arelle,它是开源的。如果我没记错的话,您应该能够将事实导出为 CSV 等格式并将其导入 Excel。

否则,您最终将在 VBA 中重新实现 XBRL 处理器。为了获得正确的值,需要考虑许多涉及的细节(结合上下文、考虑维度等)。可以针对一个概念报告多个时期的值,等等。

XBRL 处理器开箱即用。

【讨论】:

    猜你喜欢
    • 2021-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    相关资源
    最近更新 更多