Hola:

Esto no es una duda, sino la resolución de una duda.

Tenía la necesidad de enviar mensajes utilizando Outlook desde Access,
he buscado en la inmensidad de los 2 grupos de Access en español y no
había encontrado la solución, así que me he puesto a pegarme con los 2
Outlook y Access y ha salido esto tan sencillo...

Sub EnvioCorreo()
    Dim OutLookApp  As Outlook.Application
    Dim Msg         As Outlook.MailItem
    Dim Dire(3)     As String
    Dim X           As Long
    
    Dire(1) = "uno@QUITAESTOjajaja.com"
    Dire(2) = "dos@QUITAESTOjajaja.com"
    Dire(3) = "tres@QUITAESTOjajaja.com"
    
    Set OutLookApp = New Outlook.Application
    For X = 1 To 3
      Set Msg = OutLookApp.CreateItem(olMailItem)
      Msg.Subject = "Esto es el asunto"
      Msg.Body = "Y esto el cuerpo del mensaje: Hola " & Dire(X)
      Msg.To = Dire(X)
      Msg.Send
    Next X
    OutLookApp = Nothing
End Sub

Y ejecutando este código se envían 3 mensajes, uno a cada una de las
tres direcciones guardadas en dire(), las propiedades .subject, .body
y .to no hace falta indicarlas... y hay muchas más.

¿Qué tengo instalado en mi ordenador? Access 97 y Outlook 2000,
supongo que con Access 2000 o XP y Outlook 2000 no habrá ningún
problema, tengo mis dudas con Outlook 97, pues me parece que la
librería que hay que incluir en Referencias no contiene lo que aquí
uso.

Eso, que se me olvidaba, antes de meter este código, incluí en las
Referencias la librería: "Microsoft Outlook 9.0 Object Library", ya
sabéis, estando abierta una ventana de código, menú
Herramientas->Referencias.

Un saludo a todos

MODIFICACION POSTERIOR DE CARCAR

Sub EnvioCorreo()
    Dim OutLookApp  As Outlook.Application
    Dim Msg         As Outlook.MailItem
    Dim Pie         As Outlook.PostItem
    Dim Dire(2)     As String
    Dim X           As Long
    Dim TxtHTMLCab  As String
    Dim TxtHTMLPie  As String

    Open "C:\cabecera.txt" For Input As #1
    TxtHTMLCab = Input(3450, #1)
    Close #1
    
    Open "C:\piefirma.txt" For Input As #1
    TxtHTMLPie = Input(1432, #1)
    Close #1
    
    Dire(1) = "ccarpioh@kkkk.es"
    Dire(2) = "ccarpioh@kkkk.es"

    Set OutLookApp = New Outlook.Application
    For X = 1 To 2
      Set Msg = OutLookApp.CreateItem(olMailItem)
      Msg.Subject = "Esto es el asunto"
      Msg.HTMLBody = TxtHTMLCab & "" & Dire(X) & "" &
TxtHTMLPie
      Msg.To = Dire(X)
      Msg.Attachments.Add "C:\cabecera.txt"
      Msg.Attachments.Add "C:\piefirma.txt"
      Msg.Send
    Next X
    Set Msg = Nothing
    Set OutLookApp = Nothing
    MsgBox "Fin de envio"
End Sub

Evidentemente el bucle, que aquí lo que hacer es, recorrer el
contenido de una matriz, podría recorrer los registros de un
recordset...

La parte más divertida ha sido incluir código HTML en la propiedad
HTMLBody que es la que se utiliza para enviar éste tipo de código (en
lugar de la .body que utilizaba en la anterior).

Las cabeceras y pie del mensaje, fueron creados con un editor de HTML
y copiado el código HTML en los ficheros .txt cabecera.txt y
piefirma.txt. Los he leído "a pedal" con las viejas instrucciones del
BASIC, para lo que he tenido que darles el tamaño EXACTO de los
mismos... Todo lo anterior porque no puedes incluir código HTML dentro
de los módulos, sobre todo si el código es complejo, lleno de comillas
dobles, barras, etc.

Como se puede ver, también se pueden añadir ficheros vinculados al
"emilio". ¡toy más contento!

Creo que todo esto NO SE PUEDE HACER con OUTLOOK 97, debe de ser 2000
o siguientes.

    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)