VBA:SaveAs 方法创建无限的 csv 文件
Posted
技术标签:
【中文标题】VBA:SaveAs 方法创建无限的 csv 文件【英文标题】:VBA: SaveAs method creates infinite csv file 【发布时间】:2017-09-11 13:03:21 【问题描述】:我正在遍历文件中的多个工作表,将信息复制到另一个工作表(称为 wsCSV,存储在 ThisWorkbook 中),然后我想从该工作表创建一个 CSV 文件。创建工作表后,循环应继续到下一个工作表。
这是应该创建 CSV 的部分代码:
' Create CSV file
If iControl = 1 Then
Application.DisplayAlerts = False
wsCSV.Copy
ActiveWorkbook.SaveAs Filename:=sDestin & "\" & sShName & ".csv", FileFormat:=xlCSV, CreateBackup:=True
ActiveWorkbook.Close SaveChanges:=False
Application.DisplayAlerts = True
End If
无论如何,当我继续执行代码时,SaveAs 方法开始创建“无限”文件,直到它占用了我所有的磁盘空间。我不知道怎么可能,因为文件有 6 行和 3 列,所以它应该有 1-2 kb。我必须手动停止该过程。有什么想法吗?我在另一个宏中尝试了这段代码,它工作正常。
谢谢!
【问题讨论】:
注释掉Application.DisplayAlerts = False
行,直到它正常工作——它可能隐藏了一些有用的信息。在调试模式下单步执行您的代码以查看发生了什么。考虑到您提供的代码有多么小,我猜无论wsCSV
是什么,它比您想象的要大得多。
FreeMan:注释掉警报声明没有帮助,我之前考虑过这个选项。 wsCSV 是一个小型工作表,其值粘贴在 A1:C6 中。当我打开创建的 csv 文件时,即使它只填充了这些值,它的大小也有很多 GB(如果我很快停止该过程)
评论该行不会修复任何事情,但最好检查一下它是否隐藏了任何可以告诉你发生了什么的警报 - 它总是调试的第一步。您是在 Excel 中还是在记事本中打开 .CSV 来查看它?如果在 Excel 中,请点击 Ctrl-End
以查看最后使用的单元格是什么。尝试在记事本(或记事本++ 或其他文本编辑器 - 多 GiB 对记事本来说可能太大),看看最后是否有某种意外的随机垃圾。此外,请使用Ctrl-End
确保wsCSV
仅与您认为的一样满。
是的,这已经奏效了!我不知道为什么,但是使用 Ctrl-End 我得到了 wsCSV 中的所有单元格都被使用(尽管其中只有少数包含值)。重置 wsCSV 工作表确实有效。谢谢!
【参考方案1】:
确保您的wsCSV
工作表确实如您所想的那样为空。使用 Ctrl-End 查看最后使用的单元格是什么,并在必要时清理它。
【讨论】:
以上是关于VBA:SaveAs 方法创建无限的 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章