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

Enviar archivo en disco desde access VBA

 Responder Responder
Autor
Mensaje
Xantus Ver desplegable
Habitual
Habitual


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 57
Opciones de entrada Opciones de entrada   Gracias (1) Gracias(1)   Cita Xantus Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Enviar archivo en disco desde access VBA
    Enviado: 12/Octubre/2019 a las 17:22


Buenas tardes.

Hace unos meses estuve por aqui por un problema para poder enviar correos electrónicos desde vba (sin outlook), desde un formulario.

El tema al final quedó asi:


SELECT [RESUMEN DOC PENDIENTE].[NUMERO DE CONTRATO], [RESUMEN DOC PENDIENTE].OFICINA, [RESUMEN DOC PENDIENTE].[FECHA 1  RECLAMACION], [RESUMEN DOC PENDIENTE].CONTRATO, [RESUMEN DOC PENDIENTE].CCM, [RESUMEN DOC PENDIENTE].SEGURO, [RESUMEN DOC PENDIENTE].[GARANTIA RECOMPRA], [RESUMEN DOC PENDIENTE].[ENVIO RENT and TECH]
FROM [RESUMEN DOC PENDIENTE]
WHERE ((([RESUMEN DOC PENDIENTE].[FECHA 1  RECLAMACION]) Is Null));


Ahora el código Enviar_Email_Primera:

Private Sub Enviar_Email_Envioprimera(NUMERO_DE_CONTRATO, OFICINA, CONTRATO, FECHA_1_RECLAMACION, CCM, SEGURO, GARANTIA_RECOMPRA, ENVIO_RENT_and_TECH)

    On Error GoTo Err_CORREO_Click
    Dim dbs As Database, qdf As QueryDef, consulta As String
    Dim cuerpo As String, para As String, cc As String, asunto As String
    Dim comentario As String
    Dim CONTRATO As String
    Dim CCM As String, GARANTIA_RECOMPRA As String, SEGURO As String, _
        Anexo_1 As String, Anexo_2 As String, _
        Anexo_3 As String, Anexo_4 As String
 
    Anexo_1 = ""
    Anexo_2 = ""
    Anexo_3 = ""
    Anexo_4 = ""
 
    If CONTRATO Is False Then
        Anexo_1 = vbCr & vbCr + "DOCUMENTO 1"
    End If
 
    If CCM Is False Then
        Anexo_2 = vbCr & vbCr + "DOCUMENTO 2"
    End If
 
    If GARANTIA_RECOMPRA Is False Then
         Anexo_3 = vbCr & vbCr + "DOCUMENTO 3"
    End If
 
    If SEGURO Is False Then
        Anexo_4 = vbCr & vbCr + "DOCUMENTO 4"
    End If
    
    asunto = "ASUNTO DE CORREO"
    
    
    texto = "Buenos días," & vbCr & vbCr + _
            "Texto de Correo:" & _
            vbCr & vbCr + OFICINA & _
            Anexo_1 & Anexo_2 & Anexo_3 & Anexo_4 & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "<b>Texto de correo" & _
            vbCr & vbCr + vbCr & "Gracias, " & _
            vbCr & vbCr + vbCr & "Un saludo. " 'MsgBox texto
            
    
    If IsNull(Usuario) Then
        MsgBox "No existe Email de Usuario para la operación: NUMERO_DE_CONTRATO"
        GoTo Exit_CORREO_Click::
    End If
    
    Set miCorreo = CreateObject("CDO.Message")

    With miCorreo
        
          '.from = "mi correo" & "< >"
          
          .from = "mi correo" & "<mi correo>"
        '.from = "mi correo"
        '.To = "mi correo"
        .To = "mi correo"
        .Bcc = "mi correo"
        .replyto = "mi correo"
        
        .Subject = asunto
        .TextBody = texto
        .Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
        "smtpbbva"
        .Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Configuration.Fields.Update
        '.display
        .Send
    End With
    
    Set miCorreo = Nothing
    
    
Exit_CORREO_Click:
    Exit Sub

Err_CORREO_Click:
    MsgBox Err.Description
    Resume Exit_CORREO_Click
End Sub


Esto me funciona (y sigue funcionando perfectamente), pero ahora me ha surgido la necesidad de anexar un archivo pdf guardado en el disco duro para enviarlo junto al correo.

Es decir, que me envíe el mail tal como está en el código, anexando también el archivo (que siempre tendrá el mismo nombre y estará en la misma carpeta).
Es eso posible? Sin utilizar outlook?
Que código debería añadir?

Mil gracias de antemano.

Un saludo!
Xantus.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11144
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 12/Octubre/2019 a las 17:30
Para añadir adjuntos es:

ObjetoCDO.addAttachment ("file://" & RutaCompletaFichero)

tantos como necesites.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Xantus Ver desplegable
Habitual
Habitual


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 57
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Xantus Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Octubre/2019 a las 11:07
Perfecto, mil gracias.

Y si quisiera añadir una variable? me explico.
Cada fichero tiene el mismo nombre, pero variando en 4 digitos.

Ej:
Al8630b.pdf
Al8755b.pdf
etcetceetc

Podría añadirse la variable para que  para que al buscar el archivo diferencie? Algo como Al + "Num" + b.pdf ? Como en el código de arriba que diferencia oficina, pero con el nombre del fichero.

y que al mandar los correos vaya cogiendo el fichero correspondiente dependiendo del número que tenga.

Voy a probar, pero si alguien sabe a ciencia cierta que se puede se lo agradecería si me facilita como modificarlo.

Gracias!!!!

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11144
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Octubre/2019 a las 12:57
La variable RutaCompletaFichero la puedes construir como tu quieras ...

RutaCompletaFichero = "C:\Temp\pepe.txt"
RutaCompletaFichero = "C:\Temp\pepe" & n & ".txt"
.
.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable