【问题标题】:VBA Pulling Data with a Schema FileVBA 使用模式文件提取数据
【发布时间】:2014-02-23 19:22:05
【问题描述】:

我下面有这段代码

Option Explicit

Sub MadMule2()
    Dim IE As InternetExplorer
    Dim el
    Dim els
    Dim colDocLinks As New Collection
    Dim Ticker As String
    Dim lnk
    Dim intCounter as Integer    

    Set IE = New InternetExplorer

    IE.Visible = False

    Ticker = Worksheets("Sheet1").Range("A1").Value

    LoadPage IE, "https://www.sec.gov/cgi-bin/browse-edgar?" & _
                  "action=getcompany&CIK=" & Ticker & "&type=10-Q" & _
                  "&dateb=&owner=exclude&count=20"

    Set els = IE.document.getElementsByTagName("a")
    For Each el In els
        If Trim(el.innerText) = "Documents" Then
            colDocLinks.Add el.href
        End If
    Next el

    intCounter = 1

     For Each lnk In colDocLinks
        LoadPage IE, CStr(lnk)
        For Each el In IE.document.getElementsByTagName("a")
            If el.href Like "*[0-9].xml" Then
                ActiveWorkbook.XmlMaps.Add(el, "xbrl").Name = "xbrl Map"
            End If
        Next el
    Next lnk
End Sub

Sub LoadPage(IE As InternetExplorer, URL As String)
    IE.navigate URL
    Do While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
End Sub

user2140261的这条评论


另外,当您的网站已经为您制作了一个架构时,您为什么还要使用 XML 文件来获取架构?当已经制作了一个时,让 excel 猜测制作一个是没有意义的。 AS excel 可能会做错,而您可能永远也不会发现它的错误。


让我尝试通过简单地更改以下语句,使用数据机构的架构将 XML 映射创建到 Excel 中:

If el.href Like "*.xsd" Then

还有这句话

ActiveWorkbook.XmlMaps.Add(el, "Schema").Name = "xbrl Map " & intCounter 

但是,当我尝试这样做时(通过转到 XML 任务窗格,推送 Source,然后是 XML Maps)我得到了这个:

这怎么可能?我打开Schema file,看到根节点是一个,它是Schema

虽然这是合理的:...当已经制作了一个时,让 excel 猜测制作一个(当您只导入 XML 文件时 Excel 会为您制作一个架构)是没有意义的。

当我导入XML file 时,我创建了一个根节点。这是根节点xbrl,它让我很容易理解事情。现在我得到了第一张图片中的碎片加上惊人的长运行时间。

  • 你认为我应该/必须引用不同的根节点吗? 想要导入不同的数据?

  • 我如何使用数据代理的现成模式来保护 我反对错误?

  • 如何将所有这些节点放在一个根节点下(就像 excel 一样 当我在 XML Maps 中导入 XML 文件时)而不是有很多根 节点同时使用Schema?

我希望这个问题的编辑不会再次对我造成严重的失败,因为这个问题线程的前 3 次编辑的解决方案就在我眼前。

【问题讨论】:

  • 感谢的精美屏幕截图。请让它们小得多
  • 看看你能不能在1drv.ms/1hIon0U看到他们
  • 你应该看看 MSXML,它比 IE 自动化更快、安全、可靠。
  • 另外,当您的网站已经为您制作了一个架构时,您为什么还要使用 XML 文件来获取架构?当已经制作了一个时,让 excel 猜测制作一个是没有意义的。 AS excel 可能会做错,而您可能永远不会发现它的错误。
  • 我真的不知道我现在会尝试使用 Schema 来拉数据。

标签: xml vba excel


【解决方案1】:

该站点上引用的 XML-Schema 简直是一头野兽(考虑到 XML-Schema 很容易产生野兽般的构造)。该模式导入了几个额外的模式(进一步向下,xs:import ...),这可能解释了可用的额外模式。

另一方面:虽然 Excel 生成的自动 XML 架构有时确实不完整或不完全准确(类型),但我还是会使用此架构 - 如有必要进行一些更正(请参阅 Exporting XML from Excel and Keeping Date Format)。

除此之外,我无法弄清楚您要完成什么,尽管使用 MSXML 下载文件似乎是一个非常合理的建议。

对不起,肤浅的答案。我希望它仍然有帮助或提供一些线索。 安德烈亚斯

【讨论】:

    猜你喜欢
    • 2018-04-24
    • 2021-12-13
    • 2016-11-23
    • 1970-01-01
    • 2020-12-16
    • 2012-01-21
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多