Crear macro para concatenar varias celdas

Tengo una lista de correos electrónicos, necesito enviar un correo solicitando alguna información, pero quiero crear un solo correo en BCC y enviar un solo correo

Ahora la lista puede ser hoy de 50 correos pero mañana de 300, lo que genera la lista es un reporte de otro programa, yo copio este reporte y en la columna B (según el ejemplo) están todos los correos, se que puedo usar concatenate pero para 300 lineas se haría muy largo.

Mi idea es que el concatenate genere una lista de todas las direcciones, separadas por ";" y luego en la macro de enviar el correo pues jale solo la celda que tiene toda la informacion

La versión de excel que utilizo es en ingles del 2013

Agradezco si pueden ayudarme con una idea de como hacer esta macro

A sus ordenes

Gustavo A Zuniga

2 Respuestas

Respuesta
1

Te mando mi solución. Me imagino que los correos están escritos en la columna B desde B1 hacia abajo. Con esta macro fabricamos una cadena con todos los mails, separados por punto y coma. (Al final de macro hay un msgbox para enseñarte como queda. Después esa línea se puede quitar y te quedas con la variable lista que contiene la cadena los mails)

Sub proceso()
'por luismondelo
Range("b1").Select
Do While Not IsEmpty(ActiveCell)
lista = lista & ";" & ActiveCell
ActiveCell.Offset(1, 0).Select
Loop
lista = Mid(lista, 2, Len(lista) - 1)
MsgBox lista
End Sub

recuerda finalizar

gracias por tu ayuda luismondelo, pero me queda una duda...

como hago para tomar esa lista y pegarla en una celda, esto para luego utilizarla como referencia en una macro de un correo.

me trato de explicar mejor, esta lista sera una lista de contactos de correo, pero la macro que me envías (que funciona de maravilla), me da la información en una caja (msgbox), y yo la necesito en una celda digamos en "D2"

te agradezco la ayuda

Ok, ahora la macro queda así:

Ahora la cadena de mails quedará en la celda D2

Sub proceso()
'por luismondelo
Range("b1").Select
Do While Not IsEmpty(ActiveCell)
lista = lista & ";" & ActiveCell
ActiveCell.Offset(1, 0).Select
Loop
lista = Mid(lista, 2, Len(lista) - 1)
range("d2").value = lista
End Sub

recuerda finalizar

Respuesta

Eso se puede hacer sin utilizar una macro. Solo con la función concatenar.

Dale un vistazo a este video:

https://www.youtube.com/watch?v=teJNAmfImkM 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas