2017-05-31 47 views
1

我是新来的网站,需要一些帮助。我在Excel中创建了一个宏,以便从工作簿中的某些单元格中提取值并合并该信息。该代码似乎工作,除了它只是从文件夹中的大约一半的工作簿拉。有谁知道为什么它这样做,我如何解决它?LoopThrough功能跳过文件

Sub LoopThroughDirectory() 
    Dim MyFile As String 
    Dim erow 
    Dim Filepath As String 
    Filepath = "T:\Sales Orders\2017\May\" 
    MyFile = Dir("T:\Sales Orders\2017\May\") 

    Do While Len(MyFile) > 0 
    If MyFile = "maytt.xlsm" Then 
     Exit Sub 
    End If 

    Workbooks.Open ("T:\Sales Orders\2017\May\" & MyFile) 
    Range("F1:F7").Copy 
    ActiveWorkbook.Close 

    ecolumn = Sheet1.Cells(Columns.Count).End(xlToLeft).Offset(0, 1).Column 


    ActiveSheet.Paste Destination:=Worksheets("Summary").Range(Cells(1, ecolumn), Cells(7, ecolumn)) 

    MyFile = Dir 
    Loop 

End Sub 
+1

它是否只从名称以字母“A”开始到“L”的文件提取? – YowE3K

+1

您可能会考虑放置文件掩码,以便您只处理工作簿(例如'MyFile = Dir(“T:\ Sales Orders \ 2017 \ May \ *。xl *”)')。 Windows会把类似'thumbs.db'的系统文件放在一个像你一样的循环中。 – Jeeped

+0

YowE3K - 不,似乎没有任何押韵或原因被跳过的文件。 –

回答

2

它看起来像你想跳过文件"maytt.xlsm"但你实际上做的是停止到达该文件时,整个事情(Then Exit Sub)。要跳过该文件并继续做如下修改的代码:

1的myFile = Dir语句之前添加一行标签:

NextFile: ' <---------Add this 
     MyFile = Dir 
    Loop 

2-更换Exit SubGoto NextFile

+0

谢谢!我试过了,但现在宏只是想无限期地运行这些文件。有任何想法吗? –

+0

@ L.Oldenburg是否在** MyFile = Dir这行之前放置了标签'NextFile:'**? –

+0

这里就是我所做的:子LoopThroughDirectory() 昏暗MyFile的作为字符串 昏暗erow 昏暗的文件路径作为字符串 文件路径= “T:\销售订单\ 2017年\月\” 下一文件: 为MyFile = DIR(“T:\销售订单\ 2017年\月\ “) 做,当莱恩(MyFile的)> 0 如果为MyFile = ”maytt.xlsm“ 然后 转到下一文件 结束如果 Workbooks.Open(” T:\销售订单\ 2017年\ May \“&MyFile) Range(”F1:F7“)。Copy ActiveWorkbook.Close ecolumn = Sheet1.Cells(Columns.Count).End(xlToLeft).Offset(0,1).C olumn ActiveSheet.Paste目的地:=工作表( “摘要”)范围(将细胞(1,ecolumn),将细胞(7,ecolumn)) MyFile的= DIR 循环 结束子 –