Espacio libre del disco


Toda aplicación seriamente desarrollada, que requiera guardar datos en disco (cualquier tipo) deberá forzosamente determinar a priori de la grabación cuanto espacio en disco queda y si es suficiente para la información que se necesita almacenar. Aquí explicaremos como determinar cuanto espacio le resta libre a una determinada unidad de almacenamiento. 

Agregar en cualquier módulo del proyecto la siguiente línea: 

Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA"_
(ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector_
As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long 

Y en el lugar de la aplicación donde deseamos conocer el espacio (en este ejemplo lo hicimos en la carga de la ventana principal) agregar:

Private Sub Form_Load()
Dim I1 As Long
Dim I2 As Long
Dim I3 As Long
Dim I4 As Long
Dim Unidad As String
Unidad = "C:/"
GetDiskFreeSpace Unidad, I1, I2, I3, I4
Label1 = Unidad
Label2 = I1 & " Sectores por cluster"
Label3 = I2 & " Bytes por sector"
Label4 = I3 & " Número de clusters libres"
Label5 = I4 & " Número total de clusters"
Label6 = "Espacio total: " & (I1 * I2 * I4)
Label7 = "Espacio libre: " & (I1 * I2 * I3)
End Sub

En este ejemplo la información se coloca sobre 7 etiquetas llamadas Label1 a Label7, pero el usuario puede hacer con el dato resultante lo que le plazca. Para indicar sobre que unidad de almacenamiento se desea trabajar basta con cambiar el C:/ de este ejemplo por la letra de la misma.