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

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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-directory/

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

Klappt es?

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

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

Woher ich das weiß:eigene Erfahrung – Faulheit >> Neugier >> Wissen