Excel VBA:导入CSV并重命名图纸
我在MS Excel中有以下宏:我可以单击宏按钮,然后选择一个.csv文件,宏将文件以正确的格式导入到一个名为“test”和计数号的新工作表中 如果新的工作表与.csv文件同名,那对我来说真的很好-有人知道如何在这里实现这一点吗Excel VBA:导入CSV并重命名图纸,vba,excel,csv,Vba,Excel,Csv,我在MS Excel中有以下宏:我可以单击宏按钮,然后选择一个.csv文件,宏将文件以正确的格式导入到一个名为“test”和计数号的新工作表中 如果新的工作表与.csv文件同名,那对我来说真的很好-有人知道如何在这里实现这一点吗 Sub GetCSVList() Dim dlgOpen As FileDialog Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker) With dlgOpen .AllowMultiSe
Sub GetCSVList()
Dim dlgOpen As FileDialog
Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker)
With dlgOpen
.AllowMultiSelect = True
''Start in
.InitialFileName = "C:\Test"
.Show
End With
For Each fname In dlgOpen.SelectedItems
ImportCSV fname
Next
End Sub
Sub ImportCSV(fname)
Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count))
ws.Name = "test" & Worksheets.Count + 1
With ws.QueryTables.Add( _
Connection:="TEXT;" & fname, _
Destination:=Range("A1"))
.Name = "Test" & Worksheets.Count + 1
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.Refresh BackgroundQuery:=False
'.UseListObject = False
End With
End Sub
您是否用代码测试或运行调试?如果没有,请尝试并测试
fname
ws.Name=fname
中的内容,而不是ws.Name=“test”&工作表。计数+1
?(但显然,您首先需要检查fname
是否作为工作表名称有效-对于什么是/不允许作为工作表名称存在一些限制。)我以前尝试过“ws.name=fname”,但它只会给我一个运行时错误1004(工作表名称无效)-名称应该可以(它是“03.10.csv”)将图纸名称设置为“03.10.csv”
不应引起任何问题。但是,再次查看代码时,fname
可能是完全限定名(即带有路径,并且工作表名称中的“\”无效),因此请尝试ws.name=Mid(fname,instrev(fname,“\”)+1)
完美,效果很好!是否也可以删除结尾处的“.csv”?非常感谢你!!您是否用代码测试或运行调试?如果没有,请尝试并测试fname
ws.Name=fname
中的内容,而不是ws.Name=“test”&工作表。计数+1
?(但显然,您首先需要检查fname
是否作为工作表名称有效-对于什么是/不允许作为工作表名称存在一些限制。)我以前尝试过“ws.name=fname”,但它只会给我一个运行时错误1004(工作表名称无效)-名称应该可以(它是“03.10.csv”)将图纸名称设置为“03.10.csv”
不应引起任何问题。但是,再次查看代码时,fname
可能是完全限定名(即带有路径,并且工作表名称中的“\”无效),因此请尝试ws.name=Mid(fname,instrev(fname,“\”)+1)
完美,效果很好!是否也可以删除结尾处的“.csv”?非常感谢你!!