• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Klasör içindeki klasör isimlerinin A sütununa listelenmesi

Katılım
12 Kasım 2007
Mesajlar
327
Excel Vers. ve Dili
excel 2003
Klasör içindeki hertürlü klasör ve dosya isimlerinin A sütununa listelenmesi ve değiş

Forumun Değerli üyeleri Hayırlı günler

Forumda bu konuda arama yaptım Fakat örnekler dosya çeşitleri ile ilgili ben ise her türlü klasör ve dosya isimlerini listelemek istiyorum.

Arkadaşlar bir klasör içindeki hertürlü dosyanın isimlerini A sütununa listesini almak istiyorum.

Buna ilave olarak eğer mümkünse A sütununa aldığım dosya isimlerini, karşılığındaki B sütununa yazdığım ve benim belirlediğim yeni isimleri ile değiştirmek istiyorum. Bu şekilde binlerce dosyam var çok ikrama geçecek.

Yardımlarınızı rica ediyorum.
Saygılar
 
Son düzenleme:
Lütfen konu hakkında bilgisi olan arkadaşlardan ilgi bekliyorum.
Saygılar
 
Klasör altında alt klasör bulunuyor mu?
 
Sayın Anemos
ilgin için teşekkür ederim.
Klasör içinde alt klasör ve yanında resim, word, excell gibi her türlü dosya bulunabiliyor
 
Merhaba;
Klasör veya dizin içindeki dosya isimlerini aşağıdaki kod ile listeleyebilirsin.

Option Explicit
Sub dosyalarilistele()
Dim i As Integer
With Application.FileSearch
.NewSearch
.LookIn = "d:\"
.Filename = "*.xls"
.SearchSubFolders = True
.MatchTextExactly = True
.Execute
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Cells(i, 1) = .FoundFiles(i)
Next i
End If
End With
End Sub
 
Alternatif. Office 2007 de FileSearch sorunu yaşayanlar için kullanışlıdır.
Kod:
Sub Start()
Dim klasor As Object
 
Set klasor = CreateObject("Shell.Application").BrowseForFolder _
                    (0, "Lütfen bir klasor seçin !", 1)
                    
Liste (klasor.Items.Item.Path)
AltListe (klasor.Items.Item.Path)
 
Set klasor = Nothing
End Sub
 
Private Sub Liste(yol As String)
Dim dosya As String, i As Long
 
    dosya = Dir(yol & "\*.*")
    i = 1
    While dosya <> ""
        DoEvents
        i = i + 1
        Cells(i, 1) = yol & dosya
        dosya = Dir
    Wend
End Sub
 
Private Sub AltListe(yol As String)
Dim fL As Object, f As Object, dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
 
On Error GoTo sonraki
For Each f In fL
    dosya = Dir(f.Path & "\*.*")
    
    While dosya <> ""
        DoEvents
        j = [a65000].End(3).Row + 1
        Cells(j, 1) = yol & "\" & dosya
        dosya = Dir
    Wend
    
    AltListe (f.Path)
sonraki:
Next

Set fL = Nothing
End Sub
 
Say&#305;n leventer ve Anemos karde&#351;ler &#231;ok te&#351;ekk&#252;r ederim
dosya isimlerini listeledim
Ancak &#351;imdi i&#351;i bitirecek k&#305;s&#305;m &#351;&#246;yle

A s&#252;tununda dosya ve klas&#246;r isimleri s&#305;raland&#305;
A s&#252;tunundadaki her dosyan&#305;n B sutunundaki kar&#351;&#305;l&#305;&#287;&#305;na orjinal dosya isminden ba&#351;ka dosya isimleri yazd&#305;ktan sonra toplu olarak t&#252;m dosya isimlerini yenileri ile farkl&#305; yeni bir klas&#246;r alt&#305;nda yeniden olu&#351;turmak istiyorum
benim gibi acemilere &#231;ok zor fakat
Sizler i&#231;in kolay olsa gerek
Sayg&#305;lar
 
Bir sorum olacak yalnız;

