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

标签 vba excel

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

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/

相关文章:

excel - 初始化电子表格,计算顺序

vba - "if not instr"无法像我想象的那样在 vba 中工作

VBA - 具有多个条件的索引/匹配函数

vba - 无法访问 Excel VBA 代码

vba - 使用 FileDialog 从 Word 打开 Excel

java - 如何在 GAE 中仅获取包含超过 80K 行和超过 7 列的 Google 电子表格的前四行(使用 Java)

VBA - 自动过滤器 - 总是隐藏确切的值

VBA:复制值运行时错误 1004

excel - Power Query - 获取 Excel 电子表格文件名

vb.NET SaveAs 不保存所有 Excel 数据