Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


it3, VBS
Категорически не советую, пока скрипт не отработал, работать с другой таблицей в другом окне.
Путь к таблице, адреса ячеек пропишИте свои.
Код: Выделить весь код
FileXLS = "Z:\Soft_In\я19082113.xlsx"

Fname1 = "C6"   ' Первая ячейка с путём
fsize1 = "F6"   ' Первая ячейка с размером
koeff = 2       ' 0-байты, 1-Kb, 2-Mb, 3-Gb, 4-Tb

With CreateObject("Excel.Application")
    .Visible = True
    .Workbooks.Open (FileXLS)

    i = 0
    Do
        Pfold = .Range(Fname1).Offset(i, 0)
        If InStr(1, Pfold, "\") = 0 Then Exit Do
        .Range(fsize1).Offset(i, 0) = FFolderSize(Pfold, koeff)
        i = i + 1
    Loop
End With
MsgBox "Done!"
' ===============================

Function FFolderSize(arg, k)
    On Error Resume Next
    Err.Number = 0
    
    FFolderSize = CreateObject("Scripting.FileSystemObject").GetFolder(arg).Size
    If Err.Number <> 0 Then
            FFolderSize = Err.Description
    Else
        If k = 1 Then FFolderSize = FFolderSize / 1024
        If k = 2 Then FFolderSize = FFolderSize / 1024 / 1024
        If k = 3 Then FFolderSize = FFolderSize / 1024 / 1024 / 1024
        If k = 4 Then FFolderSize = FFolderSize / 1024 / 1024 / 1024 / 1024
    End If
    On Error GoTo 0
End Function
Iska,
Цитата Iska:
делитель (байты/килобайты/мегабайты/гагабайты) можно при желании добавить вторым аргументом функции. »
Не стал этого делать для функции в ячейке: решил, так гибче. В формуле в ячейке написать деление не проблема, тем более, возможно, еще приделать какую-нибудь функцию, типа ОКРУГ.
В скрипте решил, что здесь удобнее приделать еще один аргумент, поэтому чуть доработал.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:54, 21-08-2019 | #51