Dosya isimleri A sütununda sıraladı B sütunundaki yeni isimler ile değiştirilecek. Yeni isimler sıralımı olacak yani b sütunundaki isimlere örnek verecek olursak örneğin; levent1,levent2,levent3........... şeklindemi gidecek.
ikincisi ise; bu dosya değişiklikleri sadece .xls dosyalarındamı olacak.
 
bu de&#287;i&#351;iklikler sadce jpg uzant&#305;l&#305; dosyalar i&#231;in olacak

ve her dosya i&#231;in bir birini takip eden dizin isimler de&#287;ilde farkl&#305; farkl&#305; isimleri b s&#252;tununa ayr&#305; ayr&#305; yazaca&#287;&#305;m
dosyalar i&#231;inde bir numaran&#305;nda yer ald&#305;&#287;&#305; resim dosyalar&#305;
resimdeki numaraya a&#231;&#305;p bak&#305;p o numaray&#305; dosya ismi olarak verece&#287;im
ayr&#305;ca bir g&#246;r&#252;nleme makrom var onunla a s&#252;tununda gezerken resimleri s&#305;ra ile g&#246;r&#252;nt&#252;leyebiliyorum
 
A&#351;a&#287;&#305;daki makro ile resimleri an&#305;nda g&#246;r&#252;nt&#252;leyebiliyorum.
Private Sub Worksheet_SELECTIONChange(ByVal Target As Range)
On Error Resume Next
ActiveSheet.Pictures.Delete

