【发布时间】:2017-09-26 11:20:55
【问题描述】:
最近,我遇到了一个似乎很容易解决的问题,但我是 VBA 新手,因此我需要任何建议。 我正在尝试在 VBA 中编写一个宏来复制一个非常大的工作表(大约 140k 行)。
我根据以下主题尝试了不同的方法:
- Fastest Method to Copy Large Number of Values in Excel VBA
- Large File Size Copy Ranges with VBA Very large excel file - how to copy data between sheets?
我目前的解决方案是:
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Dim wb As Workbook
Set wb = ActiveWorkbook
With Workbooks.Open(FileName, ReadOnly:=True)
.Sheets(1).Visible = -1
.Sheets(1).Copy before:=wb.Sheets(1)
wb.Sheets(1).Name = "Name"
.Close False
End With
当我运行这个宏时 - Excel 没有响应并且程序没有打开文件。我的问题是,是否有可能使用标准 VBA 方法复制大表?代码示例适用于较小的文件。
【问题讨论】:
-
上述表格有很多公式吗?您是否尝试关闭屏幕更新、计算、事件处理等...?
-
@A.S.H 感谢您的回复。是的,我做到了。
-
文件名中是否也有一些东西在运行?
-
可能只是没有足够的板载内存来处理事务的简单问题 - 也许有很多交换文件活动?您使用的是 32 位 Excel 吗? 64 位将提供更好的内存利用率。我知道,我谈到了显而易见的问题,如果你被 32 位(和有限的内存)卡住了,那么你卡在 32 位(和有限的内存):(