【问题标题】:Return the directory of folder which is the latest based on the date contained in folder name根据文件夹名称中包含的日期返回最新的文件夹目录
【发布时间】:2018-08-19 15:06:07
【问题描述】:

我有许多文件夹名称中带有日期。

如果我有三个文件夹,分别命名为 20150605abcdef、20161204ghijk、20180612ikled。

我想编写一个 VBA 代码,它将返回具有最新日期的文件夹的目录。

在这种情况下,它将返回 20180612ikled。

【问题讨论】:

    标签: excel vba directory


    【解决方案1】:

    把它放在 Excel 中。然后将该文件移动到结构中的第一个文件夹,然后启动 Macro ReadStructure。它将以清晰的树形结构将所有文件夹和子文件夹中的所有数据写入 Excel 的第一张表。然后,您可以使用 Excel 内置工具来查找上次日期,例如 ex。过滤您的列表。

    我为您翻译了德语版本。很抱歉,如果某些部分仍在德语中 Folder=Ordner、Spalte=Column、Zeile=Row、Pfad=Path。那部分我很懒

    Option Explicit
    Sub ReadStructure()
     Dim lngZeile As Long
     Dim lngSpalte As Long
     Dim strPFad As String
    
    strPFad = ThisWorkbook.Path
     'Clear all cells form sheet 1
     sheet1.Cells.ClearContents
     sheet1.Range("A1").Value = strPFad
    
     lngZeile = 2
    
     Call ReadFilesFolder(strPFad, lngZeile, lngSpalte)
    
    End Sub
    
    Sub ReadFilesFolder(strPFad As String, ByRef lngZeile, ByRef lngSpalte)
    
     Dim oFSO As Object
     Dim objOrdner As Object
     Dim objUnterordner As Object
     Dim objDatei As Object
    
     Set oFSO = CreateObject("Scripting.FileSystemObject")
     Set objOrdner = oFSO.getfolder(strPFad)
    
     lngSpalte = lngSpalte + 1
      'Check with loop for folders
      For Each objDatei In objOrdner.Files
        lngZeile = lngZeile + 1
        sheet1.Cells(lngZeile, lngSpalte).Value = objDatei.Name
        sheet1.Cells(lngZeile, lngSpalte).Font.Bold = True
      Next objDatei
    
      For Each objUnterordner In objOrdner.Subfolders
       lngZeile = lngZeile + 1
       sheet1.Cells(lngZeile, lngSpalte).Value = objUnterordner.Name & "\"
       sheet1.Cells(lngZeile, lngSpalte).Font.Bold = False
       Call ReadFilesFolder(objUnterordner.Path, lngZeile, lngSpalte)
    
      Next objUnterordner
    
      lngSpalte = lngSpalte - 1
    
      Set oFSO = Nothing
    
      Exit Sub
    
     Fehler:
      If Err.Number = 70 Then
      lngZeile = lngZeile + 1
      sheet1.Cells(lngZeile, lngSpalte).Value = "No Acess"
      End If
      lngSpalte = lngSpalte - 1
      Set oFSO = Nothing
    
      End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2016-09-04
      • 1970-01-01
      相关资源
      最近更新 更多