"Alt Klasörleri" ve "Alt Klasörlerdeki Tüm Dosyaları" Listeleme

Katılım
11 Şubat 2009
Mesajlar
1
Excel Vers. ve Dili
vb excel 2010
bende çok teşekkür ederim gerçekten çok yararlı bir paylaşım olmuş.. ama üstteki kodlara bir eklenti rica edeceğim.. bir türlü yapamadım..listelediğimiz klasörün içinde bulunan excellerde "Bottoms Summary sheet (inch)" adlı bir sheet var. Bu sheetlerin b28'deki değerini, oluşturduğumuz excelin I sütununa yazdırmak istiyorum.. yardımcı olursanız sevinirim...
 
Katılım
25 Şubat 2008
Mesajlar
14
Excel Vers. ve Dili
2010-İngilizce
Altın Üyelik Bitiş Tarihi
24.01.2019
Teşekkür ederim arkadaşlar çok işime yaradı
 
Katılım
26 Şubat 2010
Mesajlar
184
Excel Vers. ve Dili
2013 Türkçe
64 Bit
Merhaba

halit bey elinize bileğinize sağlık. kodlar çok işime yaradı,
 
Son düzenleme:
Katılım
27 Ocak 2012
Mesajlar
1
Excel Vers. ve Dili
Office 2007, Türkçe.
Merhaba,

Alternatif olarak daha önce Haluk, Hamitcan ve Korhan üstatların yardımları ile derlediğim çalışmayı ekte bilgilerinize sunarım.

Bu vesile ile hocalarımıza tekrar teşekkür ederim.

Saygılarımla.

http://www.excel.web.tr/f48/active-directory-de-ki-kullanycy-ad-soyady-yazdyrma-t103523/sayfa3.html

Çalışma 1; Aşağıdaki kod seçilen klasördeki dosyaların dosya adlarını, linklerini ve çeşitli özelliklerini sıralamaktadır.

