Bartek Borczyk

Bartek Borczyk Operator liczb i
słów

Temat: ILOŚĆ PLIKÓW W PODFOLDERACH

Czy jest jakiś lepszy sposób na pobranie ilości plików w folderze głównym aniżeli pętla po każdym niższym podfolderze?

Potrzebuję jakiś patent na zmienną ilość poziomów.

To co mam teraz jest średnio zadowalające:


Sub sTestLicz()
Dim objFso As Scripting.FileSystemObject
Dim objFso_FolderGłówny As Scripting.Folder
Dim objFso_FolderPoziom1 As Scripting.Folder
Dim objFso_FolderPoziom2 As Scripting.Folder
Dim objFso_FolderPoziom3 As Scripting.Folder

Dim lngIlość As Long

Set objFso = New Scripting.FileSystemObject
Set objFso_FolderGłówny = objFso.GetFolder("C:\Documents and Settings\bartosz.borczyk\Pulpit\Licz")

For Each objFso_FolderPoziom1 In objFso_FolderGłówny.SubFolders
lngIlość = lngIlość + objFso_FolderPoziom1.Files.Count

For Each objFso_FolderPoziom2 In objFso_FolderPoziom1.SubFolders
lngIlość = lngIlość + objFso_FolderPoziom2.Files.Count

For Each objFso_FolderPoziom3 In objFso_FolderPoziom2.SubFolders
lngIlość = lngIlość + objFso_FolderPoziom3.Files.Count
Next objFso_FolderPoziom3

Next objFso_FolderPoziom2

Next objFso_FolderPoziom1

MsgBox lngIlość
End Sub

konto usunięte

Temat: ILOŚĆ PLIKÓW W PODFOLDERACH

skorzystaj może z tego co daje system

shell("dir d:\praca /b /s > %temp%\pliki.txt",0)

a później potraktuj ten plik jakimś ustrojstwem do liczenia plików

konto usunięte

Temat: ILOŚĆ PLIKÓW W PODFOLDERACH

Albo jest jeszcze taki obiekt filesearch, którego nie znam metod na pamięć ale który z tego co pamiętam załatwi Twój problem
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: ILOŚĆ PLIKÓW W PODFOLDERACH

Ja korzystam z takiej sprytnej pętli:

Dim x As Long

Sub GetFolder()

Dim MyPath As String
Dim FD As FileDialog

' Nagłówek
With Range("A1:B1")
.EntireColumn.Clear
.Value = Array("Folder", "File")
.Font.Bold = True
End With

' Zmienna
x = 1

' Okienko z wyborem pliku
Set FD = Application.FileDialog(msoFileDialogFolderPicker)
With FD
.AllowMultiSelect = False
If .Show = False Then Exit Sub
MyPath = .SelectedItems(1)
End With

' Wywołanie procedury
FilesInFolder MyPath

' Wyrównanie szerokosci kolumn
Columns("A:B").AutoFit

End Sub


Sub FilesInFolder(ByRef FilePath As String)

Dim FSO As FileSystemObject
Dim MainFolder As Folder
Dim SbFolder As Folder
Dim Fil As File

' Wczesne wiązanie - Microsoft Scripting Runtime
Set FSO = New FileSystemObject

' Główny folder
Set MainFolder = FSO.GetFolder(FilePath)

' Pętla po plikach
For Each Fil In MainFolder.Files
x = x + 1
Cells(x, "A") = MainFolder.Name
Cells(x, "B") = Fil.Name
Next Fil

' Powtórz dla podfolderów
For Each SbFolder In MainFolder.SubFolders
FilesInFolder SbFolder.Path
Next SbFolder

End Sub



Wyślij zaproszenie do