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:
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.
Buenos dia. al ejectura, me sale que esta mal escrita esta parte
ResponderEliminarIf colSoftware.Count > 0 Then Dim item0, item1, item2, item3 As String ' recorre la lista del Software For Each objsoftware In colSoftware
Ayuda porfavor.