2012-11-14 96 views
3

我需要遍历包含许多excel文件的文件夹并将文件名和创建时间提取到文本文件。通过创建时间,我指的是文件最初创建的时间,而不是在我的系统上创建的时间。获取文件夹中所有excel文件的原始创建时间

以下代码有效,但给我错误的时间。我认为FileDateTime是错误的命令,但经过一个小时的绝望谷歌搜索后,我一直无法找到正确的命令。

在此先感谢您的帮助!

Sub CheckFileTimes() 
    Dim StrFile As String 
    Dim thisBook As String 
    Dim creationDate As Date 
    Dim outputText As String 
    Const ForReading = 1, ForWriting = 2 
    Dim fso, f 

'set up output file 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set f = fso.OpenTextFile("C:\TEST.txt", ForWriting, True) 

'open folder and loop through 
    StrFile = Dir("c:\HW\*.xls*") 
    Do While Len(StrFile) > 0 
'get creation date 
     creationDate = FileDateTime("C:\HW\" & StrFile) 
'get filename 
     thisBook = StrFile 
     outputText = thisBook & "," & creationDate 
'write to output file 
     f.writeLine outputText 
'move to next file in folder 
     StrFile = Dir 
    Loop 
    f.Close 
End Sub 

回答

1

韦尔普,我找到了答案。看起来我并不太遥远(虽然我不认为这是接近最佳的)。感谢所有看过这个的人。

Sub CheckFileTimes3() 
    Dim StrFile, thisBook, outputText As String 
    Dim creationDate As Date 
    Dim fso, f 
    Dim oFS As Object 
    Const ForReading = 1, ForWriting = 2 

    Application.ScreenUpdating = False 
    Application.DisplayAlerts = False 
    Application.EnableEvents = False 

    'open txt file for storing results 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set f = fso.OpenTextFile("C:\TEST.txt", ForWriting, True) 

    'loop through all files in given folder 
    StrFile = Dir("c:\HW\*.xls*") 
    Do While Len(StrFile) > 0 
     Workbooks.Open Filename:="C:\HW\" & StrFile 
     creationDate = ActiveWorkbook.BuiltinDocumentProperties("Creation Date") 
     thisBook = StrFile 
     outputText = thisBook & "," & creationDate 
     'MsgBox outputText 
     f.writeLine outputText 
     ActiveWorkbook.Close 
     StrFile = Dir 
    Loop 
    f.Close 

    Application.ScreenUpdating = True 
    Application.DisplayAlerts = True 
    Application.EnableEvents = True 
End Sub 
1

您可以使用DateCreatedFileSystemObject

一个小调整到当前的代码做这个

我已摆脱了这些变量以及

Sub CheckFileTimes() 
Dim StrFile As String 
Dim StrCDate As Date 
Dim fso As Object 
Dim f As Object 

'set up output file 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set f = fso.OpentextFile("C:\TEST.txt", 2, True) 

'open folder and loop through 
    StrFile = Dir("c:\HW\*.xls*") 
    Do While Len(StrFile) > 0 
    Set objFile = fso.getfile("c:\HW\" & StrFile) 
'get creation date 
     StrCDate = objFile.datecreated 
'write to output file 
     f.writeLine StrFile & "," & StrCDate 
'move to next file in folder 
     StrFile = Dir 
    Loop 
    f.Close 
End Sub 
+0

感谢您的快速响应。这仍然给我错误的时间。 经过一番研究后,它看起来像我需要使用BuiltinDocumentProperties(“创建日期”),但此对象不支持它。 你知道有什么方法可以应用它吗? –

+1

实际上'BuiltinDocumentProperties(“创建日期”)'给出了模板创建日期 - 不是工作簿创建日期 – brettdj

+0

有什么区别? –

相关问题