Translate

viernes, 26 de octubre de 2012

Inventario de Softwares para Indecopi


Hace un par de semanas llego a la oficina una notificación de INDECOPI otorgando un plazo de 10 dias hábiles para presentar un inventario de Software de la empresa.

El inventario debia de efectuarse por cada computadora y luego resumirse en una hoja de cálculo.

Ustedes diran...bueno se lo encargo al departamento de Sistemas o se lo encargo a un externo.

Resulta que en algunas empresas no existe departamento de sistemas local, es decir la empresa pertenece a una Corporación la cual tiene un departamento IT en el extranjero: Los famosos HelpDesk.

Entonces, el tema no resultaba tan sencillo como parece, al menos NO para mi. La fecha se acercaba.

Hasta que recorde que Windows lista los programas instalados desde Panel de Control / Agregar o Quitar Programas.

Excelente! Seguro desde el Editor de Visual Basic para Aplicaciones de MS Excel se puede replicar la programacion y volcar los datos hacia una hoja de cálculo.


En la web obtuve la programación. Edite las sentencies a fin de que los programas se listen en MS Excel, luego envie el file por correo y pude presentar el inventario de las 30 computadoras de la empresa a tiempo...Aqui les dejo la macro:

Sub Obtener_Software()
    Cells.Clear
    Dim Listado As String
    Dim objWMIService As Object
    Dim objsoftware As Object
    Dim colSoftware As Object
    Dim i As Long
    On Error GoTo Error_sub
        ' si no se pasa el parámetro hace referencia a esta máquina        If computer_name = "" Then computer_name = "."
        Set objWMIService = GetObject("winmgmts:" & _
            "{impersonationLevel=impersonate}!\\" & _
            computer_name & _
            "\root\cimv2")
        ' ejecuta el comando SQL        Set colSoftware = objWMIService.ExecQuery _
                         ("SELECT * FROM Win32_Product")
        If colSoftware.Count > 0 Then            Dim item0, item1, item2, item3 As String            ' recorre la lista del Software            For Each objsoftware In colSoftware
                ' añade el nombre del software                On Error Resume Next                item0 = ChequearNULO(objsoftware.Caption)
                ' añade la versión                item1 = ChequearNULO(objsoftware.Version)
                ' añade la ruta de instalación                item2 = ChequearNULO(objsoftware.installlocation)
                ' añade el fabricante                item3 = ChequearNULO(objsoftware.Vendor)
                Range("A65536").End(xlUp).Offset(1, 0) = item0
                Range("A65536").End(xlUp).Offset(0, 1) = item1
                Range("A65536").End(xlUp).Offset(0, 2) = item2
                Range("A65536").End(xlUp).Offset(0, 3) = item3
                i = i + 1
            Next            Range("A1") = "SOFTWARE"
            Range("B1") = "VERSION"
            Range("C1") = "UBICACION"
            Range("D1") = "FABRICANTE"
            Range("A1:D1").Font.Bold = True            Cells.Columns.AutoFit
        Else
            MsgBox "No hay software instalado en esta computadora", vbInformation
        End If
        Set objWMIService = Nothing
    Exit Sub
    ' errorError_sub:
        MsgBox Err.Description, vbCritical
        On Error Resume Next        Set objWMIService = Nothing
End Sub
                                                                                                 

' Función quedevuelve un VbNullstring si es un valor nullFunction ChequearNULO(Valor As Variant) As String
    If IsNull(Valor) Then
       ChequearNULO = vbNullString
    Else
       ChequearNULO = Valor
    End If
End Function


PD.- Para quienes no sepan, este código se copia y se pega en Editor de VBA de MS Excel (ALT + F11 / Menú Insertar / Módulo / Pegar)

Para ejecutar: Desde MS Excel (ALT + F8 / Seleccionar la macro Obtener_Software / Ejecutar)

Saludos Cordiales,
CPC Abraham Ramírez V.

1 comentario:

  1. Buenos dia. al ejectura, me sale que esta mal escrita esta parte

    If colSoftware.Count > 0 Then Dim item0, item1, item2, item3 As String ' recorre la lista del Software For Each objsoftware In colSoftware

    Ayuda porfavor.

    ResponderEliminar