Ocultar filas y columnas según condición

Para Dante

Necesito una macro que oculte las filas que en la columna I sean diferentes de Reclamado, oculte las columnas, A C DE E I J QUE L M, seleccione el rango resultante y lo mande por email, y después lo restaure todo a visible de nuevo, ¿esto es posible?

2 respuestas

Respuesta
2

H   o   l   a:

¿Seleccione el rango resultante y lo envíe como una hoja en un archivo?

¿Enviar por outlook?

Para enviar el correo, debes especificar:

- A quién se va enviar

- Asunto

- Cuerpo

- Si va a ser un archivo, el nombre del archivo.

sal u dos

Exacto como archivo adjunto por email en outlook

El email, asunto y cuerpo es indiferente, cualquier dato genérico

Pero, para enviar en automático el correo, los datos de email, asunto y cuerpo, se deben tomar de alguna parte, entonces de dónde obtengo esa información.

¿Y cómo quieres que se llame el archivo?

el nombre del fichero " servicios extras pendientes (updated fecha y hora cuando se genera)".xlsx,  es destinatario=hoja("configemail". celda c15, El asunto igual que el nombre del fichero, mensaje: Estimado cliente, adjunto envío los servicios extras pendientes a fecha de actualización : "la fecha de creación del dichero", atentamente, un saludo. 

Te anexo la macro

Sub Enviar_Datos()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    '
    Set l1 = ThisWorkbook
    Set h = Sheets("Hoja1")
    '
    h.Cells.EntireRow.Hidden = False
    h.Cells.EntireColumn.Hidden = False
    uf = h.UsedRange.Rows(h.UsedRange.Rows.Count).Row
    uc = h.UsedRange.Columns(h.UsedRange.Columns.Count).Column
    '
    'ocultar filas
    For i = uf To 2 Step -1
        If LCase(h.Cells(i, "I")) <> LCase("Reclamado") Then
            h.Rows(i).EntireRow.Hidden = True
        End If
    Next
    '
    'ocultar columnas
    h.Range("A:A, C:E, I:M").EntireColumn.Hidden = True
    '
    'Copiar rango resultante
    h. Range(h.Cells(1, "A"), h. Cells(uf, uc)). SpecialCells(xlCellTypeVisible). Copy
    Set l2 = Workbooks.Add
    Set h2 = l2.Sheets(1)
    h2.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
    h2.Range("A1").PasteSpecial Paste:=xlPasteValues
    h2.Range("A1").PasteSpecial Paste:=xlPasteFormats
    '
    'guardar archivo
    ruta = l1.Path & "\"
    arch = "servicios extras pendientes " & Format(Now(), "dd-mm-yyyy hh_mm_ss")
    l2.SaveAs Filename:=ruta & arch & ".xlsx", FileFormat:=xlOpenXMLWorkbook
    l2.Close
    '
    'enviar correo
    Set dam = CreateObject("Outlook.Application").CreateItem(0)
    dam.To = Sheets("configemail").Range("C15").Value   'Destinatarios
    dam.Subject = arch                                  '"Asunto"
    dam.Body = "Estimado cliente, adjunto envío los servicios extras pendientes " & _
               "a fecha de actualización : " & Format(Date, "dd-mm-yyyy") & _
               ", atentamente, un saludo."
    dam.Attachments.Add ruta & arch & ".xlsx"
    Dam. Send 'El correo se envía en automático
 'dam. Display 'El correo se muestra
    '
    'Restaurar todo a visible
    h.Cells.EntireRow.Hidden = False
    h.Cells.EntireColumn.Hidden = False
    Application.ScreenUpdating = True
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias! Dante. Es posible hacer otra macro igual solamente que en vez de enviar por email a una sola cuenta, ¿qué agrupe los valores por email de responsable (columna A) y le mande un email con el rango a cada uno?, muchas gracias por todo eres un crack

Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta, Ahí me describes con detalle lo que necesitas.

Sal u dos

Respuesta
1

Esto te puede orientar para armar tu macro

Esto envía mail

https://youtu.be/JhRwXdyLVIE

https://youtu.be/GyD0kKU_RJw

Esto oculta fila según criterio

https://youtu.be/IAi8W6uRWJo

Para dejar todo visible de nuevo debes usar show alldata

Visita http://programarexcel.com descarga cientos de ejemplos de macros que te ayudarán a automatizar tu hoja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas