2013-11-22 12 views
2

我有一个包含数据的工作表,但我需要添加创建数据的时间。这次是我从中获得数据的文件的“上次修改时间”。在Excel中通过列循环DateLastModified函数

我已经得到了所有的文件名,如在工作表第一列中的“filename.txt”中,因此每行数据都可以被引用到它的文件中。我有这个功能从文件名拉上次更改时间,日期:

Function FileLastModified(strFullFileName As String) 
strFullFileName = "C:\...\filefolder\" + Range("A1").Value 
    Dim fs As Object, f As Object, s As String 

    Set fs = CreateObject("Scripting.FileSystemObject") 
    Set f = fs.GetFile(strFullFileName) 

    s = UCase(strFullFileName) & vbCrLf 
    s = f.DateLastModified 
    FileLastModified = s 

    Set fs = Nothing: Set f = Nothing 


End Function 

现在我想的功能要经过A列中所有的文件名,并把所有的上次更改时报列D.所以,我该怎么办编辑这个

strFullFileName = "C:\.....\" + Range("A1").Value 

从A列自动拉文件名?

+0

这是干什么用的? 's = UCase(strFullFileName)&vbCrLf'你在分配它后立即擦除's'的值。 –

回答

0

这样的事情?

Dim FSO As Object: Set FSO = CreateObject("Scripting.FileSystemObject") 
Dim i As Long 
Dim n As Long 
Dim filenames As Variant 
Dim lastModifiedTimes As Variant 

'How many filenames are there? (should tailor this to your exact situation) 
n = Range("A:A").Find("*", Range("A1"), SearchDirection:=xlPrevious).Row 

filenames = Range("A1").Resize(n, 1).Value 'load all fnames from sheet to array 

ReDim lastModifiedTimes(1 To n, 1 To 1) 
For i = 1 To n 
    lastModifiedTimes(i,1) = _ 
     FSO.GetFile("C:\.....\" & filenames(i,1)).DateLastModified 
Next i 

'Slap times array onto sheet 
Range("D1").Resize(n, 1).Value = lastModifiedTimes 

注意,我摆脱了你的FileLastModified包装的功能,因为它真的只是一个包装的东西,它可以通过一行代码来代替。