Ayuda con código que busca y envía texto por outlook

Buen Día, y muchas gracias por le tiempo
Tengo una tabla con los siguientes datos,
col a col b col c
cte 1 sticker rojo
cte 2 etiqueta azul
cte 2 etiqueta verde
cte 3 sticker amarillo
y quiero que al posisionarme en por ejemplo el cliente 2, me levante los datos
a poner en el mensaje del texto que se envía en el mail, de la siguiente manera si me pararara en el cliente 2 (que tiene dos filas)
cte 2 etiqueta azul
cte 2 etiqueta roja
he logrado hacerlo pero mandando solo una fila, ¿cómo hago para que me agregue la segunda fila si el cliente tiene más de una fila?
Sub A_ENVIAR_MAIL_OUTLOOK_MAS_DE_UNO()
Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim cell As Range, FileCell As Range, rng As Range
r = ActiveCell.Row
Cliente = Cells(r, 1).Text
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "[email protected]"
.Subject = "PEDIDO DE " & Cells(r, 56).Text
.Body = "Sr/es: "
.Body = OutMail.Body & "Me mandarian por favor el siguiente archivo: "
.Body = OutMail.Body & "Cliente nro: " & Cliente 'NUMERO DE CLIENTE
.Body = OutMail.Body & Cells(r, 2).Text & ".-- " & Cells(r, 3).Text & ".---" 'DETALLE DE TRABAJOS
'aquí quisiera que si el mismo cliente tiene dos trabajos en la hoja, me las copie una abajo de
'LA OTRA, COMO EL ENUNCIADO SUPERIOR
.Send
End With
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
Espero que se entienda y muchísimas gracias ! Nuevamente

1 respuesta

Respuesta
1
SubHola disculpa, al probar la amcro mande un correo al que estaba en tu código, te lo digo por si acaso.
En todo caso si solo hay posibilidad de dos repeticiones y los clientes están ordenados esta corrección a la macro te sirve.
Sub A_ENVIAR_MAIL_OUTLOOK_MAS_DE_UNO()
Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim cell As Range, FileCell As Range, rng As Range
r = ActiveCell.Row
Cliente = Cells(r, 1).Text
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "[email protected]"
.Subject = "PEDIDO DE " & Cells(r, 56).Text
.Body = "Sr/es: "
.Body = OutMail.Body & "Me mandarian por favor el siguiente archivo: "
.Body = OutMail.Body & "Cliente nro: " & Cliente 'NUMERO DE CLIENTE
.Body = OutMail.Body & Cells(r, 2).Text & ".-- " & Cells(r, 3).Text & ".---" 'DETALLE DE TRABAJOS
If Cells(r, 1).Value = Cells(r + 1, 1).Value Then
.Body = OutMail.Body & Cells(r + 1, 2).Text & ".-- " & Cells(r + 1, 3).Text & ".---" 'DETALLE DE TRABAJOS
End If
'AQUI QUISIERA QUE SI EL MISMO CLIENTE TIENE DOS TRABAJOS EN LA HOJA, ME LAS COPIE UNA ABAJO DE
'LA OTRA, COMO EL ENUNCIADO SUPERIOR
.Send
End With
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End
Hola, agradezco tu ayuda, perdón que no conteste antes pero estuve ausente, el tema es que quizás en algún caso encuentre más de 2 items del mismo cliente, ¿cómo debería hacer para estos casos?
Muchas gracias por el tiempo
Si están ordenados y máximo hay tres este sería el código:
Sub A_ENVIAR_MAIL_OUTLOOK_MAS_DE_UNO()
Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim cell As Range, FileCell As Range, rng As Range
r = ActiveCell.Row
Cliente = Cells(r, 1).Text
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "[email protected]"
.Subject = "PEDIDO DE " & Cells(r, 56).Text
.Body = "Sr/es: "
.Body = OutMail.Body & "Me mandarian por favor el siguiente archivo: "
.Body = OutMail.Body & "Cliente nro: " & Cliente 'NUMERO DE CLIENTE
.Body = OutMail.Body & Cells(r, 2).Text & ".-- " & Cells(r, 3).Text & ".---" 'DETALLE DE TRABAJOS
If Cells(r, 1).Value = Cells(r + 1, 1).Value Then
.Body = OutMail.Body & Cells(r + 1, 2).Text & ".-- " & Cells(r + 1, 3).Text & ".---" 'DETALLE DE TRABAJOS
End If
If Cells(r, 1).Value = Cells(r + 2, 1).Value Then
.Body = OutMail.Body & Cells(r + 2, 2).Text & ".-- " & Cells(r + 2, 3).Text & ".---" 'DETALLE DE TRABAJOS
End If
'AQUI QUISIERA QUE SI EL MISMO CLIENTE TIENE DOS TRABAJOS EN LA HOJA, ME LAS COPIE UNA ABAJO DE
'LA OTRA, COMO EL ENUNCIADO SUPERIOR
.Send
End With
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas