** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Enviar informe access por mail
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoEnviar informe access por mail

 Responder Responder
Autor
Mensaje
Momoe Ver desplegable
Nuevo
Nuevo


Unido: 05/Diciembre/2012
Localización: España
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje Tema: Enviar informe access por mail
    Enviado: 09/Mayo/2019 a las 11:27
Buenos días a todos. Tengo un problemilla al enviar informe desde access por mail, he buscado y adaptado código de Neckkito y me funciona a veces, os explico.
Tengo una base de datos con una tabla de SQL vinculada desde donde cojo los campos codigo, nombre del cliente y email.
En el campo email puede haber un sólo email o varios separados por ; es en este último caso (cuando tengo varios mails) cuando no me funciona y me da el error:

          -2147467259: Outlook no reconoce alguno de los nombres.

El código que he utilizado de Neckkito y que he adaptado a mis necesidades es:
Private Sub EnviarPor_Mail_Click()
On Error GoTo sol_err
        'Definimos las variables
    Dim mailA As String
    Dim mailCC As String
    Dim mailCCO As String
    Dim elAsunto As String, elMsg As String
        'Cogemos los valores que hemos indicado en el formulario
    mailA = Me.EMA.Value
    mailCC = Nz("", "")
    mailCCO = Nz("", "")
    elAsunto = Nz("Revisión mes de:" & Me.Mes.Value, "")
    elMsg = Nz("Adjunto le enviamos informe de revisión de su servidor del mes: " & Me.Mes.Value, "")
        'Exportamos el informe en formato snapshot a la carpeta donde tenemos la BD
    Dim ruta As String, miInforme As String
    ruta = Application.CurrentProject.Path & "\"
    miInforme = ruta & "Revision_" & Me.CodCliente & "_" & Me.Mes & Me.Año & ".pdf"
    DoCmd.OpenReport "Revision", acPreview, "", "[Revision]![CodRevision] =[Forms]![Revision]![CodRevision]", acHidden
    DoCmd.OutputTo acOutputReport, "Revision", acFormatPDF, miInforme, False
    DoCmd.Close acReport, "Revision"
        'Creamos una instancia de Outlook
    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
        Dim OlkCopia As Outlook.Recipient
        Dim OlkOculto As Outlook.Recipient
        Dim OlkAdjunto As Outlook.Attachment
            'Inicializamos los elementos del mail
        Set OlkDestinatario = .Recipients.Add(mailA)
        OlkDestinatario.Type = olTo
            'Comprobamos que queremos copia
        If mailCC <> "" Then
            Set OlkCopia = .Recipients.Add(mailCC)
            OlkCopia.Type = olCC
        End If
            'Comprobamos que queremos oculto
        If mailCCO <> "" Then
            Set OlkOculto = .Recipients.Add(mailCCO)
            OlkOculto.Type = olBCC
        End If
            'Comprobamos que exista el archivo que vamos a adjuntar
        If Not IsMissing(miInforme) Then
            Set OlkAdjunto = .Attachments.Add(miInforme)
        End If
            'Añadimos los elementos Asunto y Mensaje
        .Subject = elAsunto
        .Body = elMsg
            'Enviamos el mail
        .Send
    End With
        'Lanzamos un mensaje de OK
    MsgBox "El mensaje se ha enviado correctamente", vbInformation, "CORRECTO"
        'Eliminamos el archivo Informe.snp de la carpeta
   ' Kill miInforme
        'Eliminamos la instancia
    Set Olk = Nothing
    Set OlkMsg = Nothing
    Set OlkDestinatario = Nothing
    Set OlkAdjunto = Nothing
Salida:
    Exit Sub
sol_err:
    MsgBox Err.Number & ": " & Err.Description
    Resume Salida
End Sub

He verificado en mensaje que las cuentas aparecen separadas por ; y sé que si en Outlook las pongo separadas por ; me envía en mail correctamente ¿puede alguien decirme en qué estoy fallando?. Muchas gracias

Eva
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10841
Enlace directo a este mensaje Enviado: 09/Mayo/2019 a las 12:15
Hola,

Yo las direcciones de correo las pondría de otra forma, sin utilizar las variables intermedias tipo "Recipient":

.To = "Correo@hotmail.com"                'correo destino
.CC = "OtroCorreo@Hotmail.com"         'con copia
.BCC = "OtroMas@Hotmail.com"           'copia oculta

Si hay que poner más de un correo se ponen separados por (;):

.To = "Correo@hotmail.com; juan@hotmail.com"





Editado por Mihura - 09/Mayo/2019 a las 13:47
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 1977
Enlace directo a este mensaje Enviado: 09/Mayo/2019 a las 13:01
Y de ese cliente que tiene varios emails quieres utilizar todos lo emails o solo 1??
Si son todos fijate que no haya espacios entre ellos en los puntos y coma, a ver si te viene por alli el fallo.....
Arriba
Momoe Ver desplegable
Nuevo
Nuevo


Unido: 05/Diciembre/2012
Localización: España
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje Enviado: 09/Mayo/2019 a las 13:54
No puedo ponerlas de esa forma porque a priori desconozco el mail de cada cliente y según tú me pones tendría que ponerlas por código no?.
Cada cliente tiene su propio mail en el campo EMA.

Gracias de todas formas
Eva
Arriba
Momoe Ver desplegable
Nuevo
Nuevo


Unido: 05/Diciembre/2012
Localización: España
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje Enviado: 09/Mayo/2019 a las 13:55
Si, si el cliente tiene varios me gustaría que se le enviara a cada uno de ellos. He comprobado que no haya espacios pero aún así me sale el error indicado en el mensaje original.

Gracias
Eva
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: ROC, NY
Estado: Sin conexión
Puntos: 3326
Enlace directo a este mensaje Enviado: 09/Mayo/2019 a las 14:59
Para inmediatamente despues de 

 mailA = Me.EMA.Value

Copia el valor de mailA, abre un correo de outlook y pega ese valor en To: (Para:)

Al salir del campo debería transformar todo a buzones de correo, mira si falla en algún caso.

Luis
Those are my principles, and if you don't like them... well, I have others. Groucho Marx
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10841
Enlace directo a este mensaje Enviado: 09/Mayo/2019 a las 14:59
.To = Me.EMA
.CC = Me.OtroEMA
.BCC = Me.OtroEMAmas
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Momoe Ver desplegable
Nuevo
Nuevo


Unido: 05/Diciembre/2012
Localización: España
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje Enviado: 09/Mayo/2019 a las 18:00
Muchas gracias Mihura. Me ha funcionado perfectamente. Podéis cerrar el hilo 
Eva
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable