我想从网页中的数据填写excel表。我怎么能这样做?
到目前为止,我的计划是在Excel-VBA中使用WinHttpRequest。我只是得到超时错误:(
Sub webtest()
Dim request As WinHttpRequest
Set request = New WinHttpRequest
request.SetTimeouts 2000, 2000, 2000, 2000
request.Open "GET", "http://www.w3schools.com/html/html_tables.asp", False
request.Send
MsgBox request.ResponseBody
End Sub
也许这不是最好用的语言,但我不能放弃一些时间错误。如果有人能够发现我的错误让我知道,我会在它上面消失,直到它消失为止
答案 0 :(得分:2)
Alt + D,D,W将允许您在没有代码的情况下执行此操作。
网址必须100%正确。与浏览器不同,没有代码可以修复网址。
我的程序的目的是获取错误详细信息。
我如何获得正确的网址是在浏览器中输入我的网址,导航,并且正确的网址通常位于地址栏中。另一种方法是使用链接等的属性来获取URL。
Microsoft.XMLHTTP也映射到Microsoft.XMLHTTP.1.0。 HKEY_CLASSES_ROOT \ Msxml2.XMLHTTP映射到Msxml2.XMLHTTP.3.0。再试一次
使用xmlhttp尝试这种方式。编辑网址等。如果它似乎工作注释if / end if转储信息,即使看起来工作。它的vbscript但vbscript在vb6中工作。
On Error Resume Next
Set File = WScript.CreateObject("Microsoft.XMLHTTP")
File.Open "GET", "http://www.microsoft.com/en-au/default.aspx", False
'This is IE 8 headers
File.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; BCD2000; BCD2000)"
File.Send
If err.number <> 0 then
line =""
Line = Line & vbcrlf & ""
Line = Line & vbcrlf & "Error getting file"
Line = Line & vbcrlf & "=================="
Line = Line & vbcrlf & ""
Line = Line & vbcrlf & "Error " & err.number & "(0x" & hex(err.number) & ") " & err.description
Line = Line & vbcrlf & "Source " & err.source
Line = Line & vbcrlf & ""
Line = Line & vbcrlf & "HTTP Error " & File.Status & " " & File.StatusText
Line = Line & vbcrlf & File.getAllResponseHeaders
wscript.echo Line
Err.clear
wscript.quit
End If
On Error Goto 0
Set BS = CreateObject("ADODB.Stream")
BS.type = 1
BS.open
BS.Write File.ResponseBody
BS.SaveToFile "c:\users\test.txt", 2
同时查看这些其他对象是否有效。
C:\Users>reg query hkcr /f xmlhttp
HKEY_CLASSES_ROOT\Microsoft.XMLHTTP
HKEY_CLASSES_ROOT\Microsoft.XMLHTTP.1.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.3.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.4.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.5.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.6.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.3.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.4.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.5.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.6.0
End of search: 12 match(es) found.
另请注意,在发生锁定之前,您可以调用任何特定XMLHTTP对象的次数有限制。如果发生这种情况,并且在调试代码时会发生这种情况,只需更改为其他xmlhttp对象
即可修改强>
这就是帮助说的。
MSXML 6.0中的新功能 MSXML 6.0随SQL Server 2005一起提供。它也作为Web版本提供。以下是MSXML 6.0引入的功能的高级摘要。
安全
为了消除安全威胁,已对MSXML 6.0进行了许多增强。此外,默认情况下,某些不安全的功能(如DTD和内联架构)已关闭。有关更多信息,请参阅MSXML安全性概述。
删除了XDR架构支持
已删除XML数据缩减(XDR)架构支持。有关更多信息,请参阅删除XDR架构支持。
XSD标准合规性的改进
MSXML 6.0改进了XSD架构标准。有关更多信息,请参阅XSD标准合规性的改进。
架构缓存行为的改进
MSXML 6.0已更改XSD架构缓存的行为。当存在名称冲突时,新版本不那么模糊。有关更多信息,请参阅架构缓存行为的改进。
删除了XML数字签名
MSXML 6.0删除了对XML数字签名的支持。有关更多信息,请参阅XML数字签名。
修改2
通过在网址末尾添加:来指定端口。例如; http://www.microsoft.com:80
编辑3
在Excel中使用Macro Recorder记录您的数据查询,该查询将为您编写大部分代码。但它们很灵活,可能不需要编程(非优秀的程序员可以编程) - 在设置查询时查看选项对话框。