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
我尝试通过 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