【问题标题】:file to saveas CSV format iin excel vba在excel vba中将文件保存为CSV格式
【发布时间】:2017-04-07 14:57:33
【问题描述】:

我已使用以下代码将我的活动工作表保存为 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

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建minimal reproducible example
  • 请用单元格 B2B3 的内容更新您的问题。
  • B2 将是我的文件名,B3 是必须保存 CSV 文件的位置。
  • 截屏、发布图片、复制链接到问题中真的更简单吗,直接复制粘贴代码就不用了重新输入完​​整的代码?
  • 这不是你的要求。

标签: excel vba csv ms-word powerpoint


【解决方案1】:

无需复制/粘贴即可,因为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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-26
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多