将CSV文件中的数据从特定位置导入excel

时间:2017-02-07 13:55:07

标签: vba excel-vba excel

我正在尝试整合VBA代码以从存储在特定位置的CSV文件导入数据,并将数据粘贴到我想要的工作表中。我所做的只是记录了一个宏,我将文件位置存储在一个名为' path'的字符串变量中。并使用此变量指定文件位置。但是在执行代码之后,它显示一个错误,表示" Excel无法找到文本文件来刷新此外部数据范围"。下面提供了代码: 高级谢谢你的帮助。

Sub Macro1()
    Dim path As String
    path = InputBox("Provide the location of the file")

    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;path.csv" _
        , Destination:=Range("$A$1"))
        .Name = "AO2576.log.0240021"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

1 个答案:

答案 0 :(得分:0)

您应该使用文件对话框打开文件,并相应地设置QueryTable。

Dim path: path = Application.GetOpenFilename("CSV Files (*.csv), *.csv")
If path = False Then Exit Sub 
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & path, Destination:=Range("A1"))
    ...
End With

请注意,"TEXT;path.csv"是一个硬编码字符串,它不是由用户刚刚选择的文件名设置的。 "TEXT;" & path是要走的路。