相关疑难解决方法(0)

尝试将XLSM另存为CSV时,获取"对象_workbook的方法保存失败"错误

我试图通过这个宏保存一个(启用宏的)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了它,显然它确实发生了很多人和我尝试的一些解决方案:

  • 指定目录是字符串
  • 避免文件名或文件夹中的任何特殊字符(见此处)
  • 复制粘贴工作表作为值,然后将其保存为.csv(在此处可见)
  • 使用.csv代码编号指定FileFormat(在此处可见)
  • 禁用/重新启用某些警报
  • 在ActiveWorkbook.SaveAs行中添加其他字段,关于密码,创建备份etcetc

尽管如此,它可能连续正常运行50-60次,然后在某一点再次失败.

我可以查找任何建议或事情来解决这个问题(除了停止使用VBA/Excel执行此任务,这将很快发生,但我现在不能).

在此先感谢您的时间.

编辑:解决了感谢Degustaf的建议.我只对Degustaf建议的代码做了两处修改:

  • ThisWorkbook.Sheets代替CurrentWorkbook.Sheets …

csv excel vba runtime-error save-as

10
推荐指数
1
解决办法
6万
查看次数

标签 统计

csv ×1

excel ×1

runtime-error ×1

save-as ×1

vba ×1