我正在处理一个VBA宏,该宏将通过创建临时文件来处理CSV文件。我正在使用Microsoft Excel 2010 32-bit
。32位版本具有2 Gigabyte
内存限制。
使用宏IS> 1GB处理的CSV文件的大小。如前所述,在处理CSV文件时,我们将其保存到临时 *XLS文件中。因此,处理CSV文件时的总尺寸将是我们在处理过程中创建的size of CSV file
size of the temp xls
文件。两个文件的大小一起超出了2GB的极限,因此Excel崩溃了。
我们有2个方案:
- 当用户使用宏打开CSV文件时,如果用户打开大小为> 1GB并关闭Excel的CSV文件,我向用户显示了一个消息框。
- 当用户使用宏打开CSV文件时,CSV文件大小<1GB,然后用户向其添加了一些数据,这将使尺寸> 1GB,我必须在文件大小达到1GB并关闭Excel而不会丢失任何数据时向用户显示一个消息框。
我的问题,
- 对于第一种情况,我可以使用filelen返回长度值,以指定字节中的文件长度。
- 对于第二种情况:我没有得到如何使用宏来编辑CSV文件时如何计算文件大小。
需要帮助,预先感谢。
一个字符= 1个字节。因此,当用户修改CSV时,您可以按以下方式跟踪小货币:
在Cell-value改变的事件中,您在开始时将字符 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