jueves, 28 de julio de 2016

VBA: Detectando la resolución de nuestra pantalla

Hoy veremos una forma de descubrir desde Excel cuál es la resolución de nuestra pantalla.
Para ello emplearemos la función API 'GetSystemMetrics'.

De igual modo con la función de VBA 'Shell' ejecutaremos el Panel de Control de Windows desde donde modificar esta resolución de pantalla


Insertamos el siguiente código dentro de un módulo estándar del explorador de proyectos del Editor de VB:

Option Explicit
'Llamamos a la función API 'GetSystemMetrics'
Private Declare Function GetSystemMetrics Lib "user32.dll" (ByVal nIndex As Long) As Long

'damos valor a las constantes de la función API
Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1
 
Sub MuestraResolucionPantalla()
     
Dim ancho  As Long, alto  As Long
Dim Mensaje As String
Dim Respuesta As VbMsgBoxResult
 
ancho = GetSystemMetrics(SM_CXSCREEN)
alto = GetSystemMetrics(SM_CYSCREEN)

Mensaje = "La resolución actual de pantalla es de " & ancho & " x " & alto & vbCrLf & _
        "Quieres cambiar la resolución de pantalla??"
    
Respuesta = MsgBox(Mensaje, vbYesNo, "Resolución de pantalla!")


If Respuesta = vbYes Then
    'si la respuesta es afirmativa lanzamos un proceso para modificar la resolución de pantalla
    'con la función Shell de VBA
    
    'la siguiente función abre el Panel de Control (de Windows) para poder modificar dicha resolución
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3")
End If
     
End Sub



Al ejecutarla veremos como con el MsgBox recuperamos nuestra resolución.. y si aceptamos (presionamos el botón de Sí) se abrirá: Panel de control\Todos los elementos de Panel de control\Pantalla\Resolución de pantalla

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.