文件saveas CSV格式iin excel vba

问题描述:

我已经使用下面的代码来保存我的活动工作表,但在该文件夹中找不到文件。供大家参考文件saveas 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" 

末次

+1

问题寻求帮助调试(“为什么不是这个代码的工作?”)必须包括所期望的行为,一个特定的问题或错误,并重现它在问题本身所需要的最短的代码。没有明确问题陈述的问题对其他读者无益。请参阅:如何创建[mcve]。 – Jeeped

+0

请更新您的问题的单元格内容** B2 **和** B3 **。 –

+0

B2将是我的文件名,B3是CSV文件必须保存的位置。 –

你可以做到这一点没有复制/粘贴,因为Worksheet对象有一个SaveAs方法,所以没有必要做:

  1. 通过Workbooks.Add创建新的工作簿
  2. 从当前的单元格复制范围工作簿
  3. 粘贴复制的选定在从(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