Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/05/2008, 05:08
Foxi
 
Fecha de Ingreso: marzo-2008
Mensajes: 35
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Macro de Excel y Consulta WMI

¿Espacio en disco? ¿Utilizado, Libre o Total?
Te doy una idea para obtener el espacio libre en disco a partir de un directorio: Añade esta función en el código VB del proyecto de Excel:

(Comprueba que añades la referencia "Microsoft Scripting Runtime")

Código:

'********************************************************************************
'Nombre: lObtenerEspacioLibreUnidad
'Descripción: Obtiene el espacio libre de la unidad correspondiente al directorio
'              recibido como parámetro en Kbytes:
'               Si no existe devuelve -2.
'               Si se produce algún error devuelve -3.
'Referencias utilizadas: "Microsoft Scripting Runtime".
'Fecha: 09/06/2005
'********************************************************************************
Function lObtenerEspacioLibreUnidad(v_sDirectorio As String) As Long
Dim fso As New FileSystemObject
Dim fldrCarpeta As Folder
Dim TamanoEnBytes
    
    On Error GoTo Error_Espacio_Libre
    
    ' Si el texto del directorio no temina con "\", lo añado:
    If (Right(v_sDirectorio, 1) <> "\") Then
        v_sDirectorio = v_sDirectorio + "\"
    End If
    
    ' Se comprueba que el directorio exista.
    If (Dir(v_sDirectorio) = "") Then
        lObtenerEspacioLibreUnidad = -2
    Else
        
        Set fldrCarpeta = fso.GetFolder(v_sDirectorio)
        
        ' Se obtiene el espacio libre en bytes.
        TamanoEnBytes = fldrCarpeta.Drive.FreeSpace
        
        ' Se devuelve el tamaño en Kbytes.
        lObtenerEspacioLibreUnidad = CLng(TamanoEnBytes / 1024)
        
    End If
    
    Exit Function
    
Error_Espacio_Libre:
    lObtenerEspacioLibreUnidad = -3
End Function
Y lo llamas con un procedimiento (que a su vez podrás verlo en las macros de Excel) como éste:

Código:
Sub Espacio_Libre()
    ActiveCell.FormulaR1C1 = CStr(lObtenerEspacioLibreUnidad("C:\"))
End Sub
Cambia de este procedimiento lo que te haga falta (como la dirección de un directorio existente en una máquina remota, o la selección de una celda concreta antes de actualizar el valor devuelto...).

A ver si te vale: saludos, Foxi.