Public Function ScanDir(sDir As String) As Long
   Dim sFile As String
   Dim sPath As String
   Dim hStat As Stat
   Dim aDir As String[]
   Dim iSize As Long
   Try hStat = Stat(sDir)
   If Error Then Return -1
   iSize = hStat.Size
   If hStat.Type <> gb.Directory Then Return iSize
   Try aDir = Dir(sDir)
   For Each sFile In aDir
     sPath = sDir &/ sFile
     Try hStat = Stat(sPath)
     If Error Then Continue
     With hStat
       If .Type = gb.Directory Then
         Try iSize += ScanDir(sPath)
       Endif
       Try iSize += .Size
     End With
   Next
   Return iSize
End 
Public Sub Form_Open()
  Print ScanDir(User.Home)
End
Public Sub ScanDir(sPath As String) As String
  Dim sFile As String
  Dim lSize As Long
  For Each sFile In Dir(sPath, "*", gb.File)
    lSize += Stat(sPath &/ sFile).Size
  Next
  Return sPath & " = " & Format(lSize / 1000000, "0.0") & "MB"
End(09-03-2021, 17:39)cogier escribió: ¿Ayudará esto?
(09-03-2021, 22:08)jguardon escribió: Sólo funciona si dentro de un directorio sólo hay ficheros. Si hay varios niveles de directorios y subdirectorios, creo que no va a funcionar. Tendría que ser una función recursiva que vaya entrando en cada subdirectorio, sumando tamaños y regresando a la raíz para continuar con el siguiente.