Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图通过Excel VBA宏将Excel工作表另存为CSV时出错_Excel_Vba_Csv_Excel 2010 - Fatal编程技术网

试图通过Excel VBA宏将Excel工作表另存为CSV时出错

试图通过Excel VBA宏将Excel工作表另存为CSV时出错,excel,vba,csv,excel-2010,Excel,Vba,Csv,Excel 2010,在Windows7上使用Excel2010。我有一个VBA宏,它将excel工作簿(.xlsm)的第一个工作表保存到CSV文件中。这在过去基本上起了作用。最近,我从下图中收到错误消息,状态为“运行时错误'1004”:Microsoft Excel无法打开或保存更多文档,因为没有足够的可用内存或磁盘空间 所以有几件事: 从我的谷歌搜索中,一个常见的建议解决方案是将文件的位置设置为可信位置。这不起作用 我有足够的磁盘空间。这不可能是问题所在 我不确定“可用内存”到底是什么意思,但如果它以任何方式指

在Windows7上使用Excel2010。我有一个VBA宏,它将excel工作簿(.xlsm)的第一个工作表保存到CSV文件中。这在过去基本上起了作用。最近,我从下图中收到错误消息,状态为“运行时错误'1004”:Microsoft Excel无法打开或保存更多文档,因为没有足够的可用内存或磁盘空间

所以有几件事:

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

我的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

试试这个,你不必使用
Copy
Activate
。如果您的代码位于要另存为工作簿的工作簿中,则可以使用
此工作簿
。@Variatus发现需要一条路径,值得称赞

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

尝试替换
此工作簿.Sheets(“Sheet1”)。用
此工作簿.Sheets(“Sheet1”)复制
。激活
我怀疑此错误是由于SaveAs指令中缺少路径造成的。为文件名添加一个路径,然后查看错误是否仍然存在。为了澄清,我的SaveAs指令中确实有一个路径。我只是使用了一个虚拟的,因为我觉得没有必要在这里使用实际的路径,但我现在明白了这有多误导。你把文件保存在哪个驱动器上?AppData位于哪个驱动器上?如果两者不同,您是否检查了两者的可用空间?