【发布时间】: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 版本。