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
Ambassadeur
1 588
Hola, nos permitirás ayudarte mejor mostrándonos tu código.
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?
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
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
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...
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
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.
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.
¿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!
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?
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+
A+
Había muchas referencias marcadas, las he quitado y parece que está bien.
https://www.cjoint.com/c/JDuqHu51InU
¡A+!
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!
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!
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
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...
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+
¿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...
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
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:
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