EXCEL VBA:如何提高这段代码的速度

此代码工作。 由于循环太多,循环内循环,所以工作起来非常缓慢。 我们怎样才能提高这个程序的速度? 我正在尝试从一个文件复制范围到另一个不同文件夹中的同名文件。 我在“c:\ Charts \ 1 \”&“c:\ Charts \ 0 \”中有名为“A”,“B”,“C”…“G”的文件夹。 在每个文件夹“A”,“B”,“C”…“G”里面有文件1,2,3,4,… 10。

我的代码是这样的

vArr = Array("A", "B", "C", "D", "E", "F", "G") Dim fileName1, Pathname1 As String Pathname1 = "c:\Charts\1\" Pathname="c:\charts\0\" For Each vFile1 In vArr1 fileName1 = Dir(Pathname1 & vFile1 & "\" & "*.xlsx") Do While fileName1 <> "" For Each vFile In vArr filename = Dir(Pathname & vFile & "\" & "*.xlsx") Do While filename <> "" If filename = fileName1 Then Set WB1 = Workbooks.Open(Pathname1 & vFile & "\" & fileName1) WB1.Application.ScreenUpdating = False WB1.ActiveSheet.Range("M1:M30").Copy WB1.Close (False) Set WBD1 = Workbooks.Open(Pathname & vFile & "\" & filename) WBD1.ActiveSheet.Range("C1").Select WBD1.ActiveSheet.Paste WBD1.ActiveSheet.Cells(1, 3).Value = "HSI Q4 2014-15" WBD1.Close (True) filename = Dir() Else End If fileName1 = filename Loop Next Loop Next 

我们怎样才能使这项工作更快?

我很惊讶这个代码“做它需要做的事情”。 我看到以下的错误。

Bug1:只能有一个Dir()打开。 您使用两个嵌套的Dir()

Bug2:看循环:

 Do While filename <> "" If filename = fileName1 ... End if fileName1 = filename Loop 

如果在第一次迭代中filename不等于filename1那么它将在第二次迭代中,但是,不能保证该文件存在于pathname1因为它没有通过调用最上面的Dir() (它你不能因为第二个Dir()取代了第一个)。

也许你应该先指定这个代码应该做什么。