Excel 如何摆脱这个无限循环?

Excel 如何摆脱这个无限循环?,excel,vba,Excel,Vba,我的文件夹包含许多文件。我每个月都有类似的文件夹。数据文件具有相同的名称,但它们位于不同的文件夹中。我想要的是将上个月的数据文件的特定列(计算结果)复制到新月份的数据文件中 我的代码是 Dim fileName1, Pathname1 As String Pathname1 = "c:\Charts\1\" For Each vFile1 In vArr1 fileName1 = Dir(Pathname1 & vFile1 & "\" & "*.xlsx") Do Wh

我的文件夹包含许多文件。我每个月都有类似的文件夹。数据文件具有相同的名称,但它们位于不同的文件夹中。我想要的是将上个月的数据文件的特定列(计算结果)复制到新月份的数据文件中

我的代码是

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
Dim文件名1,路径名1作为字符串
Pathname1=“c:\Charts\1\”
对于vArr1中的每个vFile1
fileName1=Dir(路径名1&vFile1&“\”&“*.xlsx”)
在文件名1“”时执行此操作
设置WB1=Workbooks.Open(路径名1&vFile1&“\”&fileName1)
WB1.Application.ScreenUpdate=错误
WB1.ActiveSheet.Columns(“M”).复制
WB1.关闭(错误)
对于vArr中的每个vFile
fileName=Dir(路径名&vFile1&“\”和“*.xlsx”)
如果fileName=fileName1,则
设置WBD1=Workbooks.Open(路径名&vFile1&“\”&fileName1)
WBD1.ActiveSheet.Columns(“C”)。选择
WBD1.ActiveSheet.Paste
WBD1.关闭(真)
其他的
如果结束
下一个
环
下一个
我正在做的是 1.打开一个文件

  • 复制一列

  • 检查文件名是否相同

  • 如果它们相同,则粘贴复制的数据

  • 但是循环是无限的。 我调试过了,找不到它
    请帮助

    当您使用带有参数的DIR函数时,它会找到第一个符合指定条件的文件。如果要获取下一个文件,请单独使用DIR()


    在您的代码中,您一次又一次地获取第一个文件,但从未达到filename1=“”

    的条件。您确定这是一个无限循环,而不仅仅是一个非常低效、耗时很长的算法吗?是的,我尝试过。。。它将无限延伸。一旦满足条件,它就不会移动到第二个文件。反复检查同一个文件。我想这是因为文件是关闭的。se DIR()是用它自己的方式关闭的?!当您使用filename1=Dir(路径名&vFile1&“\”&“*.xlsx”)时,它将返回第一个匹配项。您需要在代码中输入一行filename1=Dir(),以获取下一个匹配项和后续匹配项。您还需要修复内部For…next循环,因为它正在处理vFile的值,但是您使用的是vFile1而不是vFile。谢谢。。它转到第二个文件并停止。显示错误1004