Por ejemplo, tienes dos formularios, uno con el botón de imprimir y otro con la forma de mensaje.
En el formulario 'Mensaje' te creas una funcion para pasarle parametros y le añades un control Timer
Formulario de generacion de excel se llamarán frmGeneraInformeExcel
Option Explicit
Private msVble1 AS String
Private msConsulta1 AS String
Private msloQueNecesitesParaGenerarElInforme AS Long
Public msEditarPropiedades(vble1 AS String,consulta1 As String,loQueNecesitesParaGenerarElInforme AS Long)
'Asignar las vbles que le pasamos a vbles definidas a nivel de formulario
msVble1 = Vble1
msConsulta1 = Consulta1
msloQueNecesitesParaGenerarElInforme = loQueNecesitesParaGenerarElInforme
Timer1.Enabled = true
Me.Show vbModal
End Sub
Private Sub Timer1_Timer()
Timer1.Enabled = false
msGenerarInforme
'Cuando he terminado de generar el informe, cierro el formulario
Unload me
End Sub
Private Sub msGenerarInforme()
'Todo el codigo para generar la hoja excel
' Al final ponemos Excel Visible
End Sub
Desde el formulario que tienes el botón imprimir:
Private Sub Command1_Click() 'Boton Imprimir
frmGeneraInformeExcel.msEditarPropiedades vble1,consulta1,loQueNecesitesParaGenerarElInforme
End Sub
Si no lo entiendes te mando un ejemplo con un proyecto VB6. Espero que te sirva de ayuda.
Saludos,
Érika.