Klasördeki Son Eklenen Dosyayı Getirmek

1 2 3
22/05/2020, 09:04

accessman

Hayırlı cumalar
Önceki konularda klasördeki dosyaları (path, name, size) bilgilerine göre listeye almıştık
aynı yöntemle tabloya veya listeye alıp eklenme veya oluşturulma zamanına göre en sonuncuyu bulabiliriz
genelde yaptığım işlem uzun yoldan ve işlevsiz oluyor
benim yapmak istediğim kısaca şöyle
Local ağda herkesin ulasabildiği klasöre personel işlerine bakan görevli son Excel dosyasını ekleyecek
bende bu son Excel dosyasını vertabanına güncelleyeceğim
bu Excel dosyası son oluşturulan veya  değiştirilen veya klasöre son eklenen vs olabilir ama olmayadabilir. ama isimlendirme formatı şöyle
EGITmM (11.05.2020).XLS
dediğim gibi uzun yoldan tüm dosyaları listeye alıp 
içlerindeki tarihleri büyüklük sırasına koyup en büyük tarihli dosyayı getirebiliriz
ama kolay bir yöntemi var mı
mesela bir klasördeki son eklenen dosyanın metin kutusuna fullpath i alınabilir mi

şöyle bir kod var
Function NewestFile()

Dim FileName As String
Dim MostRecentFile As String
Dim MostRecentDate As Date
Dim FileSpec As String

'Specify the file type, if any
FileSpec = "*.*"
'specify the directory
Directory = "C:"
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

NewestFile = MostRecentFile

End Function
22/05/2020, 09:43

accessman

bir de şöyle bir kod var nedir anlayamadım
Private Sub Command4_Click()
Dim ~ As Object
Set ~ = CreateObject("Excel.Application")
Dim path As String
Dim count As Long
Dim number As Long

path = "C:\Users\fkong\Desktop\~\"
count = 0

Do While Len(Dir(path & "~ - " & Format(Now() - count, "mmm dd, yyyy") & ".xlsm")) = 0
number = Len(Dir(path & "~ - " & Format(Now() - count, "mmm dd, yyyy") & ".xlsm"))
count = count + 1
Loop

~.Visible = True

~.workbooks.Open path & "~ - " & Format(Now() - count, "mmm dd, yyyy") & ".xlsm"
End Sub
22/05/2020, 09:44

alicimri

Sayın @accessman Dosya adlarını aşağıdaki gibi tarih formatına dönüştürüp döngü içinde en büyük olanı belirleyebilirsiniz. 
Kod:
Sub a()
DosyaAdları = "EGITmM (20.05.2020).XLS,EGITmM (11.05.2020).XLS,EGITmM (09.05.2020).XLS,EGITmM (13.05.2020).XLS"
DosyaAdları = Split(DosyaAdları, ",")
Buyuk = 0
For i = 0 To UBound(DosyaAdları)
If Buyuk < CDbl(CDate(Mid(DosyaAdları(i), 9, 10))) Then
dosya = DosyaAdları(i)
Buyuk = CDbl(CDate(Mid(DosyaAdları(i), 9, 10)))
End If
Next
MsgBox dosya
End Sub
22/05/2020, 10:03

accessman

teşekkürler sn. @alicimri
2. mesajda yazdığım kod nasıl o da bu iş için mi tarihleri kontrol ediyor galiba
22/05/2020, 10:22

alicimri

Yanlış anlamadım ise klasör içinde dosya adında şu anki tarihten geriye doğru belirli formattaki dosyayı bulup açıyor.
22/05/2020, 10:48

accessman

Dim ~ As Object
Set ~ = CreateObject("Excel.Application")
buradaki "yaklaşık" (klavyede bulamadım) işareti böyle mi kalacak yoksa değiştirme işini bize mi bırakmış
1 2 3