将CSV从一个单元解析为行&列

时间:2016-06-16 01:22:01

标签: excel api rest csv

无法正确获取我的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

1 个答案:

答案 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的数据类型和形状而有所不同。