Saltar al contenido

ERROR CON FORMULARIO VENTANA MODAL

publicado

Hola a todos,

Este formulario no ejecuta el código... Hay algo que me da errores!!

Agradezco cualquier aporte. Muchas gracias.

PRUEBAS.xlsm

Featured Replies

publicado

Buenas, a mi me lo abre bien,

por un momento me asuste al ver en la macro  las palabras , Sistema y Win32

saludos

 

publicado
  • Autor

Listo! Ya lo solucioné, era muy tarde cuando me puse con ello. Así que era normal que cometiera errores.

Paso por aquí el código, por si a alguien le interesa:

 

' @class: FormularioDelSistema.frx / FormularioDelSistema.frm
' @description: Conjunto de eventos del formulario del sistema.

' Declaramos las instrucciones del módulo...
Option Explicit

' Declaramos las constantes privadas de ámbito global...
Const HOJA_NOMBRE As String = "SISTEMAS"
Const HOJA_CONTRASEÑA As String = "hojaSistemas"
Private Sub UserForm_Initialize()

   ' Limpiamos los errores anteriores...
   Err.Clear

   ' Tratamos los errores...
   On Error Resume Next

   ' Emitimos un sonido de alerta...
   Beep

   ' Adjuntamos la lista completa de opciones...
   With FormularioDelSistema.tbSistema
      .AddItem "Win32_BaseService"
      .AddItem "Win32_LogicalDisk"
      .AddItem "Win32_NetworkAdapterConfiguration"
      .AddItem "Win32_OnBoardDevice"
      .AddItem "Win32_OperatingSystem"
      .AddItem "Win32_PhysicalMemoryArray"
      .AddItem "Win32_Printer"
      .AddItem "Win32_Processor"
      .AddItem "Win32_Product"
      .AddItem "Win32_VideoController"
   End With

End Sub
Private Sub cbAceptar_Click()

Application.ScreenUpdating = False
Application.StatusBar = "Procedimiento en ejecución..."

   ' Limpiamos los errores anteriores...
   Err.Clear

   ' Tratamos los errores...
   On Error Resume Next

   ' Declaramos las variables de ámbito local...
   Dim oWMISrvEx As Object    ' SWbemServicesEx
   Dim oWMIObjSet As Object   ' SWbemServicesObjectSet
   Dim oWMIObjEx As Object    ' SWbemObjectEx
   Dim oWMIProp As Object     ' SWbemProperty
   Dim sWQL As String         ' WQL Statement
   Dim n As Long
   Dim strRow As String
   Dim intRow As Integer
   Dim sistema As String
   sistema = tbSistema.Value
   Dim deseaContinuar As Byte
   deseaContinuar = vbNo

   ' Desprotegemos la hoja...
   ThisWorkbook.Sheets(HOJA_NOMBRE).Unprotect Password:=HOJA_CONTRASEÑA

   ' Asignamos los valores para las opciones de la lista...
   Select Case tbSistema.Value
      Case "Win32_BaseService"
         ' Asignamos el valor de la variable...
         sistema = "Win32_BaseService"
         ' Ocultamos el formulario...
         FormularioDelSistema.Hide
         ' Notificamos al usuario con un mensaje de información...
         deseaContinuar = MsgBox(Prompt:="La opción seleccionada 'Win32_BaseService' se encarga de mostrar información sobre los servicios que ejecutan y detienen el equipo informático. " & _
                                         "Por favor, ¿está seguro de que desea continuar?", _
                                 Buttons:=vbInformation + vbYesNo, _
                                 Title:="POR FAVOR, SELECCIONE UNA OPCION...")
      Case "Win32_LogicalDisk"
         ' Asignamos el valor de la variable...
         sistema = "Win32_LogicalDisk"
         ' Ocultamos el formulario...
         FormularioDelSistema.Hide
         ' Notificamos al usuario con un mensaje de información...
         deseaContinuar = MsgBox(Prompt:="La opción seleccionada 'Win32_LogicalDisk' se encarga de mostrar información sobre las capacidades de los discos y espacio libre en el equipo informático. " & _
                                         "Por favor, ¿está seguro de que desea continuar?", _
                                 Buttons:=vbInformation + vbYesNo, _
                                 Title:="POR FAVOR, SELECCIONE UNA OPCION...")
      Case "Win32_NetworkAdapterConfiguration"
         ' Asignamos el valor de la variable...
         sistema = "Win32_NetworkAdapterConfiguration"
         ' Ocultamos el formulario...
         FormularioDelSistema.Hide
         ' Notificamos al usuario con un mensaje de información...
         deseaContinuar = MsgBox(Prompt:="La opción seleccionada 'WWin32_NetworkAdapterConfiguration' se encarga de mostrar información sobre la configuración de red del equipo informático. " & _
                                         "Por favor, ¿está seguro de que desea continuar?", _
                                 Buttons:=vbInformation + vbYesNo, _
                                 Title:="POR FAVOR, SELECCIONE UNA OPCION...")
      Case "Win32_OnBoardDevice"
         ' Asignamos el valor de la variable...
         sistema = "Win32_OnBoardDevice"
         ' Ocultamos el formulario...
         FormularioDelSistema.Hide
         ' Notificamos al usuario con un mensaje de información...
         deseaContinuar = MsgBox(Prompt:="La opción seleccionada 'Win32_OnBoardDevice' se encarga de mostrar información sobre el número de dispositivos de la placa base del equipo informático. " & _
                                         "Por favor, ¿está seguro de que desea continuar?", _
                                 Buttons:=vbInformation + vbYesNo, _
                                 Title:="POR FAVOR, SELECCIONE UNA OPCION...")
      Case "Win32_OperatingSystem"
         ' Asignamos el valor de la variable...
         sistema = "Win32_OperatingSystem"
         ' Ocultamos el formulario...
         FormularioDelSistema.Hide
         ' Notificamos al usuario con un mensaje de información...
         deseaContinuar = MsgBox(Prompt:="La opción seleccionada 'Win32_OperatingSystem' se encarga de mostrar información sobre la versión del sistema operativo con el número de serie del equipo informático. " & _
                                         "Por favor, ¿está seguro de que desea continuar?", _
                                 Buttons:=vbInformation + vbYesNo, _
                                 Title:="POR FAVOR, SELECCIONE UNA OPCION...")
      Case "Win32_PhysicalMemoryArray"
         ' Asignamos el valor de la variable...
         sistema = "Win32_PhysicalMemoryArray"
         ' Ocultamos el formulario...
         FormularioDelSistema.Hide
         ' Notificamos al usuario con un mensaje de información...
         deseaContinuar = MsgBox(Prompt:="La opción seleccionada 'Win32_PhysicalMemoryArray' se encarga de mostrar información sobre la memoria RAM y el tamaño de la memoria instalada en el equipo informático. " & _
                                         "Por favor, ¿está seguro de que desea continuar?", _
                                 Buttons:=vbInformation + vbYesNo, _
                                 Title:="POR FAVOR, SELECCIONE UNA OPCION...")
      Case "Win32_Printer"
         ' Asignamos el valor de la variable...
         sistema = "Win32_Printer"
         ' Ocultamos el formulario...
         FormularioDelSistema.Hide
         ' Notificamos al usuario con un mensaje de información...
         deseaContinuar = MsgBox(Prompt:="La opción seleccionada 'Win32_Printer' se encarga de mostrar información sobre las impresoras instaladas en el equipo informático. " & _
                                         "Por favor, ¿está seguro de que desea continuar?", _
                                 Buttons:=vbInformation + vbYesNo, _
                                 Title:="POR FAVOR, SELECCIONE UNA OPCION...")
      Case "Win32_Processor"
         ' Asignamos el valor de la variable...
         sistema = "Win32_Processor"
         ' Ocultamos el formulario...
         FormularioDelSistema.Hide
         ' Notificamos al usuario con un mensaje de información...
         deseaContinuar = MsgBox(Prompt:="La opción seleccionada 'Win32_Processor' se encarga de mostrar información sobre las especificaciones de la CPU del equipo informático. " & _
                                         "Por favor, ¿está seguro de que desea continuar?", _
                                 Buttons:=vbInformation + vbYesNo, _
                                 Title:="POR FAVOR, SELECCIONE UNA OPCION...")
      Case "Win32_Product"
         ' Asignamos el valor de la variable...
         sistema = "Win32_Product"
         ' Ocultamos el formulario...
         FormularioDelSistema.Hide
         ' Notificamos al usuario con un mensaje de información...
         deseaContinuar = MsgBox(Prompt:="La opción seleccionada 'Win32_Product' se encarga de mostrar información sobre el software instalado en el equipo informático. " & _
                                         "Por favor, ¿está seguro de que desea continuar?", _
                                 Buttons:=vbInformation + vbYesNo, _
                                 Title:="POR FAVOR, SELECCIONE UNA OPCION...")
      Case "Win32_VideoController"
         ' Asignamos el valor de la variable...
         sistema = "Win32_VideoController"
         ' Ocultamos el formulario...
         FormularioDelSistema.Hide
         ' Notificamos al usuario con un mensaje de información...
         deseaContinuar = MsgBox(Prompt:="La opción seleccionada 'Win32_VideoController' se encarga de mostrar información sobre la configuración del adaptador de gráficos en el equipo informático. " & _
                                         "Por favor, ¿está seguro de que desea continuar?", _
                                 Buttons:=vbInformation + vbYesNo, _
                                 Title:="POR FAVOR, SELECCIONE UNA OPCION...")
      ' En caso contrario...
      Case Else
   End Select

   ' Comprobamos que el cuadro combinado del sistema contiene los valores asignados...
   If tbSistema.Value = "Seleccione una opción..." Then
      ' Cerramos el formulario...
      FormularioDelSistema.Hide
      ' Notificamos al usuario con un mensaje de error...
      Call MENSAJES.ErrorOpcion
      ' Mostramos el formulario...
      FormularioDelSistema.Show
      ' Salimos del evento...
      Exit Sub
   ' En caso contrario...
   Else
      ' Si no desea continuar, entonces...
      If deseaContinuar = vbNo Then
         ' Mostramos el formulario...
         FormularioDelSistema.Show
         ' Salimos del evento...
         Exit Sub
      ' En caso contrario...
      Else
      End If
   End If

   ' Cerramos el formulario...
   Unload FormularioDelSistema

   ' Limpiamos las celdas de la hoja...
   ThisWorkbook.Sheets(HOJA_NOMBRE).Cells.Clear

   ' Ejecutamos el procedimiento...
   sWQL = "Select * From " & sistema
   Set oWMISrvEx = GetObject("winmgmts:root/CIMV2")
   Set oWMIObjSet = oWMISrvEx.ExecQuery(sWQL)
   intRow = 2
   strRow = Str(intRow)
   For Each oWMIObjEx In oWMIObjSet
      For Each oWMIProp In oWMIObjEx.Properties_
         If Not IsNull(oWMIProp.Value) Then
            If IsArray(oWMIProp.Value) = True Then
               For n = LBound(oWMIProp.Value) To UBound(oWMIProp.Value)
                  Debug.Print oWMIProp.Name & "(" & n & ")", oWMIProp.Value(n)
                  ThisWorkbook.Sheets(HOJA_NOMBRE).Range("A" & Trim(strRow)).Value = oWMIProp.Name & ":"
                  ThisWorkbook.Sheets(HOJA_NOMBRE).Range("B" & Trim(strRow)).Value = oWMIProp.Value(n)
                  intRow = intRow + 1
                  strRow = Str(intRow)
               Next
            ' En caso contrario...
            Else
               ThisWorkbook.Sheets(HOJA_NOMBRE).Range("A" & Trim(strRow)).Value = oWMIProp.Name & ":"
               ThisWorkbook.Sheets(HOJA_NOMBRE).Range("B" & Trim(strRow)).Value = oWMIProp.Value
               intRow = intRow + 1
               strRow = Str(intRow)
            End If
         End If
      Next
   Next

   ' Activamos la hoja...
   ThisWorkbook.Sheets(HOJA_NOMBRE).Select

   ' Grabamos el método...
   Call METODOS.EjecutarMetodo("LogicalNetworkWMI(" & tbSistema.Value & ")")

Application.StatusBar = "Procedimiento finalizado con éxito."
Call Application.Wait(Now + TimeValue("0:00:01"))
Application.StatusBar = False

End Sub
Private Sub cbSalir_Click()

   ' Limpiamos los errores anteriores...
   Err.Clear

   ' Tratamos los errores...
   On Error Resume Next

   ' Cerramos el formulario...
   Unload FormularioDelSistema

End Sub

 

Saludos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.