大家在使用VBA的过程中,一般不会涉及到网络请求方面的需求。简单的办公自动化已经可以满足大部分场景的需求,能快速的提升工作效率。实际上,在开发excel-vba的插件,模块或工具的过程中,经常会遇到网络数据请求等情况,Microsoft.XMLHttp库就提供网络方面的服务。
Microsoft.XMLHttp,顾名思义就是网络请求库,vba可以直接创建调用
使用步骤:
- 创建XMLHTTP对象
- 打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普通HTTP指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。
- 发送指令。
- 等待并接收服务端返回的处理结果。
- 释放XMLHTTP对象
方法解析:
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
bstrMethod: 数据传送方式,即GET或POST。
bstrUrl: 服务网页的URL。
varAsync: 是否同步执行。缺省为True,即同步执行,但只能在DOM中实施同步执行。用中一般将其置为False,即异步执行。
bstrUser: 用户名,可省略。
bstrPassword:用户口令,可省略。
例如:
http.Open "GET", "http://****/report/doView?type=2", False
Send(varBody)
varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。也可以省略,让指令通过Open方法的URL参数代入。
setRequestHeader( bstrHeader, bstrvalue )
bstrHeader:HTTP 头(header)
bstrvalue: HTTP 头(header)的值
例如:
http.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
http.setRequestHeader "token", token '你可以在请求头里面放token,通过网站验证!
http.send download_datetime
XMLHTTP属性
onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。
responseBody: 结果返回为无符号整数数组。
responseStream: 结果返回为IStream流。
responseText : 结果返回为字符串。
responseXML: 结果返回为XML格式数据。
代码实例
以下代码利用xmlhttp实现对Restful AIP 进行数据抓取,将返回的数据保存到本地文件中
Sub
好了,这期就说这么多了,就这样吧,没耐心写下去了。。
我是硬核分析仙人,做了很多年数据,希望得到大家的吐槽和反馈。谢谢!
WX号:huangmoyue
B uper:硬核分析仙人
weibo:硬核分析仙人
# 接受各类咨询