Kod:
Public ui As Long
Sub SubHsr()
Dim soru As String
10  If Application.Workbooks.Count = 0 Then
11      soru = "Açık Çalışma Kitabı bulunmamaktadır, yeni çalışma kitabı açılsın mı?"
12      If MsgBox(soru, vbYesNo) = vbYes Then
13          Workbooks.Add: GoTo 18
14      Else
15          MsgBox "Açık çalışma kitabı olmadığından çıklacaktır": GoTo 117
16      End If
17  Else
18      soru = ActiveWorkbook.Name & " kitabının " & ActiveSheet.Name
19      soru = soru & " sayfasına Dosyalar listelenecektir." & vbLf & "Devam Etmek İstiyormusunuz?"
20      If MsgBox(soru, vbYesNo) = vbYes Then
21          GoTo 101
22      Else
23          GoTo 117
24      End If
25  End If
101    Dim klsrSec As Object
102    Dim klsrMsUstu, Dosya, yol As String
103    Set klsrSec = CreateObject("Shell.Application").BrowseForFolder(0, "Lütfen bir klasor seçin !", 1)
104    klsrMsUstu = CreateObject("WScript.Shell").SpecialFolders("Desktop")
105        If klsrSec Is Nothing Then GoTo 117
106        If klsrSec = "Masaüstü" Or Klasor = "Desktop" Then
107            yol = klsrMsUstu
108            AnaListe (yol)
109            AltListe (yol)
110        ElseIf klsrSec <> "Masaüstü" Then
111            yol = klsrSec.Items.Item.Path
112            AnaListe (yol)
113            AltListe (yol)
114        Else
115            GoTo 117
116        End If
117    Set klsrSec = Nothing: ui = 0
End Sub
Private Sub AnaListe(yol As String)
201 Dim Dosya As String
202 Cells.ClearContents
203 Range("A4") = "Dosya Yolu":             Range("B4") = "Dosya Adı"
204 Range("C4") = "Dosya Tipi":             Range("D4") = "Dosya Boyutu"
205 Range("E4") = "Oluşturulma Tarihi":     Range("F4") = "Son Erişim Tarihi"
206 Range("G4") = "Son Düzenleme Tarihi":   Range("H4") = "Son Düzenleme Zamanı"
207 Dosya = Dir(yol & "\*.*")
208 ui = 4
209 While Dosya <> ""
210     DoEvents
211     ui = ui + 1
212     Cells(ui, 1) = yol
213     Cells(ui, 2) = Dosya
214     Call DosyaOzellikleri(yol & Application.PathSeparator & Dosya)
215     Dosya = Dir
216 Wend
End Sub
Private Sub AltListe(yol As String)
On Error Resume Next
301 Dim klsrAra, klsrLst As Object, Dosya, dsyTYl As String
302 Set klsrLst = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
303 On Error GoTo 316
304 For Each klsrAra In klsrLst
305     Dosya = Dir(klsrAra.Path & "\*.*")
306     While Dosya <> ""
307        DoEvents
308        ui = [a65000].End(3).Row + 1
309        Cells(ui, 1) = klsrAra.Path & "\"
310        Cells(ui, 2) = Dosya
311        Call DosyaOzellikleri(klsrAra.Path & Application.PathSeparator & Dosya)
312        Dosya = Dir
313     Wend
314     AltListe (klsrAra.Path)
315 Next
316 Set klsrAra = Nothing: Set klsrLst = Nothing
End Sub
Private Sub DosyaOzellikleri(dsyBak As String)
401 Dim DsSisKnt, Dosyam As Object
402 Set DsSisKnt = CreateObject("Scripting.FileSystemObject")
403 Set Dosyam = DsSisKnt.GetFile(dsyBak)
404 With Dosyam
405    ActiveSheet.Hyperlinks.Add Anchor:=Range("B" & ui), Address:=dsyBak
406    Range("C" & ui) = .Type
407    Range("D" & ui) = Format(.Size / 1024, "#,##0.0000") & " Kb"
408    Range("E" & ui) = Format(.DateCreated, "dd.mm.yyyy")
409    Range("F" & ui) = Format(.DateLastAccessed, "dd.mm.yyyy")
410    Range("G" & ui) = Format(.DateLastModified, "dd.mm.yyyy")
411    Range("H" & ui) = Format(.DateLastModified, "hh:mm:ss")
412 End With
413 Set DsSisKnt = Nothing
414 Set Dosyam = Nothing
End Sub
Çalışma 2; Bu kodda ise seçilen yerdeki dosyaların yolunu manuel yazmakla beraber devamında gelen ekranda istediğimiz uzantı tipini ( *.* ; *.xls ; *.doc ; vs... ) şeklinde yazarak arama için uzantı kıstası oluşturabilmekteyiz.

Kod:
Sub Listele()
Dim DTipi$, Klasor$
Klasor = InputBox(" ÖNEMLİ ! : Bulunan değerleri seçili hücreden aşağı doğru yapacağından, doğru sayfa ve doğru hücreyi seçtiğinizden emin olun. Eğer emin değilseniz Cancele basıp çıkın eminseniz, Aşağıya veri girebilirsiniz. " & Chr(13) & "     " & Chr(13) & "Listelenecek yolu yazınız." & Chr(13) & " " & Chr(13) & " Örneğin " & Chr(13) & " D:  " & Chr(13) & "   veya   " & Chr(13) & " C:\Documents and Settings\mozdem\Desktop  ", "Aranacak Dosyaların Yolu ? ")
If Klasor = "" Then End
DTipi = InputBox("Listelenecek dosya türünü yazınız", "Dosya türü ne?", "*.*")
Call ListeAl(Klasor, DTipi, True)
End
End Sub
Sub ListeAl(Klasor$, DTipi$, Alt%)
Dim klasorler(), i, Dosya$, yol$, attr%, ks%
Static r
On Error Resume Next
If Right$(Klasor, 1) <> "\" Then Klasor = Klasor & "\"
If DTipi = "" Then End
Dosya = Dir(Klasor & DTipi, vbNormal)
Do While Dosya <> ""
        yol = Klasor & Dosya
        ActiveCell.Offset(r, 0) = yol
        r = r + 1
        Dosya = Dir()
