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

问题描述 投票:5回答:1

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

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

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

excel vba excel-vba
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.