If Target.Column <> 1 Then Exit Sub
ActiveSheet.Pictures.Insert ("C:\Documents and Settings\kullan&#305;c&#305;\Belgelerim\Resimlerim\2008 TARAMALAR\" & Target & ".jpg") 'Resimlerinizin bulundu&#287;u yolu yaz&#305;n.
End Sub
 
Yard&#305;mc&#305; olan arkada&#351;lara te&#351;ekk&#252;rler
problemin birinci k&#305;sm&#305; &#231;&#246;z&#252;ld&#252;
in&#351;aallah ikinci k&#305;sm&#305;da bir el atarsan&#305;z &#231;&#246;z&#252;lecek
 
zeki gürsoy arkadaşım teşekkür ediyorum.

forum yöneticisi arkadaşada sitem ediyorum.
bayadır sitenizden calışmalarımda yararlanıyorum. birde arkadaşa teşekür etmek için üye oldum.
5 dakkam gitti bu hepyaşanan bir sorun bu ceşitli programlama dilleri kullanıyorum. kaynak kod ararken kısaca cevaplıyabileceğim. sorular var nasıl sizler bana yardımcı olduysanız. benimde yardımcı olabileceğim bircok husus var ken bunları birkenara bırakıp yoluma devam ediyorum. 2 satır yazmak için 5-10 dakka üye ol. hiç yoksa cevap yazmak için üyelik şartı aramayın. her yere üye olmak mümkün değil.
saygılarımla
 
Sn. Zeki hocam, ayn&#305; anda listelenen dosyalara link verdirebilirmiyiz.
 
Alternatif. Office 2007 de FileSearch sorunu yaşayanlar için kullanışlıdır.
Kod:
Sub Start()
Dim klasor As Object
 
Set klasor = CreateObject("Shell.Application").BrowseForFolder _
                    (0, "Lütfen bir klasor seçin !", 1)
 
Liste (klasor.Items.Item.Path)
AltListe (klasor.Items.Item.Path)
 
Set klasor = Nothing
End Sub
 
Private Sub Liste(yol As String)
Dim dosya As String, i As Long
 
    dosya = Dir(yol & "\*.*")
    i = 1
    While dosya <> ""
        DoEvents
        i = i + 1
        Cells(i, 1) = yol & dosya
        dosya = Dir
    Wend
End Sub
 
Private Sub AltListe(yol As String)
Dim fL As Object, f As Object, dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
 
On Error GoTo sonraki
For Each f In fL
    dosya = Dir(f.Path & "\*.*")
 
    While dosya <> ""
        DoEvents
        j = [a65000].End(3).Row + 1
        Cells(j, 1) = yol & "\" & dosya
        dosya = Dir
    Wend
 
    AltListe (f.Path)
sonraki:
Next
 
Set fL = Nothing
End Sub

Zeki Hocam Kodlar için teşekkür ederim şöylşe bir düzenleme mümkün mü?
Mesala c:\Belgelerim\Excel\kitap1.xls dosyası mevcut olsun
a sütununa dosyanın adı yani; kitap1.xls
b sütununa dosyanın yolunu yani; c:\Belgelerim\Excel\
kısmını yazacak
Mümkünse
c sütununa dosyanın kaç kb olduğunu
d sütununa dosyanın erişim tarihini falan yazsın.
 
14. mesaj&#305;m g&#252;ncelli&#287;ini koruyor, kolay gelsin
 
14. mesaj&#305;m g&#252;ncelli&#287;ini koruyor, kolay gelsin

Kod:
Sub Test()
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set MyFile = FSO.GetFile("D:\TestFolder\TestEmail.xls")
    Range("A1") = "Dosya Ad&#305;"
    Range("B1") = "Klas&#246;r"
    Range("C1") = "Dosya Tipi"
    Range("D1") = "Dosya Boyutu"
    Range("E1") = "Olu&#351;turulma Tarihi"
    Range("F1") = "Son Eri&#351;im Tarihi"
    Range("G1") = "Son D&#252;zenleme Tarihi"
    Range("H1") = "Son D&#252;zenleme Zaman&#305;"
    Range("A1:H1").Font.Bold = True
    Range("A1:H1").Font.Color = vbRed
    Range("A2") = MyFile.Name
    Range("B2") = MyFile.ParentFolder
    Range("C2") = MyFile.Type
    Range("D2") = MyFile.Size / 1024 & " Kb"
    Range("E2") = Format(MyFile.DateCreated, "dd.mm.yyyy")
    Range("F2") = Format(MyFile.DateLastAccessed, "dd.mm.yyyy")
    Range("G2") = Format(MyFile.DateLastModified, "dd.mm.yyyy")
    Range("H2") = Format(MyFile.DateLastModified, "hh:mm:ss")
    Columns("A:H").AutoFit
End Sub
 
Son düzenleme:
Kod:
Sub Test()
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set MyFile = FSO.GetFile("D:\TestFolder\TestEmail.xls")
    Range("A1") = "Dosya Tipi"
    Range("B1") = "Dosya Boyutu"
    Range("C1") = "Oluşturulma Tarihi"
    Range("D1") = "Son Erişim Tarihi"
    Range("E1") = "Son Düzenleme Tarihi"
    Range("F1") = "Son Düzenleme Zamanı"
    Range("A1:F1").Font.Bold = True
    Range("A1:F1").Font.Color = vbRed
    Range("A2") = MyFile.Type
    Range("B2") = MyFile.Size / 1024 & " Kb"
    Range("C2") = Format(MyFile.DateCreated, "dd.mm.yyyy")
    Range("D2") = Format(MyFile.DateLastAccessed, "dd.mm.yyyy")
    Range("E2") = Format(MyFile.DateLastModified, "dd.mm.yyyy")
    Range("F2") = Format(MyFile.DateLastModified, "hh:mm:ss")
    Columns("A:F").AutoFit
End Sub

Haluk hocam öncelikle ilginize teşekkür ederim... Ancak benim istediğim tam olarak zeki hocamnın aşağıdaki kodları çalışırken
Alternatif. Office 2007 de FileSearch sorunu yaşayanlar için kullanışlıdır.

Kod:
Sub Start()
Dim klasor As Object
 
Set klasor = CreateObject("Shell.Application").BrowseForFolder _
                    (0, "Lütfen bir klasor seçin !", 1)
 
Liste (klasor.Items.Item.Path)
AltListe (klasor.Items.Item.Path)
 
Set klasor = Nothing
End Sub
 
Private Sub Liste(yol As String)
Dim dosya As String, i As Long
 
    dosya = Dir(yol & "\*.*")
    i = 1
    While dosya <> ""
        DoEvents
        i = i + 1
        Cells(i, 1) = yol & dosya
        dosya = Dir
    Wend
End Sub
 
Private Sub AltListe(yol As String)
Dim fL As Object, f As Object, dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
 
On Error GoTo sonraki
For Each f In fL
    dosya = Dir(f.Path & "\*.*")
 
    While dosya <> ""
        DoEvents
        j = [a65000].End(3).Row + 1
        Cells(j, 1) = yol & "\" & dosya
        dosya = Dir
    Wend
 
    AltListe (f.Path)
sonraki:
Next
 
Set fL = Nothing
End Sub

ilgili işlemlerin yan sütunlarına yapılmasıdır. yani set etme işlemi döngü içinde yapılacak,
Saygılarımla,
 
Sn. hsayar &#351;u &#351;ekilde bir kod buldum, dosyalara link de veriyor, incelermisiniz.

Sub Dateiname_Hyperlink()
Dim StDateiname As String
Dim Dateiform As String
Dim InI As Long, TotFiles As Long
Dim Suchpfad As String
Dim OldStatus As Variant
Suchpfad = InputBox("Yolunu de&#287;i&#351;tirebilirsiniz", "Adres yolu", Application.DefaultFilePath)
If Suchpfad = "" Then Exit Sub
Dateiform = InputBox("Dosya uzant&#305;s&#305;n&#305; siz de&#287;i&#351;tiriniz", "Uzant&#305;", "*.xls")
If Dateiform = "" Then Exit Sub
Application.ScreenUpdating = True
OldStatus = Application.StatusBar
Sheets.Add After:=Worksheets(Worksheets.Count)
With Application.FileSearch
.LookIn = Suchpfad
.SearchSubFolders = True
.Filename = Dateiform
If .Execute() > 0 Then
TotFiles = .FoundFiles.Count
Application.StatusBar = "Total " & TotFiles & " gefunden"
For InI = 1 To .FoundFiles.Count
Application.StatusBar = "Datei: " & InI & " von " & TotFiles
StDateiname = Mid(.FoundFiles(InI), InStrRev(.FoundFiles(InI), "\") + 1)
ActiveSheet.Hyperlinks.Add Anchor:=Cells(InI, 1), _
Address:=.FoundFiles(InI), TextToDisplay:=StDateiname
Cells(InI, 2) = FileLen(.FoundFiles(InI))
Cells(InI, 3) = FileDateTime(.FoundFiles(InI))
Next InI
End If
End With
Application.StatusBar = OldStatus
Application.ScreenUpdating = True
End Sub
 
sn arat alakan&#305;za te&#351;ekk&#252;r ederim yaln&#305;z kulland&#305;&#287;&#305;m excel versiyonunun 2007 olmas&#305; nedeni ile i&#351;ime yaram&#305;yor.
 
De&#287;erli Hocalar&#305;m sorunum devam ediyor,
Ancak 6. mesajda yer alan kodlarda bir klas&#246;r se&#231;in uygulams&#305;nda masa&#252;s&#252;t&#252; se&#231;ildi&#287;inde hata almadan i&#351;leme devam edebilmenin y&#246;ntemini buldum m&#252;sadenizle pyal&#351;mak istiyorum,

Kod:
Sub Start()
Dim klasor As Object, klsrMsUstu$
 
Set klasor = CreateObject("Shell.Application").BrowseForFolder(0, "L&#252;tfen bir klasor se&#231;in !", 1)
klsrMsUstu = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    If klasor = "Masa&#252;st&#252;" Or klasor = "Desktop" Then
        Liste (klsrMsUstu)
        AltListe (klsrMsUstu)
    ElseIf klasor <> "Masa&#252;st&#252;" Then
        Liste (klasor.Items.Item.Path)
        AltListe (klasor.Items.Item.Path)
    Else
        Exit Sub
    End If
Set klasor = Nothing
End Sub

Start prosod&#252;r&#252;n&#252; de&#287;i&#351;tirmeniz yeterlidir.
 
Geri
Üst