none
Enviar ficheros .txt desde Access 2003 RRS feed

  • Pregunta

  • ¿Como puedo automatizar el envio de ficheros por correo electrònico que genero exportandolos desde el propio Access en formato texto en una carpeta temporal?

    Intento utilizar el comando DoCmd.SendObject y no si hay otra opción.

     

    Un saludo,

     

    Anscari

     

     

     

     

    jueves, 21 de junio de 2007 14:56

Respuestas

  •  

    Esta rutina la saque del BUHO espero que te sirva, es para enviar email directo:

     

    Option Compare Database
    Option Explicit


    'aqui cambia el servidor de correo saliente, usuario y contraseña segun proceda.
    'lo pongo a piñon fijo, que lo cambie el programador de cada applicación

    Private Const StrServer As String = "coloca el servidor saliente"
    Public Const StrUsuario As String = "coloca tu email"
    Private Const StrPassword As String = "coloca tu password"

    Enum ConstantesCorreoLibre
        ConstanteCDOPuerto = 2
        ' Usar autentificacion básica.
        ConstanteCDOA_Basica = 1
        'Usar autentificación NTLM
        ConstanteCDO_NTLM = 2    'NTLM
    End Enum


    Function EnviaCorreo(StrPara As String, StrDe As String, _
                              StrAsunto As String, StrCuerpo As String, Optional StrRutaAdjunto As String, _
                              Optional IntFormato As Integer = 1)
    Dim ObjetoMensajeLibre As Object, strHTML As String

    'Enviando Correo utilizando autentificación remota del server
    ' Creamos el objeto.
    On Error GoTo EnviaCorreoLibre_Err
    Set ObjetoMensajeLibre = CreateObject("CDO.Message")

    ' A quien va el mensaje. Para multimples destinos, separa las direcciones de correo por «;»
    ObjetoMensajeLibre.To = StrPara

    ' Aquí va el asunto
    ObjetoMensajeLibre.Subject = StrAsunto

    'Quien envía el correo. ! ojo ! solo funciona con esta sitaxis:
    ' Nombre <tucuenta@tuservidor.com>
    'es decir, por ejemplo: Francisco Javier garcía Aguado<paco@nemo.es>
    'Ojo al dato pues
    ' OJO  OJO  OJO  OJO :
    ObjetoMensajeLibre.From = StrDe
    'se rechaza si no se recibe una cadena tipo <algo@algo.es>

    Select Case IntFormato

    Case 1
        'Aqui va el cuerpo sin formato
        ObjetoMensajeLibre.TextBody = StrCuerpo
    Case 2
        ' Si quieres formato HTML:
        ' Formato HTML en el cuerpo del mensaje.
        strHTML = "<HTML>"
        strHTML = strHTML & "<HEAD>"
        strHTML = strHTML & "<BODY>"
        strHTML = strHTML & _
                  "<b>" & Replace(StrCuerpo, Chr(13), "<Br>") & "</b></br>"
        strHTML = strHTML & "</BODY>"
        strHTML = strHTML & "</HTML>"
        ObjetoMensajeLibre.HTMLBody = strHTML
    Case Else
        ObjetoMensajeLibre.TextBody = StrCuerpo
    End Select

    ' Para fichero adjunto:
    If Len(StrRutaAdjunto) <> 0 Then
        ObjetoMensajeLibre.addattachment ("file://" & StrRutaAdjunto)
        MsgBox "El Archivo fue Anexado" & vbLf & "Aceptar para continuar"
    End If


    '****************************************************
    'Aqui comienza en si las configuraciones del server de correo remoto
    '****************************************************
    ObjetoMensajeLibre.Configuration.Fields.Item( _
            "http://schemas.microsoft.com/cdo/configuration/sendusing") = _
            ConstanteCDOPuerto

    '  Aquí puedes poner, bien el literal, bien la IP
    'de la maquina remota del server.

    ObjetoMensajeLibre.Configuration.Fields.Item( _
            "http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
            StrServer    ' recuerda, _
                         es tu servidor de correo...lo puedes ver en las configuraciones
    '  de tu gestor de correo

    'Ahora especificamos el tipo de autentificacion que el server espera:

    ObjetoMensajeLibre.Configuration.Fields.Item( _
            "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = _
            ConstanteCDOA_Basica

    ' Aquí el nombre de usuario que el sever espera recibir(Lo puedes ver en las configuraciones
    'de las cuentas de Outlook y Outlook  Express:

    ObjetoMensajeLibre.Configuration.Fields.Item( _
            "http://schemas.microsoft.com/cdo/configuration/sendusername") = _
            StrUsuario

    ' Aquí el password (Contraseña) del usuario (Tambien la sacas de la configuracion del OE & Outlook)

    ObjetoMensajeLibre.Configuration.Fields.Item( _
            "http://schemas.microsoft.com/cdo/configuration/sendpassword") = _
            StrPassword

    'Aqui el puerto. Casi siempre el 25.... asi que lo dejo a a piñon fijo
    ObjetoMensajeLibre.Configuration.Fields.Item( _
            "http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465

    'Si estas usando SSL para la conexión. Valores (False or True)
    ObjetoMensajeLibre.Configuration.Fields.Item( _
            "http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

    ' Tiempo en segundos para que se establezca correctamente el protocolo SMTP.
    ObjetoMensajeLibre.Configuration.Fields.Item( _
            "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10

    ' Guardamos....
    ObjetoMensajeLibre.Configuration.Fields.Update

    ' Y ! POR FIN !  enviamos
    ObjetoMensajeLibre.Send
    If Finalizar = True Then
    Else
    MsgBox "Email enviado Satisfactoriamente", vbInformation, "Mensaje Enviado"
    End If
    Exit Function

    EnviaCorreoLibre_Exit:
    If Finalizar = True Then
    Else
    MsgBox "Email No Enviado", vbExclamation, "Error en Mensaje"
    End If
        Exit Function
    EnviaCorreoLibre_Err:
    If Err.Number = (-2147220973) Then
        MsgBox "No hay conexion de internet, revise la conexion...", vbCritical, "NO HAY INTERNET"

        'MsgBox "Error nº " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
        '       "en procedimiento EnviaCorreoLibre de Módulo ModuloCdo", vbCritical, "Aviso de error"
    Else
    End If
        Resume EnviaCorreoLibre_Exit
    End Function

    Para generar el txt utilizar esta----------------------------------------------------------------------------------------

     

    DoCmd.TransferText acExportDelim, "Standard Output", "External Report", "C:\Txtfiles\April.doc"

    lo demas te lo deja a ti
    martes, 31 de julio de 2007 18:00