Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
Excel VBA:导入CSV并重命名图纸_Vba_Excel_Csv - Fatal编程技术网

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

我在MS Excel中有以下宏:我可以单击宏按钮,然后选择一个.csv文件,宏将文件以正确的格式导入到一个名为“test”和计数号的新工作表中

如果新的工作表与.csv文件同名,那对我来说真的很好-有人知道如何在这里实现这一点吗

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”?非常感谢你!!