VBA复制列大幅增加文件大小

我在Excel中有以下一段VBA代码:

Dim src As Worksheet Dim des As Worksheet Dim rows As Integer Dim src_rows As Integer Set src = Sheets("source sheet") Set des = Sheets("destination sheet) 'Copy and Paste relevant columns src.Activate src_rows = Range("A1", Range("A1").End(xlDown)).Count Range("A2:G2" & src_rows).Copy des.Activate Range("A2").PasteSpecial Paste:=xlPasteValues 

我的目标是从源表(复制SQL数据连接)复制几个列到不同的工作表。 源数据可以改变,因此我计算了当前有多less行使用variablessrc_rows

重复此代码以复制其他需要的列。 这一切都是我想要的。 但是,运行和保存后,文件大小从5MB左右跳到60MB左右! 它不可能是额外的数据,因为只有大约10K行。 如果我删除复制的数据,重新保存文件不会回落到5MB。

我也尝试使用range(__).copy destination:= ___ ,但这不起作用。 如果我手动复制,文件大小不会增加。 如果我手动复制并logging一个macros并运行此macros,该文件增加。

任何build议将不胜感激。

复印时,您有额外的2行数。 应该是Range("A2:G" & src_rows).CopyRange("A2:G" & src_rows).Copy

我也build议使用RangeUsed.Rows而不是倒计时(如果第二行是空的End(xlDown)将去最大行)。

不要将提交的数据复制粘贴到剪贴板,而是尝试使用VBA将一个范围的值设置为另一个范围,例如

 Sheets("dest").Range("A1:A100").Value = Sheets("src").Range("A1:A100").Value 

比…更有效率

 Sheets("dest").Range("A1:A100").Copy Sheets("src").Range("A1:A100").PasteSpecial xlPasteValues 

请参阅下面的简单代码

 Sub test() Dim src As Worksheet Dim des As Worksheet Dim src_rows As Long Set src = Sheets("source sheet") Set des = Sheets("destination sheet") src.Range("A2:G" & src.Range("A1").End(xlDown).Row).Copy des.Range("A2") End Sub