Buscar dirección de correo en Outlook desde Excel

A quien pueda interesar,
Trabajo con office 2003, tengo una hoja de excel en la que aparece el nombre de diversos representantes en una columna (son cerca de 800) a cada uno de esos representarles he de enviarles un correo electrónico por medio de Outlook, con una hoja de excel que es única para cada uno de ellos.
Me gustaría escribir una macro que recorriese dicha columna de representantes, y en la columna que se encuentra a la derecha de esta, escribiese la dirección de correo de ese representante.
Las direcciones como es lógico, se encuentran en el libro de direcciones que outlook posee.

1 Respuesta

Respuesta
1
Te mandé un mail.
Quizás me he explicado mal, en Outlook tengo dos libretas de direcciones, una es la libreta de contactos personal, a esa puedo acceder como me de la gana e incluso exportarla como un archivo de excel. Pero la libreta de direcciones en la que están los representantes es la libreta de direcciones de la empresa en la que trabajo, y esa no se puede exportar, tampoco entien por que pero bueno así es la vida.
He estado probando con el objeto MsoEnvelope de VBA, con el puedo enviar el correo al representante "Perico, Perez" (Por poner un ejemplo) pero cada vez que Excel busca la dirección en la libreta de direcciones, windows me pide confirmación, ya que piensa que es un virus, y he de elegir aceptar para que continué funcionando la macro. ¿Sabrían ustedes como hacer para que de forma automática se seleccionase la opción "ACEPTAR"?
He probado poniendo:
Application.DisplayAlerts = False
linea en la que llama a la libreta
Application.DisplayAlerts = True
de esta manera se supone que lo hace, pero nada de eso.
Por otro lado la macro que hace esto que digo es la siguiente
Workbooks("CLIENTES1.XLS").HasRoutingSlip = True
Application.DisplayAlerts = False
With Workbooks("CLIENTES1.XLS").RoutingSlip
.Delivery = xlAllAtOnce
.Recipients = "Candau, Rafael"
'Array("Perico, Perez","Juan, Pardo", "Fernando, Redondo")
.Subject = "El libro tio"
.Message = "tio que te mando el libro que querias"
End With
Workbooks("CLIENTES1.XLS").Route
Application.DisplayAlerts = True
End Sub
Espero que con estas aclaraciones podamos hacer algo.
Muchísimas gracias por contestar tan rapido y por tener ese animo tan constructivo.
Saludos
Ya esta hecho, lo que pasaba es que no tenia activada la librería de objetos de Outlook, con esta librería todo es mucho más sencillo
la macro ha quedado de la siguiente manera
Public Function correo(nombre, asunto, texto, archivo)
Dim Objeto As Outlook.Application
Dim ObjetoMail As MailItem
Set Objeto = CreateObject("Outlook.Application")
Set ObjetoMail = Objeto.CreateItem(olMailItem)
With ObjetoMail
.To = nombre
.Subject = asunto
.HTMLBody = texto
.Attachments.Add (archivo)
.Display
'.Send
End With
Set Objeto = Nothing
Set ObjetoMail = Nothing
End Function
Esto hace lo que quiero.
Mirare tu correo, pero en cualquier caso muchas gracias por las aclaraciones y por las molestias tomadas.
Saludos
Yo tengo un archivito ejemplo que recorre una lista de nombres y prepara un mail para cada uno; el tema es que la lista de nombres y el MAIL están en el libro Excel; no entiendo lo que decís que las direcciones las tenés en Outlook (habría que ver de "bajarlo" para tomarlo desde el Excel); si te interesa, pásame tu dirección de mail y te paso mi archivo y luego lo vamos ajustando a tus necesidades.
Mi dirección de correo es
[email protected]
Y mi nombre es rafael
La cosa es que desde Excelo desde word se pueden enviar correos a través de Outlook, VBA lo permite, de hecho se como hacerlo. Lo que yo quiero es escribiren la hoja de excel la dirección de correo que esta en la libreta de direcciones de Outlook al lado del nombre de cada contacto
Ok Rafael; sabés como exportar la info de la libreta de direcciones (desde el Outlook, Menú Archivo > Importar y Exportar, ...)
El problema de esto es que no necesariamente te van a coincidir los campos que exportaste con el nombre que tenés guardado en tu archivo Excel; si estás seguro que si te van a coincidir; entonces puedes usar directamente la instrucción BUSCARV; ¿Cómo quieres que sigamos?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas