Datum nieuwst bestand in cel plaatsen

Status
Niet open voor verdere reacties.

sjonnie1974

Gebruiker
Lid geworden
19 okt 2011
Berichten
177
Hoi,

Ik heb 2 of meer bestanden opgeslagen, nl:

K:\index123_1.xls
K:\index123_2.xls
Van dit type bestand kunnen meerdere _x versies zijn opgeslagen


Deze worden automatisch opgeslagen en het is niet bepaald dat _2 het nieuwst bestand is, dit kan net zo goed _1 zijn.

Graag wil ik middels een VBA weten welk bestand het nieuwste is.
Deze datum en tijd moet geplaatst worden in cel A1
 
Daar gebruik ik een functie (UDF) voor. Plaats deze in een Module:
Code:
Function FileInfo(sFile As String, Info As String) As String
    Dim fso As Object
    
    With CreateObject("Scripting.FileSystemObject")
        Select Case LCase(Info)
            Case "lines" [COLOR="#008000"]'Tel aantal regels[/COLOR]
                Set fso = .OpenTextFile(sFile, 8) [COLOR="#008000"]' 8 -> Appending[/COLOR]
                FileInfo = CStr(fso.Line - 1)
                fso.Close
                Set fso = Nothing
            Case "datumwijziging" [COLOR="#008000"]'Wijzigingsdatum[/COLOR]
                Set fd = .GetFile(sFile)
                FileInfo = fd.DateLastModified
                Set fd = Nothing
        End Select
    End With
End Function

Aanroep met een bestandsnaam in A1:
=FileInfo(A1;"datumwijziging")

Die kan je uiteraard naar wens aanpassen.
 
Laatst bewerkt:
Als het om de aanmaakdatum te doen is.
Het pad even aanpassen.
Code:
Sub hsv()
Dim fl, a, b
 For Each fl In CreateObject("scripting.filesystemobject").GetFolder("C:\users\sjonnie1974\documents\map1\").Files
   b = CreateObject("Scripting.FileSystemObject").GetFile(fl).DateCreated
     If a <= b Then
        a = b
      msg = Split(fl, "\")(UBound(Split(fl, "\")))
    End If
 Next fl
MsgBox msg
End Sub
 
Heren,

Beide antwoorden zijn "niet helemaal" het antwoord op mijn vraag....
Ik wil weten van alle K:\index123_*.xls bestanden, welke de nieuwste is.
 
En beide antwoorden kan je daarvoor gebruiken. Wel even aanpassen naar je exacte situatie uiteraard.
Gebruik voor het antwoord van HSV wel .DateLastModified in plaats van .DateCreated
 
Laatst bewerkt:
Of een kleine aanpassing.

Code:
Sub hsv()
Dim fl, a, b
 For Each fl In CreateObject("scripting.filesystemobject").GetFolder("K:\").Files
[COLOR=#0000ff] if Split(fl, "\")(UBound(Split(fl, "\"))) like "index123_*" then[/COLOR]
   b = CreateObject("Scripting.FileSystemObject").GetFile(fl).DateCreated
     If a <= b Then
        a = b
      msg = Split(fl, "\")(UBound(Split(fl, "\")))
    End If
[COLOR=#0000ff]  end if[/COLOR]
 Next fl
MsgBox msg
End Sub
 
misschien nog eens op een andere manier mijn vraag stellen, want het resultaat wat ik nu krijg is de naam van het nieuwste bestand. Dit wil ik niet.
van alle K:\index123_*.xls bestanden (dus niet de andere bestanden) wil ik de DATUM EN TIJD weten.

Dus NIET een naam en dus NIET een datum en tijd van een ander bestand dan K:\index123_*.xls (dus van alle bestanden die beginnen met index123_
 
Test.
Code:
Sub hsv()
Dim fl, a, b
a = Now
 For Each fl In CreateObject("scripting.filesystemobject").GetFolder("K:\").Files
 if Split(fl, "\")(UBound(Split(fl, "\"))) like "index123_*" then

   b = CreateObject("Scripting.FileSystemObject").GetFile(fl).DateCreated
     If a > b Then
        a = b
      msg = Split(fl, "\")(UBound(Split(fl, "\")))
    End If
  End If
 Next fl
MsgBox msg
End Sub
 
Nee, nu krijg ik nog de naam. En deze naam is ook niet van het nieuwste bestand, maar das met een kleine aanpassing te verhelpen
 
De code van HSV in #8 pakt alleen de datum van bestanden die met index123_ beginnen en staan in K:\
Dat is wat je vroeg. Ik denk wel nog steeds dat je de DateLastModified moet hebben i.p.v. DateCreated
 
Laatst bewerkt:
Wat wordt beschouwd als nieuwste bestand.
Laatst gemaakt of gewijzigd?
 
ik krijg de bestandsnaam van het nieuwste index123_ bestand, niet de datum ervan
 
Ik weet niet welke sterkte je hebt van bril of lenzen.
Code:
msg = Split(fl, "\")(UBound(Split(fl, "\"))) & Str(a)
 
Dan is DateCreated goed. Ik begreep uit je vraag in #1 anders.
 
Lenzen? bril? wat heeft dit er mee te maken? resultaat is resultaat en ik kreeg niet het juiste resultaat.
Nu inmiddels wel (na wat zelf te hebben gefrutseld)

case closed
 
Je toon voor een vragensteller kan ook wel wat anders.
Laat je gefrutsel eens zien, kan ik er wat van leren.
 
Ach ja, wie ben ik als simpele vragensteller tegenover u als Giga Honourable Senior Member... Mijn welgemeende excuses.

Als antwoord op je vraag, hierbij mijn code (en ja, de bestandsnaam waarnaar gezocht moet worden EN de cel waarin de uitkomst moet komen zijn ietwat gewijzigd)

Code:
Dim fl, a, b
a = Now
 For Each fl In CreateObject("scripting.filesystemobject").GetFolder("K:\").Files
 If Split(fl, "\")(UBound(Split(fl, "\"))) Like "ID_8144_0*.XLS" Then

   b = CreateObject("Scripting.FileSystemObject").GetFile(fl).Datelastmodified
     If a > b Then
        b = a
      msg = Split(fl, "\")(UBound(Split(fl, "\")))
    End If
  End If
 Next fl
Range("week!m5").Value = FileDateTime("K:\" & msg)
 
Het gaat niet om de status is van iemand.
Het is Pro Deo, neemt dat vooral ter harte.
 
De code zoals jij die plaats klopt trouwens van geen kant.
De waarde van a zal nooit veranderen en blijft de tijd vanaf start code.
Er wordt geen vergelijking gedaan tussen welk bestand dan ook.


Dan maar voor andere gebruikers die zoiets zoeken.


Code:
Dim fl, a, b
  For Each fl In CreateObject("scripting.filesystemobject").GetFolder("K:\").Files
 If Split(fl, "\")(UBound(Split(fl, "\"))) Like "ID_8144_0*.XLS" Then


   b = CreateObject("Scripting.FileSystemObject").GetFile(fl).Datelastmodified
     If a < b Then
        a = b
      msg = fl
    End If
  End If
 Next fl
MsgBox msg & "  " & FileDateTime(msg)
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan