- La macro agregará una hoja con el nombre Maestro a su libro de trabajo y copiará las celdas de cada hoja de su libro de trabajo en esta hoja de trabajo.
- La primera macro realiza una copia normal y la segunda macro copia los valores.
- Los subwoofers de la macro utilizan las siguientes funciones, la macro no funcionará sin las funciones.
Sub CopyFromRow () Dim sh As Worksheet Dim DestSh As Worksheet Dim shLast As Long Dim Last Tan Long If SheetExists ("Master") = True Then MsgBox "La hoja Master ya existe" Salir Sub End If Application.ScreenUpdating = False Establecer DestSh = Worksheets.Add DestSh.Name = "Master" para cada sh En ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) shLast = LastRow (sh) sh.Range ( sh.Rows (3), sh.Rows (shLast)). Copiar DestSh.Cells (Último + 1, 1) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyFromRowValues () Dim sh As Worksheet Atenuar DestSh As Worksheet Dim shLast As Long Dim Last Tan Long If SheetExists ("Master") = True Then MsgBox "La hoja maestra ya existe" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" For each sh En ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) shLast = LastRow (sh) Con sh.Range (sh.Rows (3), sh.Rows (shLast)) DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Value = .Value End With End If End If Next Application.ScreenUpdating = True End Sub Función LastRow (sh As Worksheet) En caso de error Reanudar Siguiente LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas , _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Row On Error GoTo 0 Finalizar Función Función Lastcol (sh As Worksheet) On Error Resume Next Lastcol = sh.Cells.Find (What: = " * ", _ Después: = sh.Range (" A1 "), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Column On Error Ir a 0 Función de fin de función SheetExists (SName como cadena, _ ByVal opcional WB como libro de trabajo) Como booleano en caso de error Continuar siguiente si WB no es nada Entonces establecer WB = ThisWorkbook SheetExists = CBool (Len (Sheets (SName) .Name)) Fin de función