laatste en een na laatste file in folder vba

Status
Niet open voor verdere reacties.

paco75

Gebruiker
Lid geworden
27 sep 2007
Berichten
26
Hallo,

ik wil in een folder de laatste en de op een na laatste file ophalen. Deze files hebben elke week een andere naam.

Weet iemand hiervan de VBA code?

groet,

Francisco
 
De laatste en een na laatse qua datum bedoel je dan? En is dat VBA voor Word? Excel? Access? Iets anders?
 
dat is correct, het gaat om de files met de laatste en de een na laatste datum; met VBA in Excel
 
Hiervoor bestaat geen VBA-code.
Je kunt hem wel zelf maken (da's nou juist het aardige van een programmeertaal).
 
Zijn ze aan de naam te herkennen?
 
Op zich is dat geen enkel probleem. Als ik vanavond tijd heb kan ik er wel wat voor maken. Gaat het om Excel bestanden in een bepaalde map? En wat moet er dan met de gevonden bestanden gebeuren?
 
Laatst bewerkt:
Waarom wachten ? :)
Code:
Sub ListFiles()
Dim sLaatste(1) As Variant, sVoorLaatste(1) As Variant
Const sPad As String = "H:\Microsoft Office\MS Excel\"
Dim obj As Object

    Set obj = CreateObject("Scripting.FileSystemObject")
    sbestand = Dir(sPad & "*.xls*")
    Do While sbestand <> ""    ' Start the loop.
        If obj.getfile(sPad & sbestand).DateLastModified > sLaatste(1) Then
            sVoorLaatste(0) = sLaatste(0)
            sVoorLaatste(1) = sLaatste(1)
            sLaatste(0) = obj.getfile(sPad & sbestand).Name
            sLaatste(1) = obj.getfile(sPad & sbestand).DateLastModified
        ElseIf obj.getfile(sPad & sbestand).DateLastModified > sVoorLaatste(1) Then
            sVoorLaatste(0) = obj.getfile(sPad & sbestand).Name
            sVoorLaatste(1) = obj.getfile(sPad & sbestand).DateLastModified
        End If
        sbestand = Dir    ' Get next entry.
    Loop

MsgBox sVoorLaatste(0) & vbLf & sLaatste(0)

End Sub
 
Dat is aardig. Ik ben benieuwd...

Er worden wekelijks bestanden gezet op de G: - schijf
Deze bestanden hebben wekelijks een andere naam, vandaar dat er moet worden gezocht naar datum.

Het VBA script moet in gang worden gezet dmv een klik in een Userform, die dus de laatste twee bestanden moet gaan zoeken en openen. Daarna gaat VBA deze lijsten vergelijken dmv verticaal zoeken. Het script daarvoor is al klaar.
 
Ik zie dat OctaFish het leeuwendeel al voor je heeft gedaan :)
 
He Octafish,

wat goed, ik was net bezig met een tekstje aan het opstellen. Ik ga je script meteen uitproberen.
 
En als je andere datumeigenschappen zoekt, kun je ook nog met DateCreated en DateLastAccessed werken. De functie lijkt mij wel duidelijk uit de naam :)
 
of met VBA:

Code:
Sub M_snb()
    sn = Split(CreateObject("wscript.shell").exec("cmd /c Dir G:\*.xls /b /o-d").stdout.readall, vbCrLf)
    MsgBox "G:\" & sn(0) & vblf &  "G:\" & sn(1),,"De 2 meest recente bestanden"
End Sub

NB. vergelijken van bestanden in VBA doe je niet door gebruik te maken van Excel funkties als 'vertikaal zoeken'. Daar bestaan in VBA veel slimmere/snellere methoden voor.
 
Laatst bewerkt:
Hallo, ik heb dit onderwerp een poosje moeten laten liggen. De VBA code ziet er goed uit. Er komt een pop up met de laatste twee gevonden files. .

Nu is de volgende vraag, hoe kunnen deze twee files automatisch worden geopend in Excel?

grt.
 
Je hebt twee variabelen met de bestandsnaam. Die kun je als parameter meegeven in het Open commando.
 
Wat ik in VBA programmeer, lukt me door de 'Recording' functie te gebruiken en aan te passen waar nodig is ; en ik haal veel info van forums en Google.

Ik heb gezocht hoe ik deze variabelen kan openen. Maar dat dat is me helaas niet gelukt. Weet je wat de VBA code is om deze twee documenten te openen?
 
Code:
Sub M_snb()
    sn = Split(CreateObject("wscript.shell").exec("cmd /c Dir G:\Testbestanden\*.xls /b /o-d").stdout.readall, vbCrLf)
    'MsgBox "G:\" & sn(0) & vbLf & "G:\" & sn(1), , "De 2 meest recente bestanden"
    For i = 0 To 1
        Workbooks.Open "G:\Testbestanden\" & sn(i)
    Next
End Sub
 
Wellicht ter aanvulling: VBA code 'vind' je niet, die 'schrijf' je.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan