Outlook en primer plano
Flomen
-
RV71 Mensajes publicados 620 Fecha de registro Estado Miembro Última intervención -
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
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 Embajador 1 588
Hola, nos permitirás ayudarte mejor mostrándonos tu código. -
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 -
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 -
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
-
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-
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. -
-
-
-
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 -
-
¿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! -
Hola,
No funciona "SUB" y "FUNCTION"
Tengo una mini base de 692 K, ¿cómo puedo compartirla con ustedes? -
Como se mencionó justo arriba (lee): https://fr.fromsmash.com/ o dado el pequeño tamaño https://www.cjoint.com/
A+ -
Acabo de compartir la base Access, aquí está el enlace https://www.cjoint.com/c/JDup5xiHoxP
Gracias por su ayuda. -
Había muchas referencias marcadas, las he quitado y parece que está bien.
https://www.cjoint.com/c/JDuqHu51InU
¡A+! -
¡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! -
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! -
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 -
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... -
Pero eso no explica por qué no funciona sin el shell...
¿Tienes Outlook definido como programa predeterminado?
A+-
-
-
-
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... -
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
-
-
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