我正在开发一个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正在崩溃。
我们有两种情况:
我的问题,
需要帮助, 提前谢谢。
答案 0 :(得分:1)
一个字符= 1个字节。因此,当用户修改CSV时,您可以通过以下方式跟踪chnge:
在单元格值更改事件上,您将在单元格+ 1(对于逗号或任何其他分隔符)中添加字符数量作为开头时文件大小的字节数。这样您就可以在修改文件期间控制大小。
请记住,如果细胞已经有了#34;某些东西"在其中,您必须减去此值(字符数/字节数),因为它将被覆盖。
答案 1 :(得分:1)
以下代码可能会对您有所帮助,在下面的代码中我使用了1 MB作为参考。您可以将其更改为1GB或根据您的属性。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call FileSize
End Sub
Sub FileSize()
Dim LResult As Long
strFileFullName = ActiveWorkbook.FullName
LResult = FileLen(strFileFullName)
If LResult > 1000 Then
MsgBox "FileSize is large " & (LResult)
ActiveWorkbook.Close (savechanges)
End If
End Sub