无法正确获取我的API调用以正确登陆。它目前以一个单元格形式出现,以逗号分隔,因此很难按行和列分隔...请帮忙! Excel output
'Call for report
Set MyRequest2 = CreateObject("winhttp.winhttprequest.5.1")
URLReport = ("https://secure.saashr.com:443/ta/rest/v1/report/saved/18957188?company%3Ashortname=slszdr")
MyRequest2.Open "GET", URLReport, False
MyRequest2.setRequestHeader "Accept", "csv"
MyRequest2.setRequestHeader "Content-Length", "1500"
MyRequest2.setRequestHeader "Authentication", "Bearer " & Token
MyRequest2.setRequestHeader "Content-Type", "application/json"
MyRequest2.Send
CSVReport = MyRequest2.ResponseText
'Place report in new sheet
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(ActiveSheet.Name).Name = ("Report " & Sheets.Count)
ActiveSheet.Cells(1, 1).Value = CSVReport
'Selection.TextToColumns DataType:=xlDelimited, TextQualifier:=xlTextQualifierDoubleQuote, Comma:=True
End Sub
答案 0 :(得分:0)
选择仅返回所选单元格的范围。最有可能只选择单元格A1。您可以使用Selection.CurrentRegion扩展范围以包括列表中的所有单元格。 ActiveSheet.UsedRange返回从第一个使用过的单元格开始并延伸到最后一个使用过的单元格的范围。
Selection.address:$ A $ 1
Selection.CurrentRegion.address:$ A $ 1:$ L $ 1500
ActiveSheet.UsedRange:$ A $ 1:$ L $ 1500
无需选择或激活细胞。我更喜欢直接对范围起作用,而不是通过Selection对象。
ActiveSheet.UsedRange.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False
添加此代码以确定CSVReport的数据类型。
If IsArray(CSVReport) Then
MsgBox "X: " & UBound(CSVReport) & " Y: " & UBound(CSVReport), vbInformation, "CSVReport is an Array"
Else
MsgBox "X: " & Split(Text1.Text, Chr(13)), vbInformation, "CSVReport is a String"
End If
在任何一种情况下,您都必须调整目标范围大小以适应数据。
像
这样的东西ActiveSheet.Cells(1,1).Resize(x,y)= CSVReport
但实施将根据CSVReport的数据类型和形状而有所不同。