Weno q ya he encontrado una solución... Mediante una API.
En realidad es la que obtiene el espacio libre en una unidad, pero que devuelve un 0 si no hay ningún disco en esa unidad.
Os la pongo, por si a alguien le interesa.
Declaración API:
Public Declare Function GetDiskFreeSpace Lib "kernel32.dll" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long
Funcion:
Function ComprobarUnidad(LetraUnidad As String) As Long
Dim SectoresPorCluster As Long
Dim BytesPorSector As Long
Dim ClustersLibres As Long
Dim NumeroDeClusters As Long
Dim ValorRetorno As Long
ValorRetorno = GetDiskFreeSpace(LetraUnidad & ":\", SectoresPorCluster, BytesPorSector, ClustersLibres, NumeroDeClusters)
If ValorRetorno <> 0 Then
ComprobarUnidad = BytesPorSector * SectoresPorCluster * ClustersLibres
Else
ComprobarUnidad = 0
End If
End Function
Para probarlo podeis crearos un botón y en el evento del click, pegais este código:
Private Sub Command1_Click()
Dim ret As Long
ret = ComprobarUnidad("A")
If ret = 0 Then MsgBox "No hay disco" Else MsgBox "El disco tiene " & ret & " KBytes libres"
End Sub
Espero q os sirva, como a mi.
Salu2