Enviar varios correos desde excel

17/05/2006 - 12:40 por pacomar | Informe spam
Buenos días grupo.

He estado mirando los anteriores mensajes sobre este tema posteados con
anterioridad, pero no he visto nada parecido a lo que necesito.

Supongamos que necesito enviar por e-mail un documento personalizado en
formato pdf a varios destinatarios cuyas direcciones tengo en un libro:
"e-mails" y su hoja correspondiente: "hoja1"
A: id B: Nombre C: Email

Supongamos que tengo una carpeta donde guardo los pdf generados para
cada uno de los detinatarios: "C:/docspdf/001.pdf, 002.pdf, xxx.pdf".

¿Se podría confeccionar una rutina que buscara los ficheros
correspondientes, donde el nombre de fichero (001) se correspondería
con el "id" del destinatario y lo enviara como adjunto a las
direcciones almacenadas en la columna C?

Saludos...

Paco.

Preguntas similare

Leer las respuestas

#1 Francisco MTY
17/05/2006 - 18:21 | Informe spam
Si se puede y ya se ha hecho con rutinas separadas mas no en conjuntos, si
observaras un poco mas verias que se ha hecho codigo para recorrer uan
columna de valores, realizar acciones con los datos obtenidos y llamadas a
modulos contenidos en el libro.

Me imagino que pronto te daran respuesta, yo por ahora ando revisando
unicamente.
Saludos
Atte.
?T Francisco T?
http://groups.msn.com/ExcelVbaMacrosOffice
http://groups.msn.com/dadyboy
http://search.microsoft.com/?mkt=es-ES

"El progreso debe ser un movimiento ordenado y racional hacia una meta
fija... y no un torbellino de direcciones falsas y encontradas."
Respuesta Responder a este mensaje
#2 Héctor Miguel
18/05/2006 - 07:08 | Informe spam
hola, Paco !

... mirando los anteriores mensajes sobre este tema... no he visto nada parecido a lo que necesito.
Supongamos que necesito enviar por e-mail un documento personalizado en formato pdf
a varios destinatarios cuyas direcciones tengo en un libro: "e-mails" y su hoja correspondiente: "hoja1"
A: id B: Nombre C: Email
Supongamos que tengo una carpeta donde guardo los pdf generados para cada uno de los detinatarios:
"C:/docspdf/001.pdf, 002.pdf, xxx.pdf".
Se podria confeccionar una rutina que buscara los ficheros correspondientes
donde el nombre de fichero (001) se corresponderia con el "id" del destinatario
y lo enviara como adjunto a las direcciones almacenadas en la columna C?



en la pagina de Ron de Bruin: -> http://www.rondebruin.nl/
en la seccion de 'excel tips': -> http://www.rondebruin.nl/tips.htm

existe una seccion 'dedicada' al envio de correos:
Example Code for sending mail from Excel
http://www.rondebruin.nl/sendmail.htm

en ella, una seccion mas 'especilizada: -> Outlook object model (attachment)
y un ejemplo que [parece] se ajusta a lo que solicitas:
Mail a different file(s) to each person in a range
http://www.rondebruin.nl/mail/folder2/files.htm

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#3 pacomar
18/05/2006 - 09:46 | Informe spam
Buenos días Héctor...

Esto es lo que he puesto en un botón de comando en vez de en una
macro. Se trata de que los envíe al pulsarlo, pero no funciona, no
envía nada aunque tampoco da ningún error.
A: nombre
B:email
C:\pruebas_excel\paco.txt

Private Sub CommandButton1_Click()

Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range, FileCell As Range

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")

On Error GoTo cleanup
For Each cell In
Sheets("Sheet1").Columns("B").Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" And
Application.WorksheetFunction.CountA( _
Sheets("Sheet1").Cells(cell.Row, 1).Range("C1:F1")) > 0 Then
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = cell.Value
.Subject = "Testfile"
.Body = "Hi " & cell.Offset(0, -1).Value

'Enter the file names in the C:F column in each row
'You can make the range bigger if you want, only change
the column not the 1

For Each FileCell In Sheets("Sheet1").Cells(cell.Row,
1).Range("C1:F1") _
.SpecialCells(xlCellTypeConstants)
If Trim(FileCell) <> "" Then
If Dir(FileCell.Value) <> "" Then
.Attachments.Add FileCell.Value
End If
End If
Next FileCell

.Send 'Or use Display
End With
Set OutMail = Nothing
End If
Next cell
cleanup:
Set OutApp = Nothing
Application.ScreenUpdating = True
End Sub

Suelo utilizar el outlook express para gestionar el correo. He
habilitado también el Outlook del Office, he probado con ambos outlook
abiertos y cerrados, con uno sólo de ellos abierto, ...pero tampoco.

Alguna idea?

Saludos.
Respuesta Responder a este mensaje
#4 pacomar
18/05/2006 - 22:06 | Informe spam
Hola tocayo...

Pues sí, funciona perfectamente. El error era el nombre de la hoja,
que en cristiano no es "Sheet1".

Para hacerlo un poco más práctico, ¿habría alguna forma de que
preguntara en un msgbox por la carpeta donde tienes los ficheros a
enviar, en el caso del ejemplo "pruebas_excel"?

Saludos y gracias.

Paco.
Respuesta Responder a este mensaje
#5 Francisco MTY
19/05/2006 - 09:24 | Informe spam
Post de KL:

Usa el metodo GetOpenFileName. Revisa la Ayuda en linea de Excel (desde el
Editor VBA) para los detalles de la sintaxis y ejemplos.

Adaptando un poco el ejemplo que sale en la Ayuda:

Sub test()
Archivo = _
Application.GetOpenFilename _
("Archivo Microsoft Excel (*.xls), *.xls")
If Archivo <> False Then
MsgBox "Open " & Archivo
'Workbooks.Open Archivo
End If
End Sub


Atte.
?T Francisco T?
http://groups.msn.com/ExcelVbaMacrosOffice
http://search.microsoft.com/?mkt=es-ES

"El progreso debe ser un movimiento ordenado y racional hacia una meta
fija... y no un torbellino de direcciones falsas y encontradas."
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida