我使用下面的代码来获取工作簿的创建日期。
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
,这样更快、更容易管理。
如果有人能给我指出一个可能的解决方案,那就太好了。
最佳答案
尝试这样的事情。关键是特殊的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
关于vba - 无需打开工作簿即可访问内置文档属性信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48436243/