Way*_*unn 5 excel vba excel-vba
我正在使用Excel 2010,并且有一个userform,它将支持各种处理选项(即按预定义范围排序,获取统计数据和可怕的'export'(SaveAs).我想允许用户导出其中一个工作表CSV或XLSX.
问题是当我使用SaveAs保存为CSV时,它会将工作表重命名为我选择的文件名(减去扩展名).我搜索了几个小时,但没找到任何提供解决方案的地方.我确实找到了一个Stack 5岁以上的帖子,但它没有解决方案(请参阅如何在运行保存宏后停止重命名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
Run Code Online (Sandbox Code Playgroud)
事先使用不带参数的 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
Run Code Online (Sandbox Code Playgroud)
ps 我假设您有代码可以处理在 GetSaveAsFilename 上单击“取消”,并且为了清楚起见而将其删除;)