Klasördeki Xlsx Dosyaları Listeleme

Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Merhaba arkadaşlar

Bir excel kitabında bir makro ile kitabın bulunduğu klasörde kendisinden hariç olan tüm xlsx dosyalarının adlarını a2 hücresinden başlayıp aşağı doğru sıralamak istiyorum böyle bir şey mümkün müdür?
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Aslında aramıştım zaten forumda konular çok eski bağlantıların çoğu kırılmış. Siz paylaşınca tekrar baktım aradığım sonuç yok.
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Merhaba

Şöyle bir kod ile istediğim işlemi yaptırdım. Ama XLS dosyalarını buluyor.

Kod:
Sub listele()
Dim evn As Object
Set evn = CreateObject("scripting.filesystemobject")
Set klasor = evn.getfolder(ThisWorkbook.Path & "\deneme\")
sonsat = Sayfa1.Range("A" & Rows.Count).End(xlUp).Row + 1
For Each dosyalar In klasor.Files
If VBA.Right(dosyalar.Name, 3) = "xls" Then
Sayfa1.Range("A" & sonsat) = (dosyalar.Name)
sonsat = sonsat + 1
End If
Next
End Sub

If VBA.Right(dosyalar.Name, 3) = "xls" Then

Bu satırı xlsx olarak değiştiriyorum sonuç vermiyor.

Neden yapıyor bunu=
 
Katılım
15 Mart 2005
Mesajlar
379
Excel Vers. ve Dili
Microsoft 365 En 64 Bit
Altın Üyelik Bitiş Tarihi
20-03-2024
Merhaba,

C++:
If LCase(dosyalar.Name) Like "*.xl??" Then
 
Son düzenleme:
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Hangisi kullanmak istiyorsanız, sadece ilgili satırdaki tek tırnağı kaldırın. Diğer seçimlere tek tırnak ekleyin.
Burada yapılan işlem, dosyanın uzantısını almak ve buna göre gerekli koşulu kontrol etmek.

C#:
Sub listele()
Dim evn As Object
Set evn = CreateObject("scripting.filesystemobject")
Set klasor = evn.getfolder(ThisWorkbook.Path & "\deneme\")
sonsat = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1
For Each dosyalar In klasor.Files

'Sadece XLSX leri almak için
If UCase(Right(dosyalar.Name, Len(dosyalar.Name) - InStrRev(dosyalar.Name, "."))) = "XLSX" Then

'Sadece XLS leri almak için
'If UCase(Right(dosyalar.Name, Len(dosyalar.Name) - InStrRev(dosyalar.Name, "."))) = "XLS" Then

'XLS*   uzantısı XLS ile başlayan dosyaları almak için
'If InStr(UCase(Right(dosyalar.Name, Len(dosyalar.Name) - InStrRev(dosyalar.Name, "."))), "XLS") > 0 Then


Sheets(1).Range("A" & sonsat) = (dosyalar.Name)
sonsat = sonsat + 1
End If
Next
End Sub
 

netzone

Altın Üye
Katılım
10 Mayıs 2006
Mesajlar
791
Excel Vers. ve Dili
🅾🅵🅵🅸🅲🅴
⎝365 64 Bit 𝙏𝙍⎠
🆆🅸🅽🅳🅾🆆🆂
⎝11 64 Bit 𝙏𝙍⎠
Altın Üyelik Bitiş Tarihi
12-09-2027
...
If VBA.Right(dosyalar.Name, 3) = "xls" Then

Bu satırı xlsx olarak değiştiriyorum sonuç vermiyor.

Neden yapıyor bunu?
Merhaba, kırmızı olan yerde; dosya adının sağ tarafından 3 karakter xls ise diyor yani burayı
4 yapıp xlsx yaparsanız dosyalarınızı bulacaktır.

iyi çalışmalar.
 
Üst