De acuerdo Krator.
Ahora entiendo lo que deseas hacer.
Entonces, sí que es posible.
Lo que deberías hacer sería obtener el espacio total ocupado del disco duro y establecerlo como valor bytesTotal.
Hecho esto, en la función en la que recorres cada archivo del disco duro deberás añadir una variable llamada, por ejemplo, bytesRead, en la que irás sumando el tamaño en bytes de cada archivo del disco (de manera que a medida que vayas recorriendo archivos el valor irá aumentado hasta que llegue a igualar el valor de la variable bytesTotal, lo cual significará que la operación ha terminado).
Aquí te muestro un ejemplo de como debería ser el código más o menos.
'Cuestiones a tener en cuenta: -----------------------------------------
'La barra de progreso (ProgressBar) la voy a llamar PB.
'----------------------------------------------------------------------------------
'Variables necesarias.
'La bytesRead la he marcado como comentario por la cuestión que comento en la función GetFiles, abajo.
'Dim bytesRead As Double (si la función es recursiva)
Dim bytesTotal As Double
'Función principal que recorre los archivos del disco
'(me he inventado el nombre y solo he escrito el código que deberías añadir)
Function GetFiles()
'Se añade la variable bytesRead comentada arriba
'AVISO: estoy teniendo en cuenta que el procedimiento que usas para obtener los archivos NO ES RECURSIVO, ya que si lo fuese, la variable tendría siempre únicamente el valor del tamaño del archivo actual en bytes si estuviese declarada dentro (se haría una copia, cada vez).
Si la función que usas es recursiva, declara la variable bytesRead como global, tal y como he hecho con la bytesTotal.
Dim bytesRead As Double 'Ten en cuenta la recursividad...
Dim fileSize As Double 'Contiene el tamaño en bytes del archivo actual
'.........................
'CÓDIGO....
'.........................
fileSize = [TAMAÑO_DEL_ARCHIVO_ACTUAL]
bytesRead = bytesRead + fileSize
PB.Value = Round(( bytesRead * PB.Max) / bytesTotal) 'Regla de tres para obtener el procentaje (digo porcentaje porque se supone que la propiedad Max del PB está en 100. De todos modos, podrías también establecer la propiedad Max con el número total de espacio ocupado del disco (bytesTotal) y, de esta manera, evitarías tener que realizar la regla de tres.
'Yo normalmente la hago con la regla de tres para mostrar en una Label el porcentaje de los progresos, además de usar la ProgressBar, tomando así tan solo la propiedad Value de la misma y añadiéndole un carácter %).
End Function
'Esta es la función que devuelve el tamaño ocupado de un disco duro en bytes, para poder rellenar la variable bytesTotal.
'Toma como parámetros la letra de la unidad y devuelve un Double con el número de bytes ocupado.
'Si ocurre algún error el valor devuelto es cero.
'Contrariamente, devuelve el número de bytes ocupados en el disco duro.
Public Function GetHDUsedSpace(ByVal strUnit As String) As Double
On Error GoTo ERROR_OC
'Variables pasadas por referencia a la API
Dim SecPClu As Long 'Sectores Por Cluster
Dim BytesPSec As Long 'Bytes Por Sector
Dim NumFreeClu As Long 'Número de Clusters Vacíos
Dim TotalNumClu As Long 'Número total de clusters
'Variables que contendrán valores finales
Dim freeSpace As Double
Dim totalSpace As Double
GetDiskFreeSpace strUnit, SecPClu, BytesPSec, NumFreeClu, TotalNumClu
totalSpace = (SecPClu * (BytesPSec / 1024) * TotalNumClu)
freeSpace = (SecPClu * (BytesPSec / 1024) * NumFreeClu)
GetHDUsedSpace = (totalSpace - freeSpace) * 1024 'Se devuelve el espacio usado en bytes
ERROR_OC:
End Function
'Con este código, ahora tan solo deberías añadir lo siguiente, antes de llamar a la función que realiza el recorrido de los archivos del HD.
bytesTotal = GetHDUsedSpace(LETRA_UNIDAD)
es decir, asignar a la variable bytesTotal el valor devuelto de la función GetHDUsedSpace al darle como parámetro la letra de la unidad seguida de :\ (es decir, el tamaño ocupado del disco).
_________________________________________
Bueno, espero que todo esta explicación (espero que no haya sido demasiado pesada) te sirva de mucho. Ah! Y también espero haberte entendido... ;-)
Si tienes problemas con el código o no entiendes algo del mismo, no dudes en comentármelo.
Hasta pronto,
Zoto