计算文件大小-VBA宏



我正在处理一个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个方案:

  1. 当用户使用宏打开CSV文件时,如果用户打开大小为> 1GB并关闭Excel的CSV文件,我向用户显示了一个消息框。
  2. 当用户使用宏打开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

最新更新