Excel工作簿的大小是否运行一个VBA代码?
Excel工作簿的大小是否影响VBA代码的运行? 我写了一个VBA代码到一个大小为200 MB的excel工作簿中。excel工作簿具有浏览button,这些浏览buttonselect另一个Excel文件并执行操作,并将一些所需内容写回200 MB大小的文件。 但是这些操作太慢了8-13分钟。 这些excel工作簿包含图表,graphics和更多的模块和16张和数据透视表的东西(这些效果会运行vba代码吗?)
但是,我已经写了另一个新的Excel工作簿相同的代码,其大小为200KB,具有相同的浏览button和所有的东西,这里花了4秒钟完成。 我不知道怎么回事 使用for循环对于大文件是有害的,但是我不能在我的代码中没有循环的情况下执行我的操作。如果for循环是有害的,那么它甚至应该影响200KB大小,但是没有危险! 我现在要做什么?
确保在写入工作簿的代码之前使用了Application.ScreenUpdating=False
和Application.Calculation=xlManual
。 (然后在最后重置它们)。
另外,每次读取和写入一个Range都有很大的开销,所以将大块数据读入一个variables通常要快得多。
Dim vArr as Variant vArr=Worksheets("Sheet1").Range("A1:Z9999").Value2 'Manipulate the resulting array. For j = LBound(vArr) To UBound(vArr) For k = LBound(vArr,2) To UBound(vArr,2) vArr(j,k)=vArr(j,k)*2 Next k Next j 'And then write it back to its destination. Worksheets("Sheet2").Range("A1:Z9999")=vArr
即使仅仅是读取和/或写入文件的行为在如此大的文件中花费大量时间,许多中间操作也可能受到影响。