【发布时间】:2018-02-22 01:25:51
【问题描述】:
我正在开发一个 VBA 宏,它将通过创建一个临时文件来处理一个 CSV 文件。
我正在使用Microsoft Excel 2010 32-bit。 32 位版本有2 Gigabyte 内存限制。
使用宏处理的 CSV 文件大小 > 1GB。
如前所述,在处理 CSV 文件时,我们将其保存到临时 *xls 文件中。
因此,处理 CSV 文件时的总大小将是我们在处理过程中创建的 size of CSV file + size of the temp xls 文件。
这两个文件的大小加在一起超过了 2GB 的限制,因此 excel 崩溃了。
我们有两个场景:
- 当用户使用宏打开 CSV 文件时,如果用户打开大小大于 1GB 的 CSV 文件并关闭 excel,我会向用户显示一个消息框。
- 当用户使用宏打开 CSV 文件,并且 CSV 文件大小 1GB,我必须在文件大小达到 1GB 时立即向用户显示一个消息框并关闭 excel 而不会丢失任何数据。
我的问题,
- 对于第一种情况,我可以使用 FileLen,它返回一个 Long 值,指定文件的长度(以字节为单位)。
- 对于第二种情况:当用户使用宏编辑 CSV 文件时,我不知道如何计算文件大小。
需要帮助, 提前致谢。
【问题讨论】:
-
你能用FileWatcher吗?作为想法:大型 csv 文件可以拆分为较小的文件,例如每 1000 行转到单独的文件。然后将关闭原始文件并从每个小文件开始处理。