Crear un formulario de introducción o Splash en Excel vba quitando la barra de título

Los formularios de introducción o Splash son muy socorridos por las aplicaciones de escritorio para mostrar alguna introducción, recomendaciones o créditos acerca de la misma aplicación o sus creadores. En su mayoría, estas ventanas están programadas para que se cierren automáticamente cada x cantidad de segundos.

De hecho siempre que abrimos un programa de Office vemos una ventana donde nos muestra el proceso de apertura del programa. Como se muestra en la Figura 1.

image

Figura 1. Formulario Splash de Excel 2013.

Cómo creamos un formulario Splash Para Excel

Lo primero será diseñar nuestro formulario con la información que deseemos. Recordemos que la vista diseño mostrará los bordes y la barra de título del formulario, pero al ejecutarse éstas desaparecerán.

image

Figura 2. Formulario Splash en Excel en modo diseño.

En el evento Workbook_Open pondremos el código vba encargado de lanzar el formulario. Al abrirse el formulario veremos que no tendrá bordes y la barra de título no será visible.

También nos daremos cuenta que a los 5 segundos, el formulario de cerrará. Para esto utilizamos el método OnTime.

image

Figura 3. Formulario Splash en Excel que se cierra automáticamente a los 5 segundos.

Código vba

Ubicación: Hoja1.

Private Sub CommandButton1_Click()
'
'Abrimos el formulario
'
    frmSplash.Show vbModeless
End Sub

Ubicación: ThisWorkbook

Private Sub Workbook_Open()
'
'Al abrir el archivo
'
    frmSplash.Show vbModeless
    '
End Sub

Ubicación: frmSplash

Private Sub UserForm_Initialize()
'
'Al iniciar el formulario
'
    Call RemoveCaption(Me)
    '
    Application.OnTime Now + TimeValue("00:00:05"), "CerrarFormularioSplash"
    '
End Sub

Ubicación: Módulo1

Option Explicit
'
'validamos la versión de Office y llamamos API's
'
#If VBA7 And Win64 Then
    Declare PtrSafe Function FindWindow Lib "USER32" _
            Alias "FindWindowA" (ByVal lpClassName As String, _
                                 ByVal lpWindowName As String) As LongPtr
    '
    Declare PtrSafe Function GetWindowLongPtr Lib "USER32" _
            Alias "GetWindowLongPtrA" (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr
    '
    Declare PtrSafe Function SetWindowLongPtr Lib "USER32" _
            Alias "SetWindowLongPtrA" (ByVal hWnd As LongPtr, _
                                       ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
    '
    Declare PtrSafe Function DrawMenuBar Lib "USER32" (ByVal hWnd As LongPtr) As Long
    '
#Else
    Private Declare Function FindWindow Lib "USER32" _
                                        Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    '
    Private Declare Function GetWindowLong Lib "USER32" _
                                           Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    '
    Private Declare Function SetWindowLong Lib "USER32" _
                                           Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    '
    Private Declare Function DrawMenuBar Lib "USER32" (ByVal hWnd As Long) As Long
    '
#End If
'
Sub RemoveCaption(objForm As Object)
'
'Usamos esta procedimiento para ocultar la barra de título
'
    #If VBA7 Then
        Dim hMenu As LongPtr
        Dim mhWndForm As LongPtr
        Dim lStyle As LongPtr
    #Else
        Dim hMenu As Long
        Dim mhWndForm As Long
        Dim lStyle As Long
    #End If
    '
    If Val(Application.Version) < 9 Then
        mhWndForm = FindWindow("ThunderXFrame", objForm.Caption)
    Else
        mhWndForm = FindWindow("ThunderDFrame", objForm.Caption)
    End If
    '
    #If VBA7 And Win64 Then
        '
        lStyle = GetWindowLongPtr(mhWndForm, -16)
        lStyle = lStyle And Not &HC00000
        SetWindowLongPtr mhWndForm, -16, lStyle
        DrawMenuBar mhWndForm
        '
    #Else
        lStyle = GetWindowLong(mhWndForm, -16)
        lStyle = lStyle And Not &HC00000
        SetWindowLong mhWndForm, -16, lStyle
        DrawMenuBar mhWndForm
        '
    #End If
    '
End Sub
'
Sub ShowForm()
'
'Mandamos llamar al Formulario
'
    SplashForm.Show vbModeless
    '
End Sub
'
Private Sub CerrarFormularioSplash()
'
'Cerramos el formulario
'
    Unload frmSplash
    '
End Sub

Anexos

:: Descarga Formulario Splash en Excel.rar

You may also like...