簡體   English   中英

文件保存為CSV格式iin excel vba

[英]file to saveas CSV format iin excel vba

我使用以下代碼將我的活動工作表保存為CSV,但在該文件夾中找不到輸出文件。 代碼有什么問題?

代碼供您參考:

    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"

   End Sub

您可以在不復制/粘貼的情況下執行此操作,因為Worksheet對象具有SaveAs方法,因此無需執行以下操作:

  1. 通過Workbooks.Add創建新工作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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM