Страницы: 1
RSS
Подсчет количества файлов по их типу и вывод суммарного объема
 
Добрый день, уважаемые форумчане!
ВСЕХ с наступающим праздником!

Помогите пожалуйста.
Нужно узнать, в какой папке сколько файлов лежит определенного типа и вывести итоговый размер этой папки. Честно признаться, на форуме нашел только общее количество файлов и размер папки, но это немного не то... помогите пожалуйста!
 
Статья "Список файлов в папке" из "Приёмов" не подойдёт, как основа?
 
Не совсем по файлу, зато по делу
Код
Sub uuu()
    Dim sFolder$, sFile$
    Dim s#
    Dim j As Byte
    Dim sd As Object
    Dim el, sp
'-------------------
   'выбираем папку
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выберите папку"
        .AllowMultiSelect = False
        .InitialFileName = ThisWorkbook.Path
        If .Show <> -1 Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    
    'получаем размер папки
    With CreateObject("Scripting.FileSystemObject")
        s = .GetFolder(sFolder).Size
    End With
    
    'считаем файлы
    Set sd = CreateObject("Scripting.Dictionary")
    sFile = Dir(sFolder & "\*.*")
    Do While sFile <> ""
        sp = Split(sFile, ".")
        sd.Item(sp(UBound(sp))) = sd.Item(sp(UBound(sp))) + 1
        sFile = Dir
    Loop
    
    'выгружаем данные на лист
    For Each el In sd.Keys
        j = j + 1
        Cells(2, j) = el
        Cells(3, j) = sd.Item(el)
    Next
    Cells(2, j + 1) = "Размер папки"
    Cells(3, j + 1) = s
End Sub
Изменено: kalbasiatka - 07.05.2016 13:02:29
 
Цитата
Юрий М написал:
Статья "Список файлов в папке" из "Приёмов" не подойдёт, как основа?
Да, прошу прощения, видимо плохо искал...:)  так как же все-таки сделать "фильтрованную" инфу по каждому типу файлов?
 
меняйте шаблон в строке
Цитата
File = Dir(sFolder & "\*.*")
на нужный Вам тип, например "*.xlsx"
Не стреляйте в тапера - он играет как может.
 
Здесь надо просто в переменную собирать размер файлов, подходящих под шаблон:
Код
dbSize = dbSize + FileLen(sFile)

а потом эту dbSize и выводить как результат. Т.е. здесь
Код
sFile = Dir(sFolder & "\*.*")
    Do While sFile <> ""
        sp = Split(sFile, ".")
        sd.Item(sp(UBound(sp))) = sd.Item(sp(UBound(sp))) + 1
        sFile = Dir
    Loop

надо как-то так:
Код
sFile = Dir(sFolder & "\*.*")
    Do While sFile <> ""
        dbSize = dbSize + FileLen(sFile)
        sFile = Dir
    Loop

Тогда это и будет размер в байтах.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Читают тему
Наверх