Saltar al contenido

Macro para cargos


Recommended Posts

publicado

He estado trabajando en una macro para extraer la información de 2 hojas de un libro y que la información quede en un nuevo libro y que se guarde en una carpeta. Tengo un libro donde está todo el de RIESGOS VERSION FINAL está la información que necesitamos, hay 2 hojas ahí con la que trabajaremos, SOD y Resumen X usuario, en la hoja SOD filtramos por empresa, (es importante filtrar por empresa ya que se guardará en una carpeta con el nombre de esa empresa el archivo generado) y ahí tomamos un cargo, copiamos las columnas A (CARGO), D (ID RISK), E (DES RIESGO), F (NIVEL), G (ID FUN), H (DES FUN), I (TRX), J (DES TRX) y esa info la pegamos desde la celda A2, luego copiamos el nombre del cargo en la otra hoja (Resumen x Usuario), se filtra por cargo el mismo cargo y validador de la hoja SOD copiamos los usuarios y el centro de los usuarios con ese cargo y lo pegamos en otro lado quitando luego los duplicados, copiamos el resultado y vamos a la hoja donde estamos guardando los datos del cargo, a continuación de la celda que dice la descripción de la trx presionamos botón derecho, pegado especial, seleccionamos pegado por valores y marcamos la casilla transponer, y aceptar, así se nos pegaran los valores hacia el lado, luego vemos el último usuario que se pegó con su centro y al lado de eso dejamos una celda para comentarios, en el nombre de la hoja ponemos el nombre del cargo y guardamos la planilla con el nombre del cargo en la carpeta de la empresa que filtramos al comienzo.

 

Adjunto una planilla ejemplo (Analista de respuesto) es el formato para entender lo que se necesita. y adjunto macro Libro1

 

Esto es lo que tengo en mi código:

Sub Macro1()
'
' Macro1 Macro
'
Dim x As Integer


Sheets("SOD-CARGO").Select
NumRows = Range("A2", Range("A2").End(xlDown)).Rows.Count
Range("A2").Select

' For x = 1 To NumRows
    Columns("A:A").Select
    Selection.Copy
    Sheets("CARGOS").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    NumRowsX = Range("A2", Range("A2").End(xlDown)).Rows.Count
    ActiveSheet.Range("$A$1:$A$" & NumRowsX).RemoveDuplicates Columns:=1, Header:= _
        xlYes
    Range("A2").Select
    Selection.Copy
    Sheets("SOD-CARGO").Select
    ' Range("A8").Select
    NumRowsY = Range("A2", Range("A2").End(xlDown)).Rows.Count
    ActiveSheet.Range("$A$1:$J$" & NumRowsY).AutoFilter Field:=1, Criteria1:=Array( _
        "Ingeniero Ventas Equipos"), _
        Operator:=xlFilterValues
    Range("A1:J" & NumRowsY).Select
    Range("A8").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("SOD1").Select
    Range("B1").Select
    ActiveSheet.Paste
    Range("B2").Select
    Sheets("CARGOS").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("SOD1").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[1],R1C1,1,0)"
    Range("A2").Select
    Selection.AutoFill Destination:=Range("A2:A141")
    Range("A2:A141").Select
    Range("A1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$K$141").AutoFilter Field:=1, Criteria1:= _
        "Ingeniero Ventas Equipos"
    NumRowsY = Range("A2", Range("A2").End(xlDown)).Rows.Count
    Range("A1:K" & NumRowsY).Select
    Selection.Copy
    Sheets("SOD2").Select
    Range("A2").Select
    ActiveSheet.Paste
    Columns("A:A").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Rows("1:1").Select
    ' Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove '
    Range("A3").Select
    Selection.Copy
    Sheets("DATOS-USER").Select
    NumRowsZ = Range("A2", Range("A2").End(xlDown)).Rows.Count
    ActiveSheet.Range("$A$1:$H$" & NumRowsZ).AutoFilter Field:=1, Criteria1:=Array( _
        "Ingeniero Ventas Equipos"), _
        Operator:=xlFilterValues
    Range("A1:H" & NumRowsZ).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("DATOS1").Select
    ActiveSheet.Paste
    Columns("A:A").Select
    Application.CutCopyMode = False
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A2").Select
    Sheets("SOD2").Select
    Selection.Copy
    Sheets("DATOS1").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[1],R1C1,1,0)"
    Range("A2").Select
    NumRowsA = Range("A2", Range("A2").End(xlDown)).Rows.Count
    Selection.AutoFill Destination:=Range("A2:A" & NumRowsA)
    Range("A2:A" & NumRowsA).Select
    Range("B1").Select
    NumRowsB = Range("A2", Range("A2").End(xlDown)).Rows.Count
    Selection.AutoFilter
    
    ActiveSheet.Range("$A$1:$I$" & NumRowsB).AutoFilter Field:=1, Criteria1:= _
        "Ingeniero Ventas Equipos"
    Columns("D:E").Select
    Selection.Copy
    Sheets("DATOS2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    NumRowsC = Range("A2", Range("A2").End(xlDown)).Rows.Count
    ActiveSheet.Range("$A$1:$B$" & NumRowsC).RemoveDuplicates Columns:=Array(1, 2), _
        Header:=xlYes
    Range("A2:B2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Range("I1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
        
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
        
    Range("I1").Select
    Sheets("SOD2").Select
    Range("I1").Select
    ActiveSheet.Paste
    
    Range(Selection, Selection.End(xlToRight)).Select
    Application.CutCopyMode = False
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("K2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("I3").Select
    ActiveCell.FormulaR1C1 = "X"
    uc = Range("A2").End(xlToRight).Column
    ActiveSheet.Cells(3, uc).Value = "X"
    NumRowsE = Range("A2", Range("A2").End(xlDown)).Rows.Count
    ActiveSheet.Cells(NumRowsE, 9).Value = "X"
    Range("I3").Select
    ActiveWindow.SmallScroll Down:=-3
    Selection.Copy
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Paste
    NumRowsD = Range("A2", Range("A2").End(xlDown)).Rows.Count
    ActiveWindow.SmallScroll Down:=NumRowsD
    Range("U67").Select
    Selection.End(xlUp).Select
    Range("S1").Select
    Selection.End(xlToLeft).Select
    Selection.End(xlToLeft).Select
    Range("A2").Select
    Selection.End(xlDown).Select
    Rows("63:63").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    Range("L59").Select
    Selection.End(xlUp).Select
    Windows("Libro1.xlsm").Activate
    uc_2 = Range("A2").End(xlToRight).Column
    Range("A1:Y").Select
    Range("L1").Activate
    Selection.Copy
    ActiveWindow.SmallScroll Down:=12
    
    ActiveWindow.SmallScroll Down:=-3
    Windows("Libro1.xlsm").Activate
    ActiveWindow.SmallScroll Down:=-18
    Cells.Select
    Range("A37").Activate
    Application.CutCopyMode = False
    Selection.Copy
    ' Windows("prueba.xlsx").Activate '
    Range("A1").Select
    ActiveSheet.Paste
    Range("J2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.End(xlToRight).Select
    Range("Z2").Select
    ActiveSheet.Paste
    Range("Y2").Select
    Selection.End(xlToLeft).Select
    Range("Z2").Select
    Application.CutCopyMode = False
    uc_1 = Range("A2").End(xlToRight).Column
    ActiveSheet.Cells(2, uc_1 + 1).Value = "COMENTARIOS"
    ' ActiveCell.FormulaR1C1 = "COMENTARIOS"
    Cells.Select
    Range("P1").Activate
    Cells.EntireColumn.AutoFit
    Range("P2").Select
    Selection.End(xlToLeft).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    
    
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("A3").Select
    Selection.Copy
    Application.CutCopyMode = False
    
    Sheets("SOD2").Select
    Cells.Select
    Selection.Copy
    Workbooks.Add.Worksheets(1).Paste
    ChDir "C:\Users\vinim\Desktop\macro"
    ActiveCell.FormulaR1C1 = "Ingeniero Ventas Equipos"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\vinim\Desktop\macro\Ingeniero Ventas Equipos.xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveCell.FormulaR1C1 = "Ingeniero Ventas Equipos"
    Sheets("Hoja1").Select
    Sheets("Hoja1").Name = "Ingeniero Ventas Equipos"
    ActiveWorkbook.Save
    ActiveWindow.SmallScroll Down:=-18
    Range("A2").Select
    ActiveWindow.Close
    Sheets("SOD1").Select
    Cells.Select
    'Range("A42").Activate'
    Selection.Delete Shift:=xlUp
    Cells.Select
    'Range("A42").Activate'
    Selection.Delete Shift:=xlUp
    Range("A1").Select
    Sheets("SOD2").Select
    Cells.Select
    'Range("A37").Activate'
    Selection.Delete Shift:=xlUp
    Range("A1").Select
    Sheets("DATOS1").Select
    Cells.Select
    Selection.Delete Shift:=xlUp
    ActiveWindow.SmallScroll Down:=-3
    Cells.Select
    Selection.Delete Shift:=xlUp
    Range("A1").Select
    Sheets("DATOS2").Select
    Cells.Select
    Selection.Delete Shift:=xlUp
    Range("A1").Select
    Sheets("SOD1").Select
    
    ActiveCell.Offset(1, 0).Select
      ' Next
End Sub

 

 

Analista de Respuestos.xlsx

RIESGOS VERSION FINAL_OPERACIONES.xlsx Libro1.xlsm Libro1.xlsm

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.