我是vbscript的新手。我收到了错误
get_html预期的声明
在我的代码的底部。我实际上是在尝试为变量get_html
声明一个值(这是一个url)。我该如何解决这个问题?
Module Module1
Sub Main()
End Sub
Sub get_html(ByVal up_http, ByVal down_http)
Dim xmlhttp : xmlhttp = CreateObject("msxml2.xmlhttp.3.0")
xmlhttp.open("get", up_http, False)
xmlhttp.send()
Dim fso : fso = CreateObject("scripting.filesystemobject")
Dim newfile : newfile = fso.createtextfile(down_http, True)
newfile.write(xmlhttp.responseText)
newfile.close()
newfile = Nothing
xmlhttp = Nothing
End Sub
get_html _"http://www.somwwebsite.com", _"c:\downloads\website.html"
End Module
答案 0 :(得分:4)
有一些语法错误。
underscore
一词)xmlhttp.open
是子,不返回任何内容)。调用子例程有两种主要的替代方法。 sub_proc param1, param2
或Call sub_proc(param1, param2)
=
”对于对象来说还不够。你应该
使用Set语句。它为对象分配对象引用
变量响应可能以utf-8编码返回。但是,FSO与utf-8并不和谐。另一种选择是将响应写为unicode(将True
作为第三个参数传递给CreateTextFile)
但输出尺寸将大于应有的尺寸。因此,我更愿意使用Stream对象
我修改了你的代码。请考虑。
'Requeired Constants
Const adSaveCreateNotExist = 1 'only creates if not exists
Const adSaveCreateOverWrite = 2 'overwrites or creates if not exists
Const adTypeBinary = 1
Sub get_html(ByVal up_http, ByVal down_http)
Dim xmlhttp, varBody
Set xmlhttp = CreateObject("msxml2.xmlhttp.3.0")
xmlhttp.open "GET", up_http, False
xmlhttp.send
varBody = xmlhttp.responseBody
Set xmlhttp = Nothing
Dim str
Set str = CreateObject("Adodb.Stream")
str.Type = adTypeBinary
str.Open
str.Write varBody
str.SaveToFile down_http, adSaveCreateOverWrite
str.Close
Set str = Nothing
End Sub
get_html "http://stackoverflow.com", "c:\downloads\website.html"
答案 1 :(得分:1)
您可能希望将来自get_html
的来电转移到Main
子例程(Sub Main()
)中。例如:
Sub Main()
get_html _"http://www.somwwebsite.com", _"c:\downloads\website.html"
End Sub
AFAIK,您无法直接在模块内进行函数调用。