需要连接VBA代码以防止内存问题解决方法

时间:2009-12-06 22:04:48

标签: vba string-concatenation concatenation

我的设置: 拥有50,​​000行数据。 (我的行数将来会增加。所以不妨说我有一个64000+行的完整工作表。) 所有数据都是TEXT,没有公式等。

A栏已打开 列B到AC包含需要连接的数据 一旦连接到A列的行中的数据将包含60,000个数字或6kb的文件大小。在额外的maniuplation之后,每个单元格将成为一个文件。

我尝试在Excel中连接,但遇到了内存问题。内存问题是当我选择并将连接函数填充到工作表中时。它在8200 +/-行崩溃。 我的系统是2GB的ram,windows xp专业版和Excel 2003.拥有4GB的磁盘空间

希望找到一个可以节省内存的VBA代码,而不是像在excel中那样崩溃。

谢谢

1 个答案:

答案 0 :(得分:0)

虽然这是excel的一个不寻常的用途,但假设每个连接操作占用内存只是在你用完之前释放一些内存。

虽然您可以将2000行复制并粘贴到自身作为值,但不是那么优雅。可选地还删除A2:AC2002(可能不需要的使用数据)。关闭自动计算也可能有所帮助。

使用来自宏录制器的宏简单记录你做这个[相对定位]的宏。首先选择你已经完成的公式。

非常粗略的代码:

Sub Macro5()

With Application
  .EnableEvents = False
  .ScreenUpdating = False
End With

Dim i As Long

For i = 0 To 32
    Selection.Copy
    ActiveCell.Offset(1, 0).Range("A1:A2000").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveCell.Offset(-1, 0).Range("A1:A2000").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveCell.Offset(2000, 0).Range("A1").Select
Next i

With Application
  .EnableEvents = True
  .ScreenUpdating = True
End With
End Sub