Imprimir página | Cerrar ventana

Enviar archivo en disco desde access VBA

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84751
Fecha de impresión: 18/Abril/2024 a las 10:35


Tema: Enviar archivo en disco desde access VBA
Publicado por: Xantus
Asunto: Enviar archivo en disco desde access VBA
Fecha de publicación: 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.



Respuestas:
Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Xantus
Fecha de publicación: 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!!!!



Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es



Imprimir página | Cerrar ventana