我使用下面的代码来获取工作簿的创建日期。
Dim mFile As String
mFile = "C:\User\User.Name\Test\Test.xlsx"
Debug.Print CreateObject("Scripting.FileSystemObject").GetFile(mFile).DateCreated
但令我惊讶的是,这会返回在目录中创建文件的日期。
如果将文件复制到另一个文件夹,上面将返回复制(创建)文件的时间和日期。
要实际获取原始的创建日期,我尝试使用BuiltinDocumentProperties
方法。
如下所示:
Dim wb As Workbook
Set wb = Workbooks.Open(mfile) '/* same string as above */
Debug.Print wb.BuiltinDocumentProperties("Creation Date")
上方 返回实际创建文件的原始日期。
现在,我有数百个文件位于我需要获取原始创建日期的目录中。
我当然可以在上面查看文件,但是从共享驱动器打开和关闭所有文件需要一些时间。所以我想知道,如果我可以在不打开文件的情况下获取BuiltinDocumentProperties
,就像使用上面的第一个代码一样,它更快更容易管理。
如果你有人能指出我可能的解决方案,那就太好了。
答案 0 :(得分:3)
尝试这样的事情。关键是特殊的DSO对象。
Imports Scripting
Private Sub ReadProperties()
Dim pathName As String = "C:\yourpathnamehere"
Dim Fso As FileSystemObject = New Scripting.FileSystemObject
Dim fldr As Folder = Fso.GetFolder(pathName)
Dim objFile As Object = CreateObject("DSOFile.OleDocumentProperties")
Dim ResValue As String = Nothing
For Each f In fldr.Files
Try
objFile.Open(f)
ResValue = objFile.SummaryProperties.DateCreated
' Do stuff here
objFile.Close
Catch ex As Exception
'TextBox1.Text = ex.Message
End Try
Application.DoEvents()
Next
End Sub