Excel VBA复制列大大增加了文件大小
我在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(
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
谢谢,其他人都注意到了,但这次错过了。现在,他正在寻找比我所做的更好的东西。谢谢,汉克斯,注意到了其他人的想法,但这次错过了。现在,他正在寻找比我所做的更好的东西。谢谢