无需打开工作簿即可访问内置文档属性信息

时间:2018-01-25 05:32:31

标签: excel vba excel-vba

我使用下面的代码来获取工作簿的创建日期

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,就像使用上面的第一个代码一样,它更快更容易管理。

如果你有人能指出我可能的解决方案,那就太好了。

1 个答案:

答案 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