VBA和SurveyMonkey API

VBA和SurveyMonkey API,vba,surveymonkey,Vba,Surveymonkey,我试图通过VBA访问SM API。我暂时没有使用JSON,因为我已经有麻烦了。下面是给我“开发者不活跃”的结果,虽然我在VB.NET中有另一个项目(使用.NET DLL),其中相同的键和令牌工作正常,我可以检索调查列表。 我做错了什么 Public Sub GetSMList() Dim apiKey As String Dim Token As String Dim sm As Object apiKey = "myKey" Token = "myToken" Set sm = Cre

我试图通过VBA访问SM API。我暂时没有使用JSON,因为我已经有麻烦了。下面是给我“开发者不活跃”的结果,虽然我在VB.NET中有另一个项目(使用.NET DLL),其中相同的键和令牌工作正常,我可以检索调查列表。 我做错了什么

Public Sub GetSMList()

Dim apiKey As String
Dim Token As String
Dim sm As Object

apiKey = "myKey" 
Token = "myToken"

Set sm = CreateObject("MSXML2.XMLHTTP.6.0")

With sm
    .Open "POST", "https://api.surveymonkey.net/v2/surveys/get_survey_list", False
    .setRequestHeader "Authorization", "Bearer " & Token
    .setRequestHeader "Content-Type", "application/json"

    .send "api_key=" & apiKey

    result = .responseText
End With

End Sub

此代码的目的是显示错误处理。这是vbscript,但vbscript可复制到VBA中。错误可能会告诉您原因

总是在文件(用户删除它们)、网络或internet(它们不保证工作)和注册表读取(用户删除它们)上出错。

URL必须100%正确。与浏览器不同,没有修复URL的代码

我的程序的目的是获取错误详细信息

如何获得正确的URL是在浏览器中键入URL,进行导航,并且正确的URL通常位于地址栏中。另一种方法是使用链接等的属性来获取URL

另外
Microsoft.XMLHTTP
映射到
Microsoft.XMLHTTP.1.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP
映射到
Msxml2.XMLHTTP.3.0
。试试晚一点的

使用xmlhttp尝试这种方法。编辑url的等。如果它似乎工作注释出如果/结束如果转储信息,即使看起来工作。它是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

还要注意,在锁定发生之前,可以调用任何特定XMLHTTP对象的次数是有限制的。如果发生这种情况,并且在调试代码时发生了这种情况,只需更改为不同的xmlhttp对象,此代码的目的是显示错误处理。这是vbscript,但vbscript可复制到VBA中。错误可能会告诉您原因

总是在文件(用户删除它们)、网络或internet(它们不保证工作)和注册表读取(用户删除它们)上出错。

URL必须100%正确。与浏览器不同,没有修复URL的代码

我的程序的目的是获取错误详细信息

如何获得正确的URL是在浏览器中键入URL,进行导航,并且正确的URL通常位于地址栏中。另一种方法是使用链接等的属性来获取URL

另外
Microsoft.XMLHTTP
映射到
Microsoft.XMLHTTP.1.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP
映射到
Msxml2.XMLHTTP.3.0
。试试晚一点的

使用xmlhttp尝试这种方法。编辑url的等。如果它似乎工作注释出如果/结束如果转储信息,即使看起来工作。它是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

还要注意,在锁定发生之前,可以调用任何特定XMLHTTP对象的次数是有限制的。如果发生这种情况,并且在调试代码时发生了这种情况,只需更改为不同的xmlhttp对象,此代码的目的是显示错误处理。这是vbscript,但vbscript可复制到VBA中。错误可能会告诉您原因

总是在文件(用户删除它们)、网络或internet(它们不保证工作)和注册表读取(用户删除它们)上出错。

URL必须100%正确。与浏览器不同,没有修复URL的代码

我的程序的目的是获取错误详细信息

如何获得正确的URL是在浏览器中键入URL,进行导航,并且正确的URL通常位于地址栏中。另一种方法是使用链接等的属性来获取URL

另外
Microsoft.XMLHTTP
映射到
Microsoft.XMLHTTP.1.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP
映射到
Msxml2.XMLHTTP.3.0
。试试晚一点的

使用xmlhttp尝试这种方法。编辑url的等。如果它似乎工作注释出如果/结束如果转储信息,即使看起来工作。它是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

还要注意,在锁定发生之前,可以调用任何特定XMLHTTP对象的次数是有限制的。如果发生这种情况,并且在调试代码时发生了这种情况,只需更改为不同的xmlhttp对象,此代码的目的是显示错误处理。这是vbscript,但vbscript可复制到VBA中。错误可能会告诉您原因

总是在文件(用户删除它们)、网络或internet(它们不保证工作)和注册表读取(用户删除它们)上出错。

URL必须100%正确。与浏览器不同,没有修复URL的代码

我的程序的目的是获取错误详细信息

如何获得正确的URL是在浏览器中键入URL,进行导航,并且正确的URL通常位于地址栏中。另一种方法是使用链接等的属性来获取URL

另外
Microsoft.XMLHTTP
映射到
Microsoft.XMLHTTP.1.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP
映射到
Msxml2.XMLHTTP.3.0
。试试晚一点的

使用xmlhttp尝试这种方法。编辑url的等。如果它似乎工作注释出如果/结束如果转储信息,即使看起来工作。它是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

还要注意,在锁定发生之前,可以调用任何特定XMLHTTP对象的次数是有限制的。如果发生这种情况,并且在调试代码时发生了这种情况,只需更改为另一个xmlhttp对象,即可将API密钥作为POST请求的请求体的一部分发送。直接将查询参数添加到URL中,这应该会起作用

"https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=" & apiKey

然后需要使用“send”发送一个JSON编码的请求对象。对于get_survey_list,一个空对象({})将启动。

您正在发送API密钥,作为POST请求的请求正文的一部分。直接将查询参数添加到URL中,这应该会起作用

"https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=" & apiKey

然后需要使用“send”发送一个JSON编码的请求对象。对于get_survey_list,一个空对象({})将启动。

您正在发送API密钥,作为POST请求的请求正文的一部分。直接将查询参数添加到URL,然后