【问题标题】:retrieve (modification) date of a all file listed in a zip file检索(修改)压缩文件中列出的所有文件的日期
【发布时间】:2020-02-22 22:28:22
【问题描述】:

我写了一个 VBA 宏(部分是我的和来自 Internet 的 partyl sn-ps),它列出了宏可以在起始路径中找到的所有 zip 文件中包含的所有文件:

folder_path = "C:\Users\[MYNAME]\Desktop\prod"

这行得通。它贯穿每个文件夹直至 zipArchive,其中包含多个 zip 文件,这些 zip 文件中包含多个文件(没有其他文件夹)。我开始让宏写下关于那些文件的一些信息,例如名称、大小、...

现在我这样做的原因是我对每个 zip 文件中文件的创建日期/最后修改日期感兴趣。所以我用了

Range("B" & i).Value = fileNameInZip.DateCreated

返回一个错误,指出对象不支持该方法或属性……

有人可以帮我吗?

Private Sub Get_Information3()
    folder_path = "C:\Users\[MYNMAME]\Desktop\prod"

    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("Tabelle1")

    Dim oFSO As Object
    Dim oFolder As Object 'prod
    Dim oSubFolderSupplier As Object 'Supplier
    Dim oSubFolderCountry As Object
    Dim oSubFolderDatabase As Object
    Dim oSubFolderZipArchive As Object
    Dim oFileinZipArchive As Object
    Dim last_row As Integer

    Dim oApp As Object



    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(folder_path)
    Set oApp = CreateObject("Shell.Application")

    Dim i, r As Integer
    Dim fileNameInZip As Variant
    Dim Fname As Variant
    Dim sh1 As Worksheet
    Set sh = ThisWorkbook.Sheets("Tabelle1")
    Dim Stringtest As Integer
    Dim test1 As String

    i = 2
    For Each oSubFolderSupplier In oFolder.SubFolders
        For Each oSubFolderCountry In oSubFolderSupplier.SubFolders
            For Each oSubFolderDatabase In oSubFolderCountry.SubFolders
                For Each oSubFolderZipArchive In oSubFolderDatabase.SubFolders
                    For Each oFileinZipArchive In oSubFolderZipArchive.Files



    Fname = Dir(oFileinZipArchive)
    Stringtest = InStrRev(oFileinZipArchive, "\")
    test1 = Left(oFileinZipArchive, Stringtest)


                        If Right(Fname, 4) = ".zip" Then

                             For Each fileNameInZip In oApp.Namespace(test1 & Fname).Items


                             Range("A" & i).Value = fileNameInZip.Name
                             **Range("B" & i).Value = fileNameInZip.DateCreated**


                             i = i + 1

                             Next
                         End If



                    Next
                Next
            Next
        Next
    Next

    End Sub

【问题讨论】:

  • 建议你在Range("A" & i).Value = fileNameInZip.Name下断点,打开即时窗口,检查fileNameInZip的暴露属性。这可能会帮助您获得所需的信息。
  • 我确实知道如何打开即时命令并将其用于调试打印。但这就是到目前为止。我如何公开fileNameInZip的属性我有点困惑,因为大小,名称工作
  • 看起来你只能得到lastModified 而不能被created。
  • DateLastModified 也不起作用..那怎么可能?它适用于所有其他不在 zip 中的文件
  • 误解了你的意图

标签: vba windows shell zip


【解决方案1】:

我只是有同样的要求,我发现这个属性:fileNameInZip.ModifyDate 可以得到你想要的。喜欢:

For Each fileNameInZip In oZipFolder.Items
    Debug.Print fileNameInZip.path
    Debug.Print fileNameInZip.Size
    Debug.Print fileNameInZip.ModifyDate
Next fileNameInZip

得到第 3 行 debug.print 的结果:9/28/2020 1:16:46 AM 希望这可以帮助。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多