enviar archivo adjunto a varios destinatarios.

25/12/2008 - 23:31 por luismi.nestle | Informe spam
Hola, vi en estos grupos el siguiente enlace:

http://groups.google.com.mx/group/m...09a626a5cc

La macro me ha venido muy bien pero me gustaria sabe si se puede
mandar el correo a varios destinatarios. He probado a duplicar el
mandato, pero lo que hace la macro es mandar dos correos (yo quiero
que mande uno solo a los dos destinatarios) Me funciona perfectamente,
pero quiero, si se puede hacer, poder mandar un solo correo a varios
destinatarios. Tambien, de paso, me gustaria saber si se puede poner
el "chivato" de lectura.

Aquí les dejo lo que tengo:

Sub cercanias()

If MsgBox("Esta a punto de envíar un correo automático, para completar
esta operacion, Pulsar aceptar", vbOKCancel) = vbOK Then
Sheets("H.CALLE").Select
Sheets("H.CALLE").Copy
ActiveSheet.Unprotect "xxxx"
Selection.Locked = True
ActiveSheet.Protect "xxxx"
Dim wb As Workbook
Dim strdate As String
Dim stEmail As String
strdate = Format(Now, "dd-mm-yy h-mm")
strEmail = "abcdef@gmail.com"
Application.ScreenUpdating = False
ActiveSheet.Copy
Set wb = ActiveWorkbook
With wb
.SaveAs ThisWorkbook.Name & " " & strdate & ".xls"
.SendMail strEmail, "Peticion de transporte"
.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
End With
Application.ScreenUpdating = True
End If
If MsgBox("Desea enviar una copia a cercanias? para completar esta
operacion, Pulsar aceptar", vbOKCancel) = vbOK Then
strdate = Format(Now, "dd-mm-yy h-mm")
strEmail = "ghijk@gmail.com"
Application.ScreenUpdating = False
ActiveSheet.Copy
Set wb = ActiveWorkbook
With wb
.SaveAs ThisWorkbook.Name & " " & strdate & ".xls"
.SendMail strEmail, "Peticion de transporte"
.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
End With
Application.ScreenUpdating = True
End If


End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
27/12/2008 - 05:49 | Informe spam
hola, luis !

... vi en estos grupos el siguiente enlace: (...)
La macro me ha venido muy bien pero me gustaria sabe si se puede mandar el correo a varios destinatarios.
He probado a duplicar el mandato, pero lo que hace la macro es mandar dos correos
(yo quiero que mande uno solo a los dos destinatarios) ...



op1: prueba a establecer como matriz las dos direcciones de destino (p.e.)
' otras lineas de tu codigo ... '
.SendMail Array("direccion 1", "direccion 2"), "Asunto"

op2: prueba poniendo en un rango las direcciones a donde necesites los envios (p.e.)
' otras lineas de tu codigo ... '
Dim Direcciones As Variant
Direcciones = Range("c11:c12")
.SendMail Direcciones, "Asunto"

saludos,
hector.
Respuesta Responder a este mensaje
#2 luismi.nestle
28/12/2008 - 01:26 | Informe spam
op1: prueba a establecer como matriz las dos direcciones de destino (p.e.)
' otras lineas de tu codigo ... '
  .SendMail Array("direccion 1", "direccion 2"), "Asunto"

op2: prueba poniendo en un rango las direcciones a donde necesites los envios (p.e.)
' otras lineas de tu codigo ... '
  Dim Direcciones As Variant
  Direcciones = Range("c11:c12")
  .SendMail Direcciones, "Asunto"

saludos,
hector.




Hola Hector.

La primera opc. no la entendí muy bien, bueno no se que lineas tenia
que quitar de mi macro y sustituir por esa, pero la opc. 2 me ha ido
perfeta, puedo definir un rango mayor, aunque haya casillas en blanco
que puedo ir rellenando en un futuro, o ser rellenadas por compañeros
que prefiero no toquen la macro, ademas he ocultado esa columna y todo
queda perfecto. No se si te fijaste en lo último que comente en mi
pregunta:

Queria tambien saber si si puede poner la confirmación de lectura del
correo enviado, quizas sea mas dificir o imposible al tratarse de una
opción de Outlook, si no se puede siempre me queda ir a la bandeja de
salida y ponerlo manualmente.

Gracias y saludos de un aprendiz de macros
Luismi
Respuesta Responder a este mensaje
#3 Héctor Miguel
28/12/2008 - 02:03 | Informe spam
hola, Luis !

La primera opc. no la entendi muy bien, bueno no se que lineas tenia que quitar de mi macro y sustituir por esa
pero la opc. 2 me ha ido perfeta, puedo definir un rango mayor
aunque haya casillas en blanco que puedo ir rellenando en un futuro
o ser rellenadas por companeros que prefiero no toquen la macro
ademas he ocultado esa columna y todo queda perfecto.
No se si te fijaste en lo ultimo que comente en mi pregunta:
Queria tambien saber si si puede poner la confirmacion de lectura del correo enviado
quizas sea mas dificil o imposible al tratarse de una opcion de Outlook
si no se puede siempre me queda ir a la bandeja de salida y ponerlo manualmente.



1) la opcion1 "era" (simplemente) incluir como matriz dentro del Array("", "") las direcciones de envio

2) no entendia eso del "chivato", pero la opcion de solicitar confirmacion la puedes administrar NO por el metodo SendMail
sino haciendo uso y referencia del modelo de objetos de OutLook (de office)
puedes ver ejemplos y descargar plantillas y complementos (AddIns) desde la pagina de Ron de Bruin:
Example Code for sending mail from Excel
http://www.rondebruin.nl/sendmail.htm

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ previos __
op1: prueba a establecer como matriz las dos direcciones de destino (p.e.)
' otras lineas de tu codigo ... '
.SendMail Array("direccion 1", "direccion 2"), "Asunto"

op2: prueba poniendo en un rango las direcciones a donde necesites los envios (p.e.)
' otras lineas de tu codigo ... '
Dim Direcciones As Variant
Direcciones = Range("c11:c12")
.SendMail Direcciones, "Asunto"
Respuesta Responder a este mensaje
#4 luismi.nestle
28/12/2008 - 18:30 | Informe spam

1) la opcion1 "era" (simplemente) incluir como matriz dentro del Array("", "") las direcciones de envio

2) no entendia eso del "chivato", pero la opcion de solicitar confirmacion la puedes administrar NO por el metodo SendMail
sino haciendo uso y referencia del modelo de objetos de OutLook (de office)
puedes ver ejemplos y descargar plantillas y complementos (AddIns) desde la pagina de Ron de Bruin:
Example Code for sending mail from Excel
http://www.rondebruin.nl/sendmail.htm

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.



Gracias, tienes razon, la opc. 1 era muy sencilla pero no la vi a la
primera, de todas formas me va mejor la opc 2 por el tema antes
mencionado, uso la misma macro para 10 hojas. He visitado el enlace,
no se si las opciones de confirmación de lectura es "Envío de correo
desde Excel con CDO" mi nivel de inglés es malo y el traductor hace lo
que puede pero ya he encontrado una solución muy sencilla para eso:

En Outlook he creado una regla para los elementos enviados
paso 1: que contengan la palabra "peticion" * en el asunto del
correo
paso 2. confirmación de lectura para los destinatarios
Finalizar
* Ya me he encargado con la macro que la palabra "peticion" esté en el
asunto del correo, je je je

ahora lo que me ocurre es que me nombra el nuevo libro como:

Peticion.xls *agencia dd_mm_aa_hh_mm.xls *(el nombre está en "a10")
hay alguna forma de quitar el primer .xls

lo que tengo:

mas
Dim wb As Workbook
Dim strdate As String
Dim Direcciones As Variant
strdate = Format(Range("a10"), "dd-mm-yy h-mm")
Direcciones = Range("c2:c9")
Application.ScreenUpdating = False
ActiveSheet.Copy
Set wb = ActiveWorkbook
With wb
.SaveAs ThisWorkbook.Name & " " & strdate & ".xls"
.SendMail Direcciones, "Peticion transporte" & " " & Range("a10")
.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False

gracias, tengo que reconocer que mi nivel en macros es bajo pero hago
lo que puedo y me gusta
Saludos
Luismi.
Respuesta Responder a este mensaje
#5 Héctor Miguel
28/12/2008 - 18:55 | Informe spam
hola, luis !

1) el primer ".xls" lo toma de la siguiente instruccion en tu codigo:
-> .SaveAs ThisWorkbook.Name & " " & strdate & ".xls"
concretamente del "ThisWorkbook.Name" (que es el nombre completo incluyendo el ".xls")

o sea, puedes eliminarlo (de entre varias formas) cambiando exclusivamente el "ThisWorkbook.Name" por:
-> si utilizas excel 2000 en adelante (VBA6)
a) Replace(ThisWorkbook.Name, ".xls", "")
b) Left(Thisworkbook.Name, InstrRev(Thisworkbook.Name, ".") -1)
-> si piensas dar soporte a la version 97 (VBA5)
Application.Substitute(ThisWorkbook.Name, ".xls", "")

2) lo del CDO (Collaboration Data Object) se refiere a envios de "e-milios" sin importar cual sea tu cliente de correos
(y requiere de alguna preparacion, no muy sofisticada pero que no siempre se entiende o deduce a la primera) :-((

saludos,
hector.

__ OP __
... He visitado el enlace, no se si las opciones de confirmación de lectura es "Envío de correo desde Excel con CDO"
mi nivel de ingles es malo y el traductor hace lo que puede pero ya he encontrado una solución muy sencilla para eso:

En Outlook he creado una regla para los elementos enviados
paso 1: que contengan la palabra "peticion" * en el asunto del correo
paso 2. confirmacion de lectura para los destinatarios
Finalizar
* Ya me he encargado con la macro que la palabra "peticion" este en el asunto del correo, je je je

ahora lo que me ocurre es que me nombra el nuevo libro como:
Peticion.xls *agencia dd_mm_aa_hh_mm.xls *(el nombre está en "a10")
hay alguna forma de quitar el primer .xls

lo que tengo:
mas
Dim wb As Workbook
Dim strdate As String
Dim Direcciones As Variant
strdate = Format(Range("a10"), "dd-mm-yy h-mm")
Direcciones = Range("c2:c9")
Application.ScreenUpdating = False
ActiveSheet.Copy
Set wb = ActiveWorkbook
With wb
.SaveAs ThisWorkbook.Name & " " & strdate & ".xls"
.SendMail Direcciones, "Peticion transporte" & " " & Range("a10")
.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida