2015-06-23 67 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

相关问题