文件保存为CSV格式iin excel vba

我已经使用下面的代码来保存我的活动工作表,但在该文件夹中找不到文件。

代码供您参考:

Sub Save_CSV() Application.ScreenUpdating = False Application.DisplayAlerts = False SaveNAme = "INDENTED_BOM" SavePath = Dir("C:\Users\350153\Desktop\AUTOMATION (STRUCTURES)") Range("A1:D150").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToLeft)).Select Selection.Copy Workbooks.Add With ActiveSheet.Range("A2") .PasteSpecial xlPasteValues .PasteSpecial xlPasteFormats End With ActiveSheet.Columns("A:D").AutoFit ActiveWorkbook.SaveAs Filename:=SavePath & SaveNAme & ".csv" _ , FileFormat:=xlCSVWindows, CreateBackup:=False ActiveWorkbook.Save ActiveWindow.Close Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "Task Finished", vbInformation, "Finished" 

结束小组

你可以不用复制/粘贴,因为Worksheet对象有一个SaveAs方法,所以不需要做:

  1. 通过Workbooks.Add创build新的工作Workbooks.Add
  2. 复制当前工作簿中单元格的范围
  3. 将复制的select粘贴到来自(1)的新工作簿中
  4. 从(1)保存新的工作簿

相反,你应该:

  1. 在工作表上调用SaveAs方法
  2. 删除在前面的代码中不复制的行(1-4)

它看起来像这样,也修改,以确保文件不存在。 如果文件已经存在, MsgBox提醒你,然后程序将退出而不保存。

 Sub SaveAs_CSV() Dim SaveNAme$, SavePath$, csvFullName$ Application.ScreenUpdating = False Application.DisplayAlerts = False SaveNAme = Range("B2") SavePath = Range("B3") If Right(SavePath,1) <> Application.PathSeparator Then SavePath = SavePath & Application.PathSeparator csvFullName = savePath & SaveNAme & ".csv" If Dir(csvFullName) <> "" Then 'File already exists, alert the user and exit procedure MsgBox csvFullname & " already exists! The file will not be saved as CSV.", vbInformation GoTo EarlyExit End If ActiveSheet.SaveAs Filename:=csvFullName _ , FileFormat:=xlCSVWindows, CreateBackup:=False Rows("1:4").EntireRow.Delete Columns("A:D").AutoFit ActiveWindow.Close EarlyExit: Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub