Outlook en primer plano

Flomen -  
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   -
Hola,

Mi problema:

A través de un botón en Access, preparo un correo que envío .display o .send en VBA.
Todo funciona correctamente.

Sin embargo, Outlook se abre en segundo plano, ¡la aplicación Access permanece en primer plano! Me gustaría que Outlook pasara a primer plano después de enviar el comando .display o .send

¿Tienes la solución?

Gracias

Configuración: Android / Chrome 81.0.4044.96

18 respuestas

yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   Ambassadeur 1 588
 
Hola, nos permitirás ayudarte mejor mostrándonos tu código.
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
¿Podría ser que tu código VBA haga que Access vuelva al primer plano?
0
flomen
 
Bonjour,
Aquí está mi código que funciona muy bien, sin embargo, no logro poner Outlook en primer plano.

Gracias por tu ayuda

Mi código:

Function EnvViaOutlook(DestMail As String, CCMail As String, SujetMail As String, TxtMail As String, Signature As String, Optional PJ1 As String) As String
Dim OL As Outlook.Application, mi As Outlook.MailItem
On Error GoTo OLMailErr
Set OL = New Outlook.Application
Set mi = OL.CreateItem(olMailItem)
With mi
.To = DestMail
.CC = CCMail
.Subject = SujetMail
.Body = TxtMail
.HTMLBody = "Test <b>Signature<\b>" & "<br>" & .HTMLBody
.Display
End With
Set mi = Nothing: Set OL = Nothing
Exit Function
OLMailErr:
MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
Exit Function
End Function
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
¿Cómo utilizas esta función? Quizás sea después de haberla llamado que Access hace algo y regresa al primer plano.
0
flomen
 
Hola,
En una función, llamo a esta función para crear un correo y luego mostrarlo (.Display) para que el usuario pueda adaptarlo.
Puedes probar con el código que he adjuntado.
Gracias
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31
 
Hola,

puedes probar este código directamente en un evento de un botón, para ver...

 Private Sub botonTest_Click() Dim OL As Outlook.Application, mi As Outlook.MailItem On Error GoTo OLMailErr Set OL = New Outlook.Application Set mi = OL.CreateItem(olMailItem) With mi .To = DestMail .CC = CCMail .Subject = SujetMail .Body = TxtMail .HTMLBody = "Test <b>Firma<\b>" & "<br>" & .HTMLBody .Display End With Set mi = Nothing: Set OL = Nothing Exit Sub OLMailErr: MsgBox "Error : " & Err.Number & vbCrLf & Err.Description Exit Sub End Sub 
0
flomen
 
Hola,
Tu solución no cambia nada, es exactamente el mismo código con Function reemplazado por SUB
Si tienes Access, puedes darte cuenta probando este código, solo falta el comando para poner Outlook en primer plano
Gracias
0
f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención   1 717
 
Hola a todos,

He estado siguiendo esta solicitud desde el principio y como otros se ocupaban de ello, he dejado de lado momentáneamente.
flomen:
He probado tu código en Access y no hay problema, Outlook está bien en primer plano con .display. Lo cual es normal. Hago esto con frecuencia, principalmente con Excel para probar el contenido de los correos a enviar, pero eso no cambia nada en el asunto.
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
Creo que no tiene sentido poner Outlook en primer plano, porque ya está en primer plano en el momento del .display. Access vuelve a primer plano después, tal vez debido a una acción hecha en la función que lo llama.
¿Puedes compartir tu archivo?
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
¿Has probado la sugerencia de RV71 (a través de un simple botón)?
0
flomen
 
Hola,
¿Qué quieres decir con Un simple botón?
Estoy probando con un botón en el que he puesto la ejecución del código en el evento clic
Mira el código y dime qué hay que modificar o si tienes otro código para mostrar un correo antes de enviarlo
Gracias
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
¿Puedes compartir tu archivo?
0
flomen
 
Hola,
No entiendo tu solicitud: ¿Puedes compartir tu archivo?
¿De qué archivo se trata?
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31
 
¿Has intentado poner el código en un botón?

Porque yo lo hice (sin pasar por una función) y funciona.

Como dice yg_be, comparte tu base de datos (quitando los datos estrictamente confidenciales), utilizando por ejemplo https://fr.fromsmash.com/

¡Hasta luego!
0
flomen
 
Hola,
No funciona "SUB" y "FUNCTION"
Tengo una mini base de 692 K, ¿cómo puedo compartirla con ustedes?
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31
 
Como se mencionó justo arriba (lee): https://fr.fromsmash.com/ o dado el pequeño tamaño https://www.cjoint.com/

A+
0
flomen
 
Acabo de compartir la base Access, aquí está el enlace https://www.cjoint.com/c/JDup5xiHoxP

Gracias por su ayuda.
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
He probado con tu archivo, y el mensaje aparece en primer plano.
He probado con Outlook abierto ya, o no: mismo comportamiento.
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31
 
Había muchas referencias marcadas, las he quitado y parece que está bien.

https://www.cjoint.com/c/JDuqHu51InU

¡A+!
0
flomen
 
¡Gracias por tu ayuda,
Acabo de intentar con la base que corregiste (3 referencias), pero desafortunadamente sigue sin funcionar.
Para información, estoy usando Office 2013 y Windows 10.

¡De nuevo gracias, quizás tengas otra solución!
0
flomen
 
Tengo otra pregunta, con este método puedo crear un correo y enviarlo, sin embargo, me gustaría insertar la firma tal como está definida en Outlook, no he encontrado la solución
Gracias
0
f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención   1 717 > flomen
 
0
flomen > f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención  
 
Gracias, funciona perfectamente, pude integrar un logo (jpg) en la firma con código html.
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31
 
Hola,

sinceramente estoy perdido, ya que funciona en mi máquina (win7 + office 2013 32 bits).

¿Puedes probar la base en otra máquina?

¡Hasta luego!
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31
 
He probado abriendo Outlook antes, también funciona, quizás por eso funcionará en tu caso.
Sin embargo, es un desastre, porque en caso de que cambie la versión de Outlook, habrá que modificar el VBA...

Mira el archivo modificado aquí --> https://www.cjoint.com/c/JDvmTYg3xgU
0
flomen
 
Efectivamente, con este método funciona, si el usuario envía varios correos, con este método, cada vez abrimos una nueva sesión de Outlook, ¡así que muchas sesiones abiertas!
Gracias por todo el tiempo.
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31 > flomen
 
¿Cómo es eso?

Si cierra Outlook, la sesión se cierra, ¿no?

¡Hasta luego!
0
flomen > RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención  
 
Cuando digo varias sesiones, me refiero a todas las sesiones abiertas en cada envío de correo, ¿tal vez podríamos cerrar la sesión de Outlook que tenemos abierta? El hecho de enviar el correo cierra la ventana del correo, pero no Outlook.
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31
 
Dado que la ventana de Outlook está delante de la de Access, el usuario tendrá que cerrarla para volver a Access, a menos que decida minimizarla, pero este no es el comportamiento habitual.

De lo contrario, sí, se puede cerrar el proceso de Outlook (si existe) antes de iniciar la creación del correo...
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31
 
Pero eso no explica por qué no funciona sin el shell...

¿Tienes Outlook definido como programa predeterminado?

A+
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
en mi casa, Outlook no está definido como programa predeterminado para correos electrónicos, y todo funciona bien con el archivo de inicio de flomen.
0
flomen
 
¿Tienes el código para cerrar Outlook, lo que me permitiría usar tu método: Abrir Outlook con el código que me diste, enviar el correo y, para terminar, cerrar Outlook para evitar tener sesiones acumuladas?
0
flomen > yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención  
 
No, no estaba definido por defecto, lo definí por defecto pero ¡no cambia nada!
Hice una prueba en un segundo ordenador, ¡mismo problema! ¡Outlook siempre se oculta!
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31 > flomen
 
No se puede saber en Access lo que el usuario ha hecho en Outlook, por lo que no se puede determinar cuándo cerrarlo.
Access ya no tiene control cuando el usuario está escribiendo su mensaje en Outlook.
Hay que:
1/ verificar si Outlook está abierto
2/ si está abierto, cerrarlo
3/ relanzar Outlook con el código

Pero sigo convencido de que el 99% de los usuarios cierran Outlook para volver a Access...
0
Flomen > RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención  
 
Hola,
Sigo buscando una solución,
no soy el único que tiene el problema, ver:

https://www.commentcamarche.net/foro/affich-34949745-forcer-la-fenetre-d-envoi-outlook-en-premier-plan-access-2013-16

He hecho la prueba en otro ordenador después de reinstalar Windows 10 y Office 2013, ¡sigue el problema!
Donde tengo dudas es en Windows 10 porque tú me dices que funciona, la diferencia es que tú estás en Windows 7.
Voy a ver si puedo reinstalar un Windows 7.
Gracias
0
RV71 Mensajes publicados 620 Fecha de registro   Estado Miembro Última intervención   31
 
Bueno,

aquí está el código que hay que poner en el botón:

Private Sub Go_Click() '--- Cerramos el Proceso Outlook --- Dim ovc As Object Dim sQuery As String Dim oproc Set ovc = GetObject("winmgmts:root\cimv2") sQuery = "select * from win32_process where name='" & "Outlook.EXE" & "'" For Each oproc In ovc.execquery(sQuery) oproc.Terminate Next Set ovc = Nothing ' relanzamos outlook Dim SessionOutlook Const Chemin As String = "C:\Program Files\Microsoft Office\office15\OUTLOOK.exe" ' ---> adapta esta ruta si es necesario SessionOutlook = Shell(Chemin, 1) Dim MonOutlook As Outlook.Application Dim MonMessage As Outlook.MailItem On Error GoTo Err_envoyerMail ' ===== Inicialización ===== Set MonOutlook = CreateObject("Outlook.Application") Set MonMessage = MonOutlook.CreateItem(0) ' ===== Creación del email ===== With MonMessage .To = "menon.florent@gmail.com" .Subject = "Asunto de este correo" .Body = "Aquí el contenido del correo a enviar" ' Muestra el correo (comentar la línea para enviar el correo en segundo plano) .Display ' Envía el correo automáticamente (descomentar la línea para enviar el correo en segundo plano) '.Send End With Exit_envoyerMail: Set MonOutlook = Nothing Exit Sub Err_envoyerMail: Select Case Err.Number Case Else MsgBox "Error n°" & Err.Number & vbCrLf & "Descripción : " & Err.Description & vbCrLf & "Fuente : " & Err.Source, vbCritical, "Error" End Select Resume Exit_envoyerMail End Sub
0