【发布时间】: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 来拉数据。