Loop
If Alt = False Then Exit Sub
Dosya = Dir(Klasor & "*.*", vbDirectory)
Do While Dosya <> ""
    attr = 0
    attr = GetAttr(Klasor & Dosya)
    If Dosya <> "." And Dosya <> ".." And _
        (attr And vbDirectory) <> 0 _
    Then
        ks = ks + 1 'klasör sayısı
        ReDim Preserve klasorler(1 To ks)
        klasorler(ks) = Dosya
    End If
    Dosya = Dir()
Loop

For i = 1 To ks
     Call ListeAl(Klasor & klasorler(i) & "\", DTipi, Alt)
Next i
End Sub
Bu kodlar için çok teşekkür ediyorum, gerçekten çok işime yaradı.

Sadece bir şey daha eklemek istiyorum. Dosyaların boyutu, yaratma tarihi vb. bilgilerin yanında, dosyaların video olduğunu düşünün, video süresini getirmek istiyorum. Bunun için yardımcı olabilen olursa çok sevinirim.

Teşekkürler.
 
Katılım
14 Şubat 2014
Mesajlar
1
Excel Vers. ve Dili
2010
Merhababalar, aşağıdaki kodlamada sabit bir klasörü seçtirmek mümkün müdür?



Kod:
Public ui As Long
Sub SubHsr()
Dim soru As String

101    Dim klsrSec As Object
102    Dim klsrMsUstu, Dosya, yol As String
103    Set klsrSec = CreateObject("Shell.Application").BrowseForFolder(0, "Lütfen bir klasor seçin !", 1)
104    klsrMsUstu = CreateObject("WScript.Shell").SpecialFolders("Desktop")
105        If klsrSec Is Nothing Then GoTo 117
106        If klsrSec = "Masaüstü" Or Klasor = "Desktop" Then
107            yol = klsrMsUstu
108            AnaListe (yol)
109            AltListe (yol)
110        ElseIf klsrSec <> "Masaüstü" Then
111            yol = klsrSec.Items.Item.Path
112            AnaListe (yol)
113            AltListe (yol)
114        Else
115            GoTo 117
116        End If
117    Set klsrSec = Nothing: ui = 0
End Sub
Private Sub AnaListe(yol As String)
201 Dim Dosya As String
202 Cells.ClearContents
203 Range("A4") = "Dosya Yolu":             Range("B4") = "Dosya Adı"
206 Range("C4") = "Son Düzenleme Tarihi":
207 Dosya = Dir(yol & "\*.*")
208 ui = 4
209 While Dosya <> ""
210     DoEvents
211     ui = ui + 1
212     Cells(ui, 1) = yol
213     Cells(ui, 2) = Dosya
214     Call DosyaOzellikleri(yol & Application.PathSeparator & Dosya)
215     Dosya = Dir
216 Wend
End Sub
Private Sub AltListe(yol As String)
On Error Resume Next
301 Dim klsrAra, klsrLst As Object, Dosya, dsyTYl As String
302 Set klsrLst = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
303 On Error GoTo 316
304 For Each klsrAra In klsrLst
305     Dosya = Dir(klsrAra.Path & "\*.*")
306     While Dosya <> ""
307        DoEvents
308        ui = [a65000].End(3).Row + 1
309        Cells(ui, 1) = klsrAra.Path & "\"
310        Cells(ui, 2) = Dosya
311        Call DosyaOzellikleri(klsrAra.Path & Application.PathSeparator & Dosya)
312        Dosya = Dir
313     Wend
314     AltListe (klsrAra.Path)
315 Next
316 Set klsrAra = Nothing: Set klsrLst = Nothing
End Sub
Private Sub DosyaOzellikleri(dsyBak As String)
401 Dim DsSisKnt, Dosyam As Object
402 Set DsSisKnt = CreateObject("Scripting.FileSystemObject")
403 Set Dosyam = DsSisKnt.GetFile(dsyBak)
404 With Dosyam
405    ActiveSheet.Hyperlinks.Add Anchor:=Range("B" & ui), Address:=dsyBak
410    Range("C" & ui) = Format(.DateLastModified, "dd.mm.yyyy")
412 End With
413 Set DsSisKnt = Nothing
414 Set Dosyam = Nothing
End Sub
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,679
Excel Vers. ve Dili
Excel 2019 Türkçe
Arkadaşlar, dosyanın yazarını (Author) nasıl tespit edebiliriz ?
 
Katılım
27 Ekim 2017
Mesajlar
97
Excel Vers. ve Dili
2016 TÜRKÇE
Altın Üyelik Bitiş Tarihi
06-01-2024
Halit bey sizin hedef klasörü kendimiz göstererek belirlediginiz kodlar daha çok begendım.
Ama istedigim şu:
Örngin masaüstüne yiyecekler isimli bir klasör var diyelim.İçinde de "meyveler,sebzeler,içecekler"isimli altklasörler var diyelim.Ben hedef olarak "yiyecekler"isimli klasörü seçince excell bana sıralama yaparken sadece"meyveler,sebzeler,içecekler"şeklinde sıralasın istiyorum.Sizin yöntemde c:\users dan başlayarak yazmaya başlıyor..Yani konumu yazmasın istiyorum..Buna uygun şekilde düzenler misiniz


Alternatif olarak da bende bir kod ekliyorum.

Burası klasörleri (altklasör dahil) listeliyor.

Kod:
Sub Klasör_Listele()
Columns("A:A").ClearContents
Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Liste1 (Kaynak)
Set Klasor = Nothing
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
End Sub
Private Sub Liste1(Yol As String)
Dim fL As Object, f As Object, Dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(Yol).subfolders
j = WorksheetFunction.CountA(Worksheets(ActiveSheet.Name).Range("A1:A" & Rows.Count)) + 1
Cells(j, 1) = Yol
On Error GoTo sonraki
For Each f In fL
On Error Resume Next
Liste1 (f.Path)
sonraki:
Next
Set fL = Nothing
End Sub
Burası dosyaları (altklasör dahil) listeliyor

Kod:
Sub Dosya_Listele()
Columns("A:A").ClearContents
Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Liste2 (Kaynak)
Set Klasor = Nothing
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
End Sub
Private Sub Liste2(Yol As String)
Dim fL As Object, f As Object, Dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(Yol).subfolders
Dosya = Dir(Yol & "\*.*")
While Dosya <> ""
DoEvents
j = WorksheetFunction.CountA(Worksheets(ActiveSheet.Name).Range("A1:A" & Rows.Count)) + 1
ekle = ""
If Right(Yol, 1) <> "\" Then ekle = "\"
Cells(j, 1) = Yol & ekle & Dosya
Dosya = Dir
Wend
On Error GoTo sonraki
For Each f In fL
On Error Resume Next
Liste2 (f.Path)
sonraki:
Next
Set fL = Nothing
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,760
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Halit bey sizin hedef klasörü kendimiz göstererek belirlediginiz kodlar daha çok begendım.
Ama istedigim şu:
Örngin masaüstüne yiyecekler isimli bir klasör var diyelim.İçinde de "meyveler,sebzeler,içecekler"isimli altklasörler var diyelim.Ben hedef olarak "yiyecekler"isimli klasörü seçince excell bana sıralama yaparken sadece"meyveler,sebzeler,içecekler"şeklinde sıralasın istiyorum.Sizin yöntemde c:\users dan başlayarak yazmaya başlıyor..Yani konumu yazmasın istiyorum..Buna uygun şekilde düzenler misiniz
Siz 4 nolu mesajdaki kodu diyorsanız 8 nolu mesajdaki yazılanıda dikkate alınız.
 
Katılım
27 Ekim 2017
Mesajlar
97
Excel Vers. ve Dili
2016 TÜRKÇE
Altın Üyelik Bitiş Tarihi
06-01-2024
Halit bey 8 nolu mesajda klasörün içindeki dosyaların yollarına kadar yazıyor.Benım istedigim bu değil
9 nolu mesajdaki kodlar bir klasörün içindeki alt klasörlerin içindeki dosyaları gösteriyor.
İstedigim şey seçtigim bir klasördeki sadece alt klasörlerin adlarını o alt klasörün konum ismini yazmayacak şekilde sadece klasör adı gözükcek şekilde yazdırmak

Yukarda anlattım.
Sizin yöntemde excele aktarınca c:\users\ali\yiyecekler\meyve "şeklinde başlayarak yazmaya başlıyor
Benım istedigim şey excele aktarınca sadece "meyve "yazcak.Basit örnek olsun diye ekledim.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,760
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Yazınızdan dosya değil klasörlerin listelenmesi anlaşılıyor.
Bu kod klasörün içindeki klasörleri (alt klasör dahil) A sutununa tam adresi B sutununa isimleri listeler

Kod:
Sub CommandButton3_Click()

Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.self.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Range("A2:B65000").ClearContents
Liste11 (Kaynak)
Set Klasor = Nothing
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
End Sub
Private Sub Liste11(yol As String)
Dim fL As Object, f As Object, Dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject")
On Error GoTo sonraki
For Each f In fL.GetFolder(yol).subfolders
j = WorksheetFunction.CountA(Worksheets(ActiveSheet.Name).Range("A1:A" & Rows.Count)) + 1
Cells(j, 1) = yol & "\" & f.Name
Cells(j, 2) = f.Name

On Error Resume Next
Liste11 (f.Path)
sonraki:
Next
Set fL = Nothing
End Sub
 
Katılım
27 Ekim 2017
Mesajlar
97
Excel Vers. ve Dili
2016 TÜRKÇE
Altın Üyelik Bitiş Tarihi
06-01-2024
Halit bey çok teşekkür ederim.Sizin kodda biraz düzenleme yaptım aşagıdaki gibi.Allah razı olsun sizden.Bütün iş yükümü azalttı diyebilirim.
Son bişey isticem...
Aşagıdaki kodlar bir klasör içindeki alt klasörleri a sutununa yazıyor...Adres kısımlarını ise eklemedim koddan sildim.
Ben son olarak şunu istiyorum.
Bir klasör içindeki alt klasörlerin alt klasörlerini sıralamak istiyorum...
Ama şöyle olacak.
Örnegin görevliler isimli bir klasör içinde alt klasörler var (ahmet,mehmet,ali,veli""şeklinde diyelim.
Bu görevlilerin oldugu alt klasörlerin içinde de kontrol edilecek mahallelelerin oldugu alt klasörler var diyelim...
Ben sizin bu programı çalıştırdıgım zaman ,soldaki a sutununa görevlilerin isim listesi yerleşcek.
B sutununa da mahalle adları yerleşcek...Böylece kim hangi mahalleye gitmiş filtremele ile bu




Kod:
Sub Dikdörtgen2_Tıkla()
Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.self.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Range("A2:B65000").ClearContents
Liste11 (Kaynak)
Set Klasor = Nothing
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
End Sub
Private Sub Liste11(yol As String)
Dim fL As Object, f As Object, Dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject")
On Error GoTo sonraki
For Each f In fL.GetFolder(yol).subfolders
j = WorksheetFunction.CountA(Worksheets(ActiveSheet.Name).Range("A1:A" & Rows.Count)) + 1

Cells(j, 1) = f.Name

On Error Resume Next
Liste11 (f.Path)
sonraki:
Next
Columns("A").AutoFit
Set fL = Nothing
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,760
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu kodu bir dene

Kod:
Dim sut
Dim sat

Sub CommandButton3_Click()

Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.self.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Cells.ClearContents
Liste11 (Kaynak)
sat = 0
For r = 2 To Cells(Rows.Count, "A").End(3).Row
sut = 2
sat = sat + 1
aranan = Cells(r, "a").Value
Liste12 (aranan)
Next r

Set Klasor = Nothing
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
End Sub
Private Sub Liste11(yol As String)
Dim fL As Object, f As Object, Dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject")

For Each f In fL.GetFolder(yol).subfolders
j = WorksheetFunction.CountA(Worksheets(ActiveSheet.Name).Range("A1:A" & Rows.Count)) + 1
Cells(j, 1) = yol & "\" & f.Name
Cells(j, 2) = f.Name
Next
Set fL = Nothing
End Sub
Private Sub Liste12(yol As String)
Dim fL As Object, f As Object, Dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject")
On Error GoTo sonraki
'sat = sat + 1
For Each f In fL.GetFolder(yol).subfolders
sut = sut + 1
Cells(sat, sut) = f.Name

On Error Resume Next
Liste12 (f.Path)
sonraki:
Next
Set fL = Nothing
End Sub
 
Katılım
27 Ekim 2017
Mesajlar
97
Excel Vers. ve Dili
2016 TÜRKÇE
Altın Üyelik Bitiş Tarihi
06-01-2024
Kodda
'sat = sat + 1 yazdıgınız kısımda tırnak işaretini kaldırdım.Yine istedigim gibi çalışmıyor.
Ekte örnek bir klasör gönderdim
Görevliler isimli klasörün içinde 3 tane isim var .Ahmet-Ali-Mehmet
Ahmete ait alt klasörler:Eskişehir,İzmir,Konya,Manisa olmak üzere 4 tane
Mehmete ait alt klasörler: Ankara,Erzurum,Isparta,İstanbul,Yozgat olmak üzere 5 tane
Ali'ye ait alt klasörler:Aydın,ANTALYA,Muğla olmak üzere 3tane
Dolaysıyla ben makroyu çalıştırınca;
A sutununda önce ilk 3 satırda Ali yazcak ve B sütununda da Aliye karşılık gelen şehir isimleri,
sonraki ilk 4 satırda Ahmet yazıp B sutununda aynı satırlara karşılık gelen hücrelerde yine şehir isimleri,
sonraki ilk 5 satırda da Mehmet yazıp B sutununda aynı satırlara karşılık gelen hücrelerde yine şehir isimleri otomatık çıkmalı.
Aşagıdaki ovale tıklayıp görevliler isimli klasörü seçince kısaca aşagıdaki gibi sıralasın istiyorum.

 

Ekli dosyalar

Katılım
27 Ekim 2017
Mesajlar
97
Excel Vers. ve Dili
2016 TÜRKÇE
Altın Üyelik Bitiş Tarihi
06-01-2024
Düzeltme yapıyım.Sıralamaya 2.satırdan başlıcakki ilk satırlara başlıkları yazdım çünkü.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,760
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
İsimler alt alta yazıyor şehirler isimlerin yanına yani sutun sutun yazıyor.
KOD:

Rich (BB code):
Dim sut
Dim sat
Dim say
Dim veri(1000)

Sub CommandButton3_Click()

Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.self.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Cells.ClearContents
'Rows("2:500").ClearContents
Cells(1, 1) = "İSİMLER"
Cells(1, 2) = "ŞEHİRLER"
sut = 0
sat = 0
say = 0

Liste11 (Kaynak)
sat = 1
For r = 1 To say
sut = 1
sat = sat + 1
aranan = veri(r)
Liste12 (aranan)
Next r

Set Klasor = Nothing
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
End Sub
Private Sub Liste11(yol As String)
Dim fL As Object, f As Object, Dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject")

For Each f In fL.GetFolder(yol).subfolders
say = say + 1
j = WorksheetFunction.CountA(Worksheets(ActiveSheet.Name).Range("A1:A" & Rows.Count)) + 1
veri(say) = yol & "\" & f.Name
Cells(j, 1) = f.Name
Next
Set fL = Nothing
End Sub
Private Sub Liste12(yol As String)
Dim fL As Object, f As Object, Dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject")
On Error GoTo sonraki
'sat = sat + 1
For Each f In fL.GetFolder(yol).subfolders
sut = sut + 1
Cells(sat, sut) = f.Name

On Error Resume Next
Liste12 (f.Path)
sonraki:
Next
Set fL = Nothing
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,760
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
56 nolu mesajdaki kodu yeniden güncelledim
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,760
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu kod 55 nolu mesajdaki sonuç ile aynı

PHP:
Dim say
Dim veri1(1000)
Dim veri2(1000)
Dim aranan2

Sub CommandButton3_Click()

Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.self.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Cells.ClearContents
'Rows("2:500").ClearContents
Cells(1, 1) = "İSİMLER"
Cells(1, 2) = "ŞEHİRLER"

say = 0

Liste11 (Kaynak)
For r = 1 To say
aranan1 = veri1(r)
aranan2 = veri2(r)
Liste12 (aranan1)
Next r

Set Klasor = Nothing
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
End Sub
Private Sub Liste11(yol As String)
Dim fL As Object, f As Object, Dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject")

For Each f In fL.GetFolder(yol).subfolders
say = say + 1
'j = WorksheetFunction.CountA(Worksheets(ActiveSheet.Name).Range("A1:A" & Rows.Count)) + 1
veri1(say) = yol & "\" & f.Name
veri2(say) = f.Name
Next
Set fL = Nothing
End Sub
Private Sub Liste12(yol As String)
Dim fL As Object, f As Object, Dosya As String, j As Long
Set fL = CreateObject("Scripting.FileSystemObject")
On Error GoTo sonraki
For Each f In fL.GetFolder(yol).subfolders

j = WorksheetFunction.CountA(Worksheets(ActiveSheet.Name).Range("A1:A" & Rows.Count)) + 1
Cells(j, 1) = aranan2
Cells(j, 2) = f.Name
On Error Resume Next
Liste12 (f.Path)
sonraki:
Next
Set fL = Nothing
End Sub
 
Katılım
27 Ekim 2017
Mesajlar
97
Excel Vers. ve Dili
2016 TÜRKÇE
Altın Üyelik Bitiş Tarihi
06-01-2024
Halit bey teşekkür ederim.Sizin kodlar istedigim gibi çalışıyor.
Başka bir ustad da şu şekilde yazdı.Paylaşıyorum...

Kod:
Sub Oval3_Tıkla()
Columns("A:B").ClearContents
Set Klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Lütfen bir klasor seçin !", 1)
If Klasor Is Nothing Then MsgBox "Klasör Seçmediniz", vbInformation + vbMsgBoxRtlReading, "İptal Edildi": Exit Sub
For Each ana In CreateObject("Scripting.FileSystemObject").GetFolder(Klasor.items.Item.Path).subfolders
For Each alt In CreateObject("Scripting.FileSystemObject").GetFolder(ana).subfolders
sat = sat + 1
Cells(sat + 1, 1) = ana.Name
Cells(sat + 1, 2) = alt.Name
Next alt, ana
Cells(1, 1).Resize(1, 2) = Array("İSİMLER", "ŞEHİRLER")
MsgBox "İşlem Tamamlandı",
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,760
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
her iki kod da buraya eklediğim klasörü denermisiniz.
Yeni Bit Eşlem Resmi.jpg
 

Ekli dosyalar

Son düzenleme:
Üst