VBA使用模式文件提取数据

Exo*_*ant 7 xml excel vba excel-vba

我在下面有这个代码

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
Run Code Online (Sandbox Code Playgroud)

user2140261的评论


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


让我尝试通过使用数据代理的Schema创建XML Map到Excel,只需更改此语句:

If el.href Like "*.xsd" Then
Run Code Online (Sandbox Code Playgroud)

这句话

ActiveWorkbook.XmlMaps.Add(el, "Schema").Name = "xbrl Map " & intCounter 
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

在此输入图像描述

虽然合理的是:...当有一个已经制作出来时,让excel猜测制作一个(当你只导入一个XML文件时Excel为你制作一个Schema)是没有意义的.

当我导入XML文件时,我有一个根节点.这是根节点xbrl,我很容易理解事物.现在我得到了第一张图片中看到的碎片以及非常长的运行时间.

  • 当我想导入不同的数据时,你是否相信我应该/必须引用不同的根节点?

  • 我怎么能使用数据代理的现成模式来保护我免受错误?

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

我希望这个问题的编辑不再对我来说是一个沉重的惨败,因为这个问题的前三个编辑的解决方案在我眼前是相当的.

And*_*s J 1

该站点上引用的 XML-Schema 是一个猛兽(考虑到 XML-Schema 很容易出现猛兽构造)。该架构导入了几个附加架构(进一步向下,xs:import ...),这可以解释可用的附加架构。

另一方面:虽然 Excel 生成的自动 XML 架构有时确实不完整或完全准确(类型),但我仍然会使用此架构 - 如有必要,进行一些更正(请参阅从 Excel 导出 XML 和保留日期格式)。

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

抱歉,我的回答很肤浅。我希望它仍然有帮助或提供一些线索。安德烈亚斯