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.
Figura 1. Formulario Splash de Excel 2013.
Ver Video Cómo crear un Formulario tipo Splash
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
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.
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.
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