VBA:仅导入csv文件的选定列
我使用VBA将一个csv文件从Yahoo Finance导入excel,每行包含7个逗号分隔的值。我只想导入每行的第一个和第五个逗号分隔的值。目前,我导入整个csv,将其提取到列中,然后删除不需要的列。但是,这不足以满足将来使用此导入。如何选择要导入的列 当前代码:VBA:仅导入csv文件的选定列,vba,excel,csv,Vba,Excel,Csv,我使用VBA将一个csv文件从Yahoo Finance导入excel,每行包含7个逗号分隔的值。我只想导入每行的第一个和第五个逗号分隔的值。目前,我导入整个csv,将其提取到列中,然后删除不需要的列。但是,这不足以满足将来使用此导入。如何选择要导入的列 当前代码: qURL = "http://ichart.finance.yahoo.com/table.csv?s=" & Symbol & "&a=" & Month(Startdate) - 1 &
qURL = "http://ichart.finance.yahoo.com/table.csv?s=" & Symbol & "&a=" & Month(Startdate) - 1 & "&b=" & Day(Startdate) & _
"&c=" & Year(Startdate) & "&d=" & Month(Enddate) - 1 & "&e=" & Day(Enddate) & "&f=" & Year(Enddate) & "&g=" & QuoteInterval & "&ignore=.csv"
With Sheets(2).QueryTables.Add(Connection:="URL;" & qURL, Destination:=ActiveCell.Offset(1, 0))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Sheets(2).Range("A2:A" & Lastrow).TextToColumns Destination:=Sheets(2).Range("A2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, other:=False
Columns(2).EntireColumn.Delete
Columns(2).EntireColumn.Delete
Columns(2).EntireColumn.Delete
Columns(3).EntireColumn.Delete
Columns(3).EntireColumn.Delete
Range("A3:A" & Lastrow).NumberFormat = "dd mmm yy"
Range("B3:B" & Lastrow).NumberFormat = "0.00"
您可以将数组作为参数提供给
TextToColumns
这将隐藏第2、3、4、6、7列
.TextToColumns FieldInfo:=数组(数组(1,1)、数组(2,9)、数组(3,9)、数组(4,9)、数组(5,1)、数组(6,9)、数组(7,9))
1=xlGeneralFormat
9=
xlSkipColumn
我不确定是否有更好的解决方案,因此我将此作为注释,首先从最大索引中删除列,如“向后走”。这样会使你的列删除更干净。您将不会有多个列(2)
和列(3)
。只需删除7,6,4,3,2。谢谢,看起来是对的。但是,无论我在数组中填写了什么,此代码都会跳过与从第一列开始的数组中的数组数相同的列数。例如,.csv是:A、B、C、D、E、F、G,使用您提供的代码,它跳过A到E列(因为该数组由5个数组组成),并将F和G放入列中。因此,对于由4个数组组成的数组,它跳过了前4列等。我尝试了各种可能性,但不管发生什么,它都从第一列开始。