为什么将内容声明为字符串会导致WinHttp不在Excel VBA中发送HTTP内容?

时间:2008-10-10 16:53:01

标签: excel excel-vba winhttp vba

我有一个Excel VBA宏,它相当于以下成功运行的HTTP POST:

Set WebClient = CreateObject("WinHttp.WinHttpRequest.5.1")
' ... Configure WebClient for a POST request
RequestBody = "<request>"
WebClient.send RequestBody

以前,我已将RequestBody的类型显式设置为String,如下所示:

Set WebClient = CreateObject("WinHttp.WinHttpRequest.5.1")
' ... Configure WebClient for a POST request
Dim RequestBody As String
RequestBody = "<request>"
WebClient.send RequestBody

除了服务器没有收到任何请求内容外,这似乎工作正常。

在通过两个版本进行调试时,RequestBody上的监视将其类型描述为“Variant / String”,内容是正确的。

为什么添加类型会导致此问题?

1 个答案:

答案 0 :(得分:2)

嗯...

尝试添加对WinHTTP库的引用(工具 - 引用)。没有明显的理由,有时它很重要。

但是Send方法被声明为使用Variant参数,所以使它成为String是没有意义的。