我有许多文件夹的名称中都有日期。
如果我有三个文件夹,名为20150605abcdef,20161204ghijk,20180612ikled。
我想写一个VBA代码,它将返回具有最新日期的文件夹的目录。
在这种情况下,它将返回20180612ikled。
发布于 2018-08-20 00:59:03
将其放入Excel中。然后将该文件移动到结构中的第一个文件夹,然后启动宏ReadStructure。它会将所有文件夹和子文件夹中的所有数据以清晰的树状结构写入excel的第一张工作表中。然后,您可以使用Excel内置工具来查找最后日期,如for 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 Subhttps://stackoverflow.com/questions/51918995
复制相似问题