如何使用Excel .SaveAs但保留原始工作表名称

我正在使用Excel 2010,并有一个用户表单,它将支持各种处理选项(即按预定义的范围进行sorting,获取统计信息和可怕的'导出'(SaveAs)。我想允许用户导出其中一个表CSV或XLSX。

问题是,当我使用另存为保存为CSV,它将表格重命名为我select的文件名(减去扩展名)。 我已经search了几个小时,并没有find任何提供解决scheme的地方。 我确实find了一个Stack 5+年以前的文章,但是它没有解决scheme(请参阅如何在运行保存macros后停止重命名excelsheets )

任何帮助,将不胜感激! 谢谢!

这里是代码:

Dim ws As Excel.Worksheet Dim strSaveName As String Dim strThisName As String strThisName = ThisWorkbook.Path & ThisWorkbook.Name strSaveName = Application.GetSaveAsFilename( _ fileFilter:="Text Files (*.csv), *.csv") Set ws = Worksheets("Export") ws.SaveAs Filename:=strSaveName, FileFormat:=xlCSV 'I do the following TO UNDO THE RENAME <GROAN> (for now just saving as 0.csv) Sheets("0").Name = "Export" ' Then the following is to regain my original filename since I will continue working... ws.SaveAs Filename:=strThisName, FileFormat:=xlOpenXMLWorkbookMacroEnabled 

事先没有参数使用ws.Copy然后保存新的工作簿

比如调整你的代码就像:

  Dim ws As Excel.Worksheet Dim strSaveName As String strSaveName = Application.GetSaveAsFilename( _ fileFilter:="Text Files (*.csv), *.csv") Set ws = Worksheets("Export") 'Copy the ws to a new workbook ws.Copy 'With the new wb: With Workbooks(Workbooks.Count) 'Save and close the new workbook .SaveAs Filename:=strSaveName, FileFormat:=xlCSV .Close False End With 

PS我假设你有代码来处理GetSaveAsFilename单击取消,只是为了清晰的问题删除它;)