此代码有效。由于它有太多的循环,循环内部循环,这非常缓慢。我们怎样才能提高这个程序的速度? 我正在尝试将范围从一个文件复制到另一个文件夹中的同名文件。我的文件夹名为" A"," B"," C" ..." G"在" c:\ Charts \ 1 \" &安培; " C:\图表\ 0 \&#34 ;.在每个文件夹内" 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
我们如何才能更快地完成这项工作?
答案 0 :(得分:1)
我很惊讶这段代码&#34;做了它需要做的事情&#34;。我看到以下错误。
错误1:同时只能打开一个Dir()
。您使用两个嵌套的Dir()
。
Bug2:看看循环:
Do While filename <> ""
If filename = fileName1
...
End if
fileName1 = filename
Loop
如果在第一次迭代时filename
不等于filename1
,那么它将在第二次迭代中,但是,不能确保该文件存在于pathname1
中因为没有通过调用最顶层Dir()
获得它(你不能这样做,因为第二个Dir()
取代了第一个{。}}。
也许您应该首先指定此代码应该执行的操作。