我试图通过这个宏保存一个(启用宏的)excel工作簿作为csv文件,覆盖旧的(下面我更改了文件夹和工作表的名称,但这似乎不是问题!):
Sub SaveWorksheetsAsCsv()
Dim SaveToDirectory As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
SaveToDirectory = "\MyFolder\"
Application.DisplayAlerts = False
Application.AlertBeforeOverwriting = False
Sheets("My_Sheet").Copy
ActiveWorkbook.SaveAs Filename:=SaveToDirectory & "My_Sheet" & ".csv", FileFormat:=xlCSV
ActiveWorkbook.Close SaveChanges:=False
ThisWorkbook.Activate
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
Application.AlertBeforeOverwriting = True
End Sub
Run Code Online (Sandbox Code Playgroud)
奇怪的是,有时,但并非总是如此,它失败并且标题的错误消息(运行时错误1004:对象_workbook的方法saveas失败)弹出,调试器指出我这一行:
ActiveWorkbook.SaveAs Filename:=SaveToDirectory & "My_Sheet" & ".csv", FileFormat:=xlCSV
Run Code Online (Sandbox Code Playgroud)
我google了它,显然它确实发生了很多人和我尝试的一些解决方案:
尽管如此,它可能连续正常运行50-60次,然后在某一点再次失败.
我可以查找任何建议或事情来解决这个问题(除了停止使用VBA/Excel执行此任务,这将很快发生,但我现在不能).
在此先感谢您的时间.
编辑:解决了感谢Degustaf的建议.我只对Degustaf建议的代码做了两处修改: