Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA:仅导入csv文件的选定列_Vba_Excel_Csv - Fatal编程技术网

VBA:仅导入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 &

我使用VBA将一个csv文件从Yahoo Finance导入excel,每行包含7个逗号分隔的值。我只想导入每行的第一个和第五个逗号分隔的值。目前,我导入整个csv,将其提取到列中,然后删除不需要的列。但是,这不足以满足将来使用此导入。如何选择要导入的列

当前代码:

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列等。我尝试了各种可能性,但不管发生什么,它都从第一列开始。