我下面有这个代码
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
这条评论的用户2140261 https://stackoverflow.com/users/2140261/user2140261
另外,当您的网站已经为您制作了架构时,为什么还要使用 XML 文件来获取架构呢?当已经制作了一个时,让 excel 猜测制作一个是没有意义的。 AS excel 可能会出错,而你可能永远不会发现它的错误。
让我尝试通过使用数据机构的架构来创建一个到 Excel 的 XML 映射,只需更改以下语句:
If el.href Like "*.xsd" Then
和这个声明
ActiveWorkbook.XmlMaps.Add(el, "Schema").Name = "xbrl Map " & intCounter
但是,当我尝试执行此操作时(通过转到 XML 任务窗格,推送“源”,然后推送“XML 映射”),我得到以下信息:
这怎么可能?我打开架构文件 https://www.sec.gov/Archives/edgar/data/10795/000119312514042815/bdx-20131231.xsd可以看到根节点是 1 并且它是Schema
虽然这是合理的:...当已经创建了一个文件时,让 excel 猜测创建一个是没有意义的(当您仅导入 XML 文件时,Excel 会为您创建一个架构)。
当我导入XML file https://www.sec.gov/Archives/edgar/data/10795/000119312514042815/bdx-20131231.xml我制作了一个根节点。这是根节点xbrl
这让我很容易理解事情。现在我得到了第一张图片中看到的碎片以及令人惊讶的长运行时间。
我希望这个问题的编辑不会再次对我来说是一次严重的惨败,因为这个问题线程的前 3 次编辑的解决方案就在我眼前。