Excel VBA复制列大大增加了文件大小

Excel VBA复制列大大增加了文件大小,excel,vba,filesize,Excel,Vba,Filesize,我在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(

我在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数据连接填充)中的多个列复制到不同的工作表中。源数据可以更改,因此我使用变量
src_rows

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

我也尝试过使用
范围(u;)。复制目标:=\u__
,但这不起作用。 如果我手动复制,文件大小不会增加。如果手动复制并录制宏并运行此宏,则文件会增加


如果您有任何建议,我们将不胜感激。

您在复制时,在行数前面有一个额外的
2
。应该是
范围(“A2:G”和src_行)。复制


我还建议使用
RangeUsed.Rows
而不是倒计时(如果第二行为空,则
End(xlDown)
将转到最大行)。

复制时,在行计数前面有一个额外的
2
。应该是
范围(“A2:G”和src_行)。复制


我还建议使用
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

尝试使用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

请参阅下面的简化代码

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

谢谢,其他人都注意到了,但这次错过了。现在,他正在寻找比我所做的更好的东西。谢谢,汉克斯,注意到了其他人的想法,但这次错过了。现在,他正在寻找比我所做的更好的东西。谢谢