Frage von Herzbube27, 23

Wie öffne ich mittels VBA das aktuellste Dokument in einem Ordner?

Hallo, ich habe einen Button in Excel, über welchen die aktuellste Version eines Dokuments in einem Ordner geöffnet werden soll. Der Pfad zum Ordner ist z.B. C:\Hallo\ und die Dokument-Namen habe immer folgenden Aufbau: beispiel-JJJJ_MM_DD.xlsx. In dem Ordner befindet sich auch nichts anderes außer den Dokumenten mit diesem Aufbau. Kann mir hier jemand helfen?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Oubyi, Community-Experte für Excel, 11

Ich war wohl etwas langsamer als hannes und habe mir seinen Code auch nicht weiter angesehen, möchte meine Lösung aber trotzdem los werden:

Sub AktuellesDokument()

Dim varDirectory As Variant
Dim flag As Boolean
Dim i As Integer
Dim strDirectory As String

Dim thisFile As String
Dim currentFile As String
currentFile = 0
Dim currentFileAll As String

strDirectory = "C:\Hallo\"
i = 1
flag = True
varDirectory = Dir(strDirectory, vbDirectory)

While flag = True
If varDirectory = "" Then
flag = False
Else

If i > 2 Then
thisFile = Right(varDirectory, 15)
thisFile = Replace(thisFile, ".xlsx", "")
thisFile = Replace(thisFile, "_", "") * 1
If thisFile > currentFile Then
currentFile = thisFile
currentFileAll = varDirectory
End If
End If
varDirectory = Dir
i = i + 1
End If
Wend

Workbooks.Open strDirectory & currentFileAll
End Sub

Ich muss allerdings eingestehen, dass ich mir hier Hilfe geholt habe:

http://software-solutions-online.com/2014/03/05/list-files-and-folders-in-a-dire...

Das "Jonglieren" mit Dateien ist nicht so ganz mein "Ding".

Klappt es?

Kommentar von Herzbube27 ,

Passt, danke!!!

Kommentar von Oubyi ,

Gern geschehen ☼

Kommentar von Oubyi ,

Danke fürs

Antwort
von hannes1806, 13

So geht das:

Sub neuestes_File_öffnen()
    On Error Resume Next 'Fehler überspringen
    Dim Pfad As String, Dateiname As String, Neueste_Datei As String
    Dim Datei_Index As Variant, Test_offen As Variant
    Dim Datum As Date, Aktuellstes As Date
    Pfad = "C:\Hallo\" 'hier legst du deinen Pfad fest
    Set Objekt = CreateObject("Scripting.FileSystemObject")
    Set Lesen = Objekt.GetFolder(Pfad)
    Set Ordner = Lesen.Files
    For Each Datei_Index In Ordner
        Dateiname = Datei_Index.Name
        Datum = 0 'Datum in jeder Schleife auf 0 zurücksetzen
        Datum = Replace(Left(Right(Dateiname, 15), 10), "_", ".") 'schneidet 10 Zeichen heraus ab dem 15. Zeichen von hinten und ersetzt Unterstrich mit Punkt
        'alternativ kannst du auch das echte Speicherdatum (sekundengenau) auslesen, dann ist es auch egal, wie die Datei heißt.
        'aktiviere dazu einfach die nächste Codezeile:
        'Datum = Datei_Index.DateCreated
        If Datum > Aktuellstes Then Aktuellstes = Datum: Neueste_Datei = Dateiname
    Next
    'hier noch ein Test, ob die neueste Datei nicht bereits offen ist:
    Test_offen = 0: Test_offen = Workbooks(Neueste_Datei).Sheets.Count
    If Test_offen = 0 Then Workbooks.Open Filename:=Pfad & Neueste_Datei Else MsgBox ("Die neueste Datei " & Neueste_Datei & " ist bereits geöffnet.")
End Sub

Keine passende Antwort gefunden?

Fragen Sie die Community