2015-06-22 146 views
0

我的文件夹包含很多文件。我每个月都有类似的文件夹。数据文件具有相同的名称,但它们位于不同的文件夹中。我想要的是将上个月的数据文件的特定列(计算结果)复制到新月的数据文件。如何摆脱这种无限循环?

我的代码

Dim fileName1, Pathname1 As String 
Pathname1 = "c:\Charts\1\" 
For Each vFile1 In vArr1 
fileName1 = Dir(Pathname1 & vFile1 & "\" & "*.xlsx") 
Do While fileName1 <> "" 
Set WB1 = Workbooks.Open(Pathname1 & vFile1 & "\" & fileName1) 
    WB1.Application.ScreenUpdating = False 
    WB1.ActiveSheet.Columns("M").Copy 
    WB1.Close (False) 

For Each vFile In vArr 
fileName = Dir(Pathname & vFile1 & "\" & "*.xlsx") 

If fileName = fileName1 Then 
Set WBD1 = Workbooks.Open(Pathname & vFile1 & "\" & fileName1) 
WBD1.ActiveSheet.Columns("C").Select 
    WBD1.ActiveSheet.Paste 
    WBD1.Close (True) 
    Else 
    End If 

    Next 
Loop 
Next 

我在做什么是 1.打开一个文件

  • 副本列

  • 检查文件名是一样的

  • 如果他们是相同的粘贴复制的数据

  • 该循环得到无限。 我调试了并找不到它 请帮忙

    +0

    你确定它是一个无限循环,而不仅仅是一个非常低效的算法,正在服用一种很长的时间? –

    +0

    雅我试过......它无限的去。一旦条件得到满足,它会发生什么,它不会移动到第二个文件。一次又一次检查同一个文件。我认为它是因为文件已关闭。 –

    回答

    2

    当您将DIR函数与参数一起使用时,它会找到与指定条件匹配的第一个文件。如果您想获取下一个文件,请使用DIR()。

    在你的代码是遍地获得的第一个文件再次,从来没有达到条件,其中文件名1 =“”

    +0

    se DIR()本身意味着什么?! –

    +1

    当您使用filename1 = Dir(Pathname&vFile1&“\”&“* .xlsx”)时,它会返回第一个匹配项。你的代码中需要一行代码,说明filename1 = Dir()来获得下一个和后续的匹配。您还需要修复内部For ... next循环,因为它正在处理vFile的值,但是您使用的是vFile1而不是vFile。 –

    +0

    谢谢..它进入第二个文件并停止。显示错误1004 –