DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Bu kodlar için çok teşekkür ediyorum, gerçekten çok işime yaradı.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.
Ç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: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
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
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
Alternatif olarak da bende bir kod ekliyorum.
Burası klasörleri (altklasör dahil) listeliyor.
Burası dosyaları (altklasör dahil) listeliyorKod: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
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
Siz 4 nolu mesajdaki kodu diyorsanız 8 nolu mesajdaki yazılanıda dikkate alınız.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
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
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
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
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
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
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