2013-04-09 59 views
0

我运行下面的代码VBA读取XML只适用于本地XML文件

Sub test() 
     'XML = "C:\R_20130408_1.xml" 'This is local, and works fine 
     XML = "http://www.treasurydirect.gov/xml/R_20130408_1.xml" 'This get nothing for "point" 
     Dim objXML As DOMDocument 
     Dim point As IXMLDOMNode 
     Set objXML = New DOMDocument 
     With objXML 
      .Load XML 
      Set point = .SelectSingleNode("//AuctionAnnouncement/CUSIP") 
      Sheets(1).Cells(2, 2) = point.Text 
     End With 

    End Sub 

正如你可以看到,如果我从网络上下载这个XML,我可以得到它的工作,否则,objXML仍然会负载,但点将是没有什么。

有人会对此提供一些想法吗?

非常感谢! Ji

回答

2

在本地XML文件和远程文件之间XML标头/布局有可能不同吗?通过将XPath更改为此字符串,我能够获得HTTP版本的工作方式:"*/AuctionAnnouncement/CUSIP"

+1

谢谢!但是我认为在我的电脑上出现了一些问题......当我运行这个时,出现了这个错误:“完成此操作所需的数据尚未可用”。但是,当我单击调试,并转发F8时,代码将正确运行。不知何故,第一次没有激活“点”,我需要手动F8它的工作... – lion 2013-04-09 21:50:53

+0

但现在,我通过URLDownloadtoFile – lion 2013-04-09 21:53:59

+0

下载到本地驱动器绕过这个问题我似乎无法重现你的问题。尝试在您的.Load之前将DOMDocument的'Async'属性设置为false:'objXML.async = false'。看看是否有帮助 – Fink 2013-04-10 13:50:49