2015-06-23 158 views
0

通過看別人的代碼,並修改它,我設法這段代碼拼湊:如何添加循環以通過文件夾到此代碼?

Sub LookForNew() 
Dim n As String, msg As String, d As Date 
msg = "" 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set fils = fso.GetFolder(Range("B4")).Files 
For Each fil In fils 
    n = fil.Name 
    d = fil.DateCreated 
    If d >= Range("E1") Then 
     msg = msg & n & vbTab & d & vbCrLf 
     Range("C4") = Range("B1") 
    End If 
Next fil 
If msg = "" Then 
    MsgBox "No new files" 
    Range("C4") = Range("B1") 
Else 
    MsgBox msg 
End If 
Set fso = Nothing 
End Sub 

這遍歷文件夾中的文件(路徑爲「B4」)。如果文件管理器比「E1」中給出的日期更新,它將返回警報。

我想補充一點是,循環遍歷範圍「B4:B22」中給出的所有文件夾路徑,並對這些文件夾中的每個文件重複上述操作。到目前爲止,我只會遇到錯誤...

回答

1

如果我已經正確理解您的問題,我會簡單地將所需的操作包裝在Do Until中,其中在每次迭代中行增加1。

很顯然,如果範圍「B4:B22」發生變化,那麼這可能變得更聰明。

Private Sub LookForNew() 
Dim n As String, msg As String, d As Date 
msg = "" 
rownum = 3 
Set fso = CreateObject("Scripting.FileSystemObject") 

Do Until rownum = 24 
rownum = rownum + 1 
Set fils = fso.GetFolder(Range("B" & rownum)).Files 
    For Each fil In fils 
     n = fil.Name 
     d = fil.DateCreated 
     If d >= Range("E1") Then 
      msg = msg & n & vbTab & d & vbCrLf 
      Range("C4") = Range("B1") 
     End If 
    Next fil 

    If msg = "" Then 
     MsgBox "No new files" 
     Range("C4") = Range("B1") 
    Else 
     MsgBox (msg) 
    End If 

    'Set fso = Nothing 
Loop 

End Sub 
+0

感謝您的回答。這工作得很好,非常快! – Nexis

相關問題