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 

user2140261的这个评论


此外,为什么你的网站已经有一个为你使用XML文件来获取架构? 当有一个已经做出来的时候让excel猜测做出一个没有意义的。 AS excel可能做错了,你可能永远不会发现错误。


让我试图通过使用数据机构的Schema创build一个XML映射到Excel中,只需更改以下语句:

 If el.href Like "*.xsd" Then 

和这个声明

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

但是,当我试图做到这一点(通过转到XML任务窗格,按源,然后XML地图)我得到这个:

在这里输入图像描述

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

在这里输入图像说明

虽然这是合理的: …让excel猜测在做出一个(Excel只为您导入一个XML文件时为您创build一个Schema)时没有任何意义。

当我导入XML文件时,我有一个根节点。 这是根节点xbrl ,这让我很容易理解事情。 现在我看到了在第一张照片中看到的碎片以及令人惊讶的漫长的运行时间。

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

  • 我怎样才能使用数据机构防范错误的现成模式?

  • 我怎么能把所有这些节点下一个根节点(如Excel中,当我导入XML映射的XML文件),而不是有很多的根节点,并在同一时间使用架构?

我希望这个问题的编辑对我来说不会再变成一场沉重的惨败,因为解决这个问题的前3次编辑是在我眼前。

在该网站上引用的XML模式是一个野兽的地狱(考虑XML模式是容易beastly构造)。 这个模式导入了几个额外的模式(进一步向下,xs:import …),这可能解释了可用的附加模式。

另一方面:虽然由Excel生成的自动XML模式确实有时并不完整或者不完全准确(types),但是我仍然会使用这个模式 – 如果需要的话进行一些更正(请参阅从Excel导出XML并保留date格式 )。

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

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