Skip to main content

AccessTr.neT


Klasördeki Son Eklenen Dosyayı Getirmek

Klasördeki Son Eklenen Dosyayı Getirmek

Çözüldü #1
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
@benbendedeilem
Son Düzenleme: 22/05/2020, 09:07, Düzenleyen: accessman.
Cevapla
#2
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
@benbendedeilem
Cevapla
#3
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

Son Düzenleme: 22/05/2020, 09:46, Düzenleyen: alicimri.
Cevapla
#4
teşekkürler sn. @alicimri
2. mesajda yazdığım kod nasıl o da bu iş için mi tarihleri kontrol ediyor galiba
@benbendedeilem
Cevapla
#5
Yanlış anlamadım ise klasör içinde dosya adında şu anki tarihten geriye doğru belirli formattaki dosyayı bulup açıyor.
Cevapla
#6
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ış
@benbendedeilem
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task