Excel 通过 VBA 从提示位置从 CSV 导入

Excel import from CSV by VBA from prompted location

我尝试通过 VBA 导入 csv 文件。该文件始终称为 data.csv,但它可以位于不同的文件夹中。所以,这段代码先提示路径,然后把file设为文件位置,但是没有导入任何东西。怎么了?

合资企业

Sub View()

'Prompts Path
Application.FileDialog(msoFileDialogFolderPicker).Show
Path = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)

'Defining file
File = Path & "\data.csv"

Workbooks.Add

With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;" & File, _
    Destination:=Range("A1"))
    .TextFileTabDelimiter = True
    .TextFileDecimalSeparator = "."
End With

End Sub

这段代码有几个问题。在我的 excel 版本中,它不喜欢使用名称 "Path" 作为变量,所以我可能会更新它。然而,这对您来说似乎不是问题,但第二个问题是您使用的 "Range" 未正确定义。我猜它正在尝试使用当前工作簿中的范围。即使您添加新工作表,它看起来也像活动表一样保留在原始工作簿中。此外,您需要刷新查询表。试试这个:

Sub View()
Dim mypath As String 
Dim myfile As String
Dim wb As Workbook
Dim ws As Worksheet

'Prompts Path
Application.FileDialog(msoFileDialogFolderPicker).Show
mypath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)

'Defining file
myfile = mypath & "\data.csv"

Set wb = Workbooks.Add
Set ws = wb.Sheets("Sheet1")

With ws.QueryTables.Add(Connection:= _
"TEXT;" & myfile, _
    Destination:=ws.Range("A1"))
    .TextFileTabDelimiter = True
    .TextFileDecimalSeparator = "."
    .Refresh
End With

End Sub