【问题标题】:Error trying to save Excel worksheet as CSV via Excel VBA macro尝试通过 Excel VBA 宏将 Excel 工作表另存为 CSV 时出错
【发布时间】:2019-08-06 20:47:53
【问题描述】:

在 Windows 7 上使用 Excel 2010。我有一个 VBA 宏,可将 Excel 工作簿 (.xlsm) 的第一个工作表保存到 CSV 文件中。这在过去大多是有效的。最近,我收到下图的错误消息,其中指出“运行时错误'1004':Microsoft Excel 无法打开或保存任何更多文档,因为没有足够的可用内存或磁盘空间。”

有几件事:

  • 我的 Google 搜索建议的一个常见解决方案是将文件的位置设置为受信任的位置。这不起作用。
  • 我有足够的磁盘空间。这不是问题。
  • 我不确定“可用内存”的确切含义,但如果它以任何方式指的是 Windows 任务管理器中列出的物理内存数字,那么该数字就是 75%。最终的 CSV 文件本身往往约为 1,500KB。
  • 我始终可以手动将此工作表另存为 CSV,而不会遇到任何错误消息,但是当我通过此 VBA 宏执行此操作时,我会收到错误消息。

Picture of error message

我的 excel VBA 另存为 CSV 宏:

Sub saveAsCSV()
Application.DisplayAlerts = False

ThisWorkbook.Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs Filename:="dummyfilename.csv", FileFormat:=xlCSV, CreateBackup:=True
ActiveWorkbook.Close

Application.DisplayAlerts = True
End Sub

【问题讨论】:

  • 尝试用ThisWorkbook.Sheets("Sheet1").Activate替换ThisWorkbook.Sheets("Sheet1").Copy
  • 我怀疑该错误是由于您的 SaveAs 指令中缺少路径引起的。为文件名添加路径,看看错误是否仍然存在。
  • 澄清一下,我的 SaveAs 指令中有一条路径。我只是在使用一个假人,因为我觉得这里不需要使用实际路径,但我现在明白这有多么误导。
  • 您将文件保存在哪个驱动器上? AppData 在哪个驱动器上?如果这些不同,您是否检查了两者的可用空间?

标签: excel vba csv excel-2010


【解决方案1】:

试试这个,你不必使用CopyActivate。如果您的代码在您想要保存为工作簿的工作簿中,您可以使用ThisWorkbook。感谢@Variatus 确定了对路径的需求。

ThisWorkbook.Sheets("Sheet1").SaveAs ThisWorkbook.Path & "/" & "dummyfilename" & ".csv", FileFormat:=6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2015-01-22
    相关资源
    最近更新 更多