Hola, maestro Dante, muy buenas noches, espero que este de maravilla y gozando de perfecta salud acompañado de sus seres queridos.
Referente a mi pregunta, le comento que anduve investigando la forma y por fin lo conseguí, gracias al apoyo de Microsoft Windows y a estas API del sistema operativo MSDN, pude establecer mi propio form como mi splashscreen personalizado sin que aparezca el libro de excel.
Le comparto la macro, espero que le sea de utilidad.
'Para mostrar un UserForm sin barra de titulo necesitamos cuatro funciones API:
Const GWL_STYLE = -16
Const WS_CAPTION = &HC00000
#If VBA7 Then
Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#Else
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
Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If
Private Sub UserForm_Initialize()
'Este código realiza el procedimiento de ocultar la barra de título, haciendo uso de las API
Dim lngWindow As Long, lFrmHdl As Long
lFrmHdl = FindWindowA(vbNullString, Me.Caption)
lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
lngWindow = lngWindow And (Not WS_CAPTION)
Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)
Call DrawMenuBar(lFrmHdl)
'-----------------------------------------------------------------------------------------
'Cargamos el formulario y establecemos un timer para que se cierre automáticamente
Dim Contador, Maximo, Intervalo As Integer
Dim Inicio As Double
Dim X
Maximo = 300
Me.Show
For Contador = 1 To Maximo
Inicio = Timer
Do Until Timer - Inicio > Intervalo
X = DoEvents()
Loop
Me.lbl_Bar.Width = Contador
Me.lbl_Percent.Caption = "Cargando " & Format(Contador / Maximo, "Percent")
Next Contador
Frm_MenuPrincipal.Show
End
End Sub
Creé un aceso directo en el escritorio y desde ahí ejecuto mi apliación sin que se vea el excel y listo, funciona perfecto.
Nota: Trabajo con excel 2013 y funciona en plataformas de 32 y 64 bits.
Bueno, espero que le sirva, que pase un buena noche y hasta pronto.
Saludos cordiales.