2017-05-31 81 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 循環 結束子 –