CreateObject("Outlook.Application") |
Responder
|
| Autor | |
rocjfl-b
Colaborador
Unido: 19/Abril/2006 Localización: España Estado: Sin conexión Puntos: 669 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Tema: CreateObject("Outlook.Application")Enviado: 22/Marzo/2024 a las 20:45 |
|
Hola a todos. Cuando establezco una variable de objeto para el objeto Application de Outlook: Set objOL = CreateObject("Outlook.Application")Outlook se "...cuelga..." teniendo que utilizar el Administrador de Tareas para "...descolgarlo...". El mensaje de windows 10, en la barra de tareas, donde aparece el icono de Outlook que indica que esta "...colgado..." es: ...Otro programa está usando outlook. Para deconectar los programas y salir de Outlook, haga clic en el icono de Outlook...." Esto no se cumple, ya que la única manera de desbloquear Outlook es con el Administrador de Tareas. Desbloqueado Outlook con el Administrador de Tareas, Visual da el siguiente error: ... "Se ha producido el error '-2147352567 (80020009)'" ... Parece ser que es un Error de automatización. La automaticación de Outlook mediante Visual Basic se interrumpe. Curiosamente, esto solo pasa con algunas máquinas ( las más antiguas de la red ). Toda la red trabaja con windows 10 y con microsoft 365 en todos los clientes y comprobé que la versión de Visual Basic y Access 365 es la misma en todas las máquinas. Podeis,por favor, ayudarme con esto ?... Gracias
Editado por rocjfl-b - 22/Marzo/2024 a las 21:11 |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 22/Marzo/2024 a las 21:46 |
|
Yo lo hago así ... y no se me cuelga.
Puedo tener la librería referenciada y lo dimensiono así: Dim oOutlook As Outlook.Application o sin referenciar: Dim oOutlook As Object 'Outlook.Application Set oOutlook = CreateObject("Outlook.Application") |
|
![]() |
|
rocjfl-b
Colaborador
Unido: 19/Abril/2006 Localización: España Estado: Sin conexión Puntos: 669 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 23/Marzo/2024 a las 09:16 |
|
Hola Mihura, gracias por contestar!
Yo trato de utilizarla "sin referenciar", pero como expliqué, no en todas las máquinas se "cuelga" Outlook; en algunas funciona sin problema. Tengo la impresión que es algo relacionado con el sistema operativo, pero solo es una intuición. |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 23/Marzo/2024 a las 09:39 |
|
A mí me da que es problema de versiones superpuestas ...
|
|
![]() |
|
rocjfl-b
Colaborador
Unido: 19/Abril/2006 Localización: España Estado: Sin conexión Puntos: 669 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 23/Marzo/2024 a las 10:24 |
|
Versiones superpuestas de Outlook ... ??.
Hay 2 versiones: La Clásica y el Nuevo Outlook que opcionalmente puedes utilizar. Se trabaja en la red local con la versión clásica de Outllook. Editado por rocjfl-b - 23/Marzo/2024 a las 11:13 |
|
![]() |
|
joanka
Habitual
Unido: 07/Abril/2021 Localización: Lleida Estado: Sin conexión Puntos: 144 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 23/Marzo/2024 a las 20:04 |
|
Hola, En en outlook 365 no funcionan los códigos que funcionaban con anteriores versiones. - Crea un Módulo: Private Declare PtrSafe Function FindWindow Lib "user32" _ Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Function IsAppOpen(ClassName As String) As Boolean If FindWindow(ClassName, vbNullString) Then IsAppOpen = True End If End Function - Para enviar correo: Dim oOutlook As Object Dim oEmailItem As Object Dim strbody As String strbody = "Hola" On Error Resume Next Err.Clear If oOutlook Is Nothing Then Set oOutlook = GetObject(, "Outlook.Application") Set oOutlook = CreateObject("Outlook.Application") Set oEmailItem = oOutlook.CreateItem(olmailitem) End If If IsAppOpen("rctrl_renwnd32") Then With oEmailItem .Display .To = "correo@correo.com" '.CC = .Subject = "" End With DoCmd.Hourglass False Set oEmailItem = Nothing Set oOutlook = Nothing Else Shell "Outlook", vbNormalNoFocus With oEmailItem .Display .To = "correo@correo.com" '.CC = .Subject = "" End With DoCmd.Hourglass False Set oEmailItem = Nothing Set oOutlook = Nothing Set rs = Nothing Set miBD = Nothing End If |
|
![]() |
|
rocjfl-b
Colaborador
Unido: 19/Abril/2006 Localización: España Estado: Sin conexión Puntos: 669 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 23/Marzo/2024 a las 23:49 |
|
El código que estoy empleando es el siguiente: Sub EnviarCorreoConAdjunto() Dim Olk As Outlook.Application Set Olk = CreateObject("Outlook.Application") 'Creamos un nuevo mensaje de Outlook Dim OlkMsg As Outlook.MailItem Set OlkMsg = Olk.CreateItem(olMailItem) 'Creamos la información del mail With OlkMsg 'Definimos los elementos del mail Dim OlkDestinatario As Outlook.Recipient 'Destinatario Set OlkDestinatario = .Recipients.Add(ApCorreo) OlkDestinatario.Type = olTo .Subject = "Mayor contable" 'Asunto .HTMLBody = "<HTML> " & _ "<BODY>" & _ "<P>" & "<IMG SRC = 'C:\temp\BaseFirmasCorreo.png'>" & "</P>" & _ "</BODY> " & _ "</HTML>" .Attachments.Add ApArchivoAdjunto .Display End With 'Eliminamos la instancia Set Olk = Nothing Set OlkMsg = Nothing Set OlkDestinatario = Nothing End Sub La "sorpresa" que encontré es que si ejecuto la esta rutina cuando Outlook está cargado, todo va bién. El "cuelgue" de Outlook se produce cuando se ejecuta la rutina y Outlook está cerrado. |
|
![]() |
|
joanka
Habitual
Unido: 07/Abril/2021 Localización: Lleida Estado: Sin conexión Puntos: 144 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 24/Marzo/2024 a las 10:12 |
Adapta tu código al que te he indicado, el código primero verifica si
outlook está abierto, si está abierto prepara el mensaje, si no, abre
outlook y prepara el mensaje. Has de dimensionar las variables como Object y Dim oOutlook As Object Dim oEmailItem As Object Dim strbody As String If oOutlook Is Nothing Then Set oOutlook = GetObject(, "Outlook.Application") Set oOutlook = CreateObject("Outlook.Application") Set oEmailItem = oOutlook.CreateItem(olMailItem) Si pruebas ese código en un formulario aparte, verás que ya no tienes ese problema.
|
|
![]() |
|
rocjfl-b
Colaborador
Unido: 19/Abril/2006 Localización: España Estado: Sin conexión Puntos: 669 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 25/Marzo/2024 a las 07:05 |
|
joanka, eso hice. Si outlook está cerrado, lo abro y mando el mensaje. Si outlook está abierto, mando el mensaje.
Muchas gracias. Se puede cerrar el hilo.
|
|
![]() |
|
Responder
|
|
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |