o0asia0o
Goto Top

EXCEL: aktuellste Datei in einem Verzeichnis mit verzeichnispfad anzeigen in einer zelle

Hallo Zusammen

Gibt es eine Möglichkeit die Aktuellste Datei in einem Verzeichnis mit Pfad in einer Zelle auszugeben?
in einer Zelle soll es dann so aussehen: c:\neusteDatei.txt

Ich habe leider bis jetzt nur möglichkeiten die Datei zu öffnen aber nicht diese in einer Zelle auszugeben.

Man müsste auch den Pfad hinterlegen können, welche er suchen soll..in diesem Fall wäre es c:\

Besten Dank schon mal im vorraus face-smile


Grüsse
o0Asia0o

Content-ID: 330931

Url: https://administrator.de/contentid/330931

Ausgedruckt am: 25.11.2024 um 18:11 Uhr

colinardo
Lösung colinardo 02.03.2017 aktualisiert um 15:21:50 Uhr
Goto Top
Machst du z.B. so:
Sub Test()   
    ActiveSheet.Range("A1").Value = getNewestFiles("C:\Ordnerpfad").Fields("Name").Value  
End Sub

Function getNewestFiles(strFolder)
	Set objList = CreateObject("ADOR.Recordset")  
	Set fso = CreateObject("Scripting.Filesystemobject")  
	objList.Fields.Append "name", 200, 255  
	objList.Fields.Append "date", 7  
	objList.Open
	For Each file In fso.GetFolder(strFolder).Files
	    objList.AddNew
	    objList("name").Value = file.Path  
	    objList("date").Value = file.DateLastModified  
            objList.Update
	Next
	objList.Sort = "date DESC"  
	Set getNewestFiles = objList
	Set fso = Nothing
	Set objList = Nothing
End Function
Grüße Uwe
o0Asia0o
o0Asia0o 02.03.2017 um 15:30:13 Uhr
Goto Top
Danke dir uwe!

hast mir heute schon zum zweiten mal richtig geholfen face-smile
verstehe zwar nicht alle befehle aber werde diese noch anschauen
o0Asia0o
o0Asia0o 02.03.2017 um 15:35:35 Uhr
Goto Top
Wäre das auch Möglich mit Mehreren Pfaden und mehreren zellen gleichzeitig zu aktualisieren?
z.B.
zelle A1 wäre C:\Test1
zelle A2 wäre c:\Test2
colinardo
colinardo 02.03.2017 um 15:35:39 Uhr
Goto Top
Das Prinzip ist nicht so schwer. Es wird in der Funktion ein Recordset-Objekt erzeugt und darin dann zwei Spalten für Pfad und Datum angelegt. Dann werden alle Dateien eines Verzeichnisses mit Pfad und Datum in das Recordset eingefügt. Zum Schluss wird das Recordset nach Datum absteigend sortiert und in der Funktion zurückgegeben. Erstes Element der Liste ist dann die aktuellste Datei. Diesen Wert weisen wir dann einer Zelle zu, fertig face-smile.
colinardo
colinardo 02.03.2017 aktualisiert um 17:51:33 Uhr
Goto Top
Zitat von @o0Asia0o:

Wäre das auch Möglich mit Mehreren Pfaden und mehreren zellen gleichzeitig zu aktualisieren?
z.B.
zelle A1 wäre C:\Test1
zelle A2 wäre c:\Test2
Ja, du kannst die Zellen mit einer Schleife durchlaufen und dann jeweils die aktuellste Datei dann z.B. in Spalte B daneben schreiben.
Sub ShowLatestFileForPaths()
   On Error Resume Next
   With ActiveSheet
      for each cell in .Range("A1:A" & .Cells(Rows.Count,"A").End(xlUp).Row)  
          set files = getNewestFiles(cell.Value)
          if files.RecordCount > 0 then
              Cell.Offset(0,1).Value = files.Fields("Name").Value   
          end if
      Next
   End with
End Sub
Function getNewestFiles(strFolder)
	Set objList = CreateObject("ADOR.Recordset")  
	Set fso = CreateObject("Scripting.Filesystemobject")  
	objList.Fields.Append "name", 200, 255  
	objList.Fields.Append "date", 7  
	objList.Open
        if fso.FolderExists(strFolder) then
            For Each file In fso.GetFolder(strFolder).Files
		objList.AddNew
		objList("name").Value = file.Path  
		objList("date").Value = file.DateLastModified  
		objList.Update
            Next
        End if
	objList.Sort = "date DESC"  
	Set getNewestFiles = objList
	Set fso = Nothing
	Set objList = Nothing
End Function
o0Asia0o
o0Asia0o 02.03.2017 um 15:47:21 Uhr
Goto Top
Ich denke du missverstehst mich oder ich missverstehe dich

Ich meine die Zeile

ActiveSheet.Range("A1").Value = getNewestFiles("C:\Ordnerpfad").Fields("Name").Value

Da wird ja eine Zelle definiert (A1) und getNewsetFiles zeigt den Pfad an welches es durchsuchen soll.
wäre es aber möglich diese so anzupassen, dass ich mehrere Pfad auf die neuste Datei durchsuchen kann?

A1 = C:\Ordner1\test.txt
A2 = C:\Ordner2\test.txt
A3 = C:\Ordner3\unterordner1\test.txt
A4 = C:\Ordner4\unterordner2\test.txt

aber deine Erklärung zum Skript ist recht simpel und verständlich face-smile
Frage mich wie viele Jahre es mich kostet, bis ich so gut bin
o0Asia0o
o0Asia0o 02.03.2017 um 16:01:50 Uhr
Goto Top
Kann es sein, dass hier ein Fehler ist und es nicht weisst, wo es die Daten suchen soll?
colinardo
colinardo 02.03.2017 aktualisiert um 16:57:12 Uhr
Goto Top
Zitat von @o0Asia0o:

Kann es sein, dass hier ein Fehler ist und es nicht weisst, wo es die Daten suchen soll?
Wird einfach ein Verständnisproblem sein. Obiges Script durchläuft alle Zellen im Bereich A1:AX, wobei es automatisch die letzte belegte Zelle in Spalte A ermittelt und durchläuft dann diese Zellen in denen die Ordnernamen stehen. Dann wird zu jedem Ordnernamen die aktuelleste Datei ermittelt und jeweils daneben in Spalte B geschrieben.

Frage mich wie viele Jahre es mich kostet, bis ich so gut bin
Lesen und üben, üben, üben.
o0Asia0o
o0Asia0o 03.03.2017 um 09:32:16 Uhr
Goto Top
Also damit ich es verstehe muss ich in der Zelle A1:AX die Ordnerpfade eingeben und es sollte dann automatisch diese in der Spalte B den Ordnerpfad mit der aktuellsten Datei ausgeben?
Falls Ja wäre es möglich das ich hier was falsch gemacht habe?

skript
colinardo
Lösung colinardo 03.03.2017 aktualisiert um 09:43:52 Uhr
Goto Top
Zitat von @o0Asia0o:

Also damit ich es verstehe muss ich in der Zelle A1:AX die Ordnerpfade eingeben und es sollte dann automatisch diese in der Spalte B den Ordnerpfad mit der aktuellsten Datei ausgeben?
Korrekt
Falls Ja wäre es möglich das ich hier was falsch gemacht habe?
Ja, du hast da einen überflüssigen Punkt zwischen Files.Record.Count es muss Files.RecordCount lauten.
Und es fehlt ein cell vor dem .Offset.

Am besten du kopierst es nochmal richtig
o0Asia0o
o0Asia0o 03.03.2017 um 10:02:24 Uhr
Goto Top
super hat geklappt danke dir face-smile
Genial wie schnell du die Fehler siehst