Klasördeki Son Eklenen Dosyayı Getirmek

1 2 3
22/05/2020, 10:58

alicimri

Bende ilk defa görüyorum bu tip değişken tanımlamayı Siz başka bir karakter veya kelime kullanabilirsiniz.
22/05/2020, 11:07

accessman

ilk mesajdaki kodun son hali şöyle oldu
Private Sub findLastExcel()
    Dim lastFile As String
    lastFile = newestFile("C:\_egitim\", "*.xls", True)
    If (InStr(lastFile, ",") > 0) Then
        Me.txtLastFile = Split(lastFile, ",")(0)
        Me.txtLastFile.ControlTipText = Split(lastFile, ",")(1)
    Else
        Me.txtLastFile = lastFile
    End If
   
End Sub


Function newestFile(Directory As String, Optional FileSpec As String = "*.*", Optional bringDate As Boolean = False) As String
On Error GoTo Err_hata
    Dim result As String
    result = ""
   
    Dim FileName As String
    Dim MostRecentFile As String
    Dim MostRecentDate As Date
   
    FileName = Dir(Directory & FileSpec)
   
    If FileName <> "" Then
        MostRecentFile = FileName
        MostRecentDate = FileDateTime(Directory & FileName)
        Do While FileName <> ""
            If FileDateTime(Directory & FileName) > MostRecentDate Then
                MostRecentFile = FileName
                MostRecentDate = FileDateTime(Directory & FileName)
            End If
            FileName = Dir
        Loop
    End If
   
   
    result = MostRecentFile
    If (bringDate) Then result = result & "," & MostRecentDate
   
Exit_kod:
    newestFile = result
    Exit Function

Err_hata:
    result = ""
    MsgBox Err.Description
    Resume Exit_kod
End Function

8. mesajdaki kod içerisine 2. mesajdaki kodu entegre etsek
yani 1.kod ile bulunan dosya aynı zamanda dosya adındaki tarih olarak da son tarih ise
şartını nasıl koyabiliriz
22/05/2020, 11:37

accessman

şu üç dosya birbirinin kopyası 

1. mesajdaki kod değiştirme tarihine göre son dosyayı getiriyor
ama tarihleri aynı ise alfabetik olarak ismi en küçük olanı getiriyor
yani burada 09.05.2020 yi getiriyor. bu durumda 
isimdeki tarihe göre son dosyayı bulmak daha güvenli
22/05/2020, 11:53

alicimri

Sayın @accessman Kusura bakmayın sorunuzu iyi okumadığımdan ben sadece en büyük tarihli dosyayı bulamaya  çalıştığınızı anladım.
22/05/2020, 13:09

accessman

son mesajı üzerinize alınmayın
kendimce yeni keşfettiğim şeyleri paylaşıyorum
sizin yazdığınız doğru elbet ama şu kod da isimde geçen tarihe göre en büyük tarihli dosyayı buluyor
Private Function lastDateFile(Directory As String, criteria As String, Optional FileSpec As String = "*")

    Dim path As String
    Dim count As Long
    Dim number As Long
   
    path = Directory & criteria & " ("
    count = 0
   
    Do While Len(Dir(path & Format(Now() - count, "dd.mm.yyyy") & ")." & FileSpec)) = 0
        number = Len(Dir(path & Format(Now() - count, "dd.mm.yyyy") & ")." & FileSpec))
        count = count + 1
    Loop
   
    lastDateFile = path & Format(Now() - count, "dd.mm.yyyy") & ")." & FileSpec

End Function
22/05/2020, 13:51

alicimri

Kod:
Public Sub TestMe()
    Dim liste As Object
    Set liste = CreateObject("System.Collections.ArrayList")
    Dim dizi   As Variant
   dizi = Split("EGITmM (20.05.2020).XLS,EGITmM (11.05.2020).XLS,EGITmM (09.05.2020).XLS,EGITmM (13.05.2020).XLS", ",")
    Dim cnt As Long
    For cnt = LBound(dizi) To UBound(dizi)
        liste.Add CDbl(CDate(Mid(dizi(cnt), 9, 10)))
    Next cnt
    liste.Sort
    ReDim dizi(liste.Count)
    For cnt = liste.Count - 1 To 0 Step -1
        liste(cnt) = liste.Item(cnt)
        MsgBox "EGITmM (" & CDate(liste(cnt)) & ").XLS"
    Next cnt
End Sub
Yukardaki kodları kendinize uyarlayabilirsiniz
1 2 3