VBA Tools

Lista plików w katalogu

napisane przez Oskar w dniu poniedziałek, 6 Czerwiec, 2011, w kategorii Porady - Excel

W przypadku kiedy, chcemy odwołać się do plików które zostały utworzone np do tygodnia wstecz możemy użyć następującej procedury:

Sub ListFilesFolder()
'MVP OShon from VBATools.pl
Dim ob As Object, pliki As Object, plik As Object
Dim folder As Object, sciezka$, r&: r = 2
sciezka = "C:\Temp\"
 Cells(1, 1) = "nazwa pliku"
 Cells(1, 2) = "plik ze ścieżka"
 Cells(1, 3) = "rozmiar"
 Cells(1, 4) = "rodzaj"
 Cells(1, 5) = "utworzono"
 Cells(1, 6) = "ostatnio otwarty"
 Cells(1, 7) = "data modyfikacji"
 Cells(1, 8 ) = "atrybut"
 Cells(1, 9) = "ścieżka dos"
Set ob = CreateObject("Scripting.FilesystemObject")
Set folder = ob.GetFolder(sciezka)
Set pliki = ob.GetFolder(folder).Files

With Application
 .ScreenUpdating = False
 .EnableEvents = False
 For Each plik In pliki
'przykład ograniczeń:
 'If Mid(LCase(plik), InStrRev(plik, ".") + 1, 3) = "xls" Then 'ograniczenie po rodz pliku
 'If CDate(plik.DateCreated) > Format(Now - 7, "YYYY-MM-DD") Then 'ograniczenie po dacie
 Cells(r, 1) = plik.Name
 Cells(r, 2) = folder & "\" & plik.Name
 Cells(r, 3) = plik.Size
 Cells(r, 4) = plik.Type
 Cells(r, 5) = plik.DateCreated
 Cells(r, 6) = plik.DateLastAccessed
 Cells(r, 7) = plik.DateLastModified
 Cells(r, 8 ) = plik.Attributes
 Cells(r, 9) = plik.ShortPath & plik.ShortName
 r = r + 1
 'End If
 'End If
 Next plik
 .ScreenUpdating = True
 .EnableEvents = True
End With
End Sub

Deklaracje: ścieżka oraz ograniczenia: rozszerzenia oraz daty utworzenia mogą zostać zmodyfikowane.

 

Można też za pomocą parametrów metody FSO wyznaczyć np: maksymalną datę w danym katalogu (ostatni plik):

Sub LastFileFolder()
'MVP OShon from VBATools.pl
Dim ob As Object, pliki As Object, plik As Object
Dim folder As Object, x&, y&
Const sciezka$ = "C:\Temp\"
Set ob = CreateObject("Scripting.FilesystemObject")
Set folder = ob.GetFolder(sciezka)
Set pliki = ob.GetFolder(folder).Files
ReDim naj(1 To 2, 1 To pliki.Count)

With Application
 .ScreenUpdating = False
 .EnableEvents = False
 For Each plik In pliki
 If Mid(LCase(plik), InStrRev(plik, ".") + 1, 3) = "png" Then 'ograniczenie po rodz pliku
 x = x + 1
 naj(1, x) = plik.Name
 naj(2, x) = plik.DateCreated '.DateLastAccessed'.DateLastModified
 If x > 1 Then
 If naj(2, y) < naj(2, x) Then y = x
 Else
 y = x
 End If
 End If
 Next plik
 .ScreenUpdating = True
 .EnableEvents = True
End With
MsgBox "Data ostatniego pliku *.png: " & naj(2, y) & vbCr & "Plik o nazwie: " & naj(1, y)
End Sub

(c) Shon Oskar – www.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

Podziel się ze znajomymi:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Blip
  • Grono
  • Gwar
  • Kciuk.pl
  • LinkedIn
  • MySpace
  • OSnews.pl
  • Śledzik
  • Spis.pl
  • Technorati
  • Twitter
  • Vala.pl
  • Wahacz.pl
  • Wykop

Wpisz swój komentarz:

Comment Spam Protection by WP-SpamFree