Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA-Verweis auf aktuellste Datei im Ordner

VBA-Verweis auf aktuellste Datei im Ordner
18.05.2017 13:26:20
Rene
Hallo Excelperten,
ich möchte mit einem Makro Daten aus einer Exceldatei auslesen und weiterverarbeiten.
Das funktioniert auch gut mit dem Namen oder auch mit der Auswahl.
Was mir aber vorschwebt, dass diese Daten immer aus der neuesten Datei in einem bestimmten Ordner kommen.
Hintergrund:
Eine exportierte Exceldatei, die immer gleich aufgebaut ist, aber aktualisierte Daten enthält, wird immer in den gleichen Ordner kopiert. Die Dateinamen sind unterschiedlich (tlw. das Datum vorne im Namen tlw. hinten oder in anderen Formaten).
Jetzt würde ich gerne wissen, ob Excel-VBA herausfinden kann welche dieser Dateien die neueste ist und die Daten aus dieser nimmt.
Vorab schonmal vielen Dank
Gruß
René
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Verweis auf aktuellste Datei im Ordner
18.05.2017 13:39:05
JoWE
Hallo René,
da gibt's diesen Code von Hajo:
http://www.ms-office-forum.net/forum/showthread.php?t=183417 (s. zweiter Beitrag)
Damit könntest Du schon mal beginnen; evtl. kann Hajo ansonsten weiterhelfen.
Gruß
Jochen
Anzeige
Hier ein Vorschlag
18.05.2017 13:42:24
Max2
Hallo,
hier Vorschlag
Option Explicit
Sub a()
Dim oFile As Object
Dim oShell As Object
Dim oDir As Object
Dim lastMod
Dim temp As Date
Set oShell = CreateObject("Shell.Application")
Set oDir = oShell.Namespace("C:\...")
For Each oFile In oDir.items
If FileDateTime(oFile.Path) > temp Then
lastMod = FileDateTime(oFile.Path)
temp = lastMod
End If
Next oFile
Cells(1, 1).Value = lastMod
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA-Verweis auf die aktuellste Datei im Ordner


Schritt-für-Schritt-Anleitung

Um die aktuellste Excel-Datei aus einem bestimmten Ordner mit VBA auszulesen, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Rechtsklicke im Projektfenster auf "VBAProject (DeinWorkbookName)".
    • Wähle Einfügen -> Modul.
  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    
    Sub GetLatestFile()
       Dim oFile As Object
       Dim oShell As Object
       Dim oDir As Object
       Dim lastMod As Date
       Dim temp As Date
       Dim latestFile As String
    
       Set oShell = CreateObject("Shell.Application")
       Set oDir = oShell.Namespace("C:\DeinOrdner\") ' Pfad zum Ordner anpassen
    
       For Each oFile In oDir.Items
           If FileDateTime(oFile.Path) > temp Then
               lastMod = FileDateTime(oFile.Path)
               latestFile = oFile.Path
               temp = lastMod
           End If
       Next oFile
    
       ' Hier kannst du die Daten aus der Datei verarbeiten
       Cells(1, 1).Value = "Neueste Datei: " & latestFile
    End Sub
  4. Passe den Pfad C:\DeinOrdner\ an den gewünschten Ordner an, in dem sich die Excel-Dateien befinden.

  5. Führe das Makro aus, indem du in der Menüleiste auf Ausführen -> Sub/UserForm ausführen klickst oder F5 drückst.


Häufige Fehler und Lösungen

  • Fehler: "Pfad nicht gefunden"

    • Stelle sicher, dass der angegebene Ordnerpfad korrekt ist und dass du Schreib- und Leserechte hast.
  • Fehler: Ungültige Dateiformate

    • Der Code liest alle Dateien im Ordner. Wenn du nur Excel-Dateien lesen möchtest, kannst du eine Bedingung hinzufügen, um die Dateiendungen zu filtern.

Alternative Methoden

Eine weitere Methode, um die aktuellste Datei zu finden, ist die Verwendung von Dateisystemobjekten (FSO). Hier ist ein Beispiel:

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folder As Object
Set folder = fso.GetFolder("C:\DeinOrdner\")
Dim file As Object
Dim latestFile As String
Dim latestDate As Date

For Each file In folder.Files
    If file.DateLastModified > latestDate Then
        latestDate = file.DateLastModified
        latestFile = file.Path
    End If
Next file

Cells(1, 1).Value = "Neueste Datei: " & latestFile

Praktische Beispiele

  1. Daten aus der neuesten Datei in ein Arbeitsblatt kopieren:

    Nachdem du die neueste Datei gefunden hast, kannst du sie wie folgt öffnen und Daten kopieren:

    Workbooks.Open latestFile
    ' Hier kannst du spezifische Daten kopieren
    Workbooks(latestFile).Sheets(1).Range("A1").Copy Destination:=ThisWorkbook.Sheets(1).Range("A2")
    Workbooks(latestFile).Close SaveChanges:=False
  2. Automatisierung: Du kannst das Makro so planen, dass es regelmäßig ausgeführt wird, um immer die neuesten Daten zu importieren.


Tipps für Profis

  • Fehlerbehandlung: Füge On Error Resume Next am Anfang deines Codes hinzu, um zu verhindern, dass das Makro bei einem Fehler stoppt.
  • Schleifen optimieren: Wenn du viele Dateien hast, kann die Schleife zeitaufwendig sein. Überlege, ob du die Anzahl der Dateien, die du überprüfst, einschränken kannst.
  • Makros speichern: Speichere deine Excel-Datei als Makro-fähige Datei (.xlsm), um die Makros zu behalten.

FAQ: Häufige Fragen

1. Kann ich diesen Code auch in Excel 2010 verwenden? Ja, der Code funktioniert in Excel 2010 und neueren Versionen, die VBA unterstützen.

2. Was kann ich tun, wenn ich nicht die neuesten Dateidaten benötige? Du kannst den Code anpassen, um nach anderen Kriterien wie Dateigröße oder spezifischen Dateinamen zu filtern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige