combinar varias hojas en una sola
Publicado por amiau (1 intervención) el 16/01/2020 23:26:41
Hola,
Necesito su ayuda para encontrar el error en el código de una macro para combinar varias hijas en una sola.
Cada hoja tiene un cuadro con la misma estructura pero diferentes datos, los cuales para poderlos trabajar debo poner uno debajo del otro. Los datos son de texto, no se debe hacer calculos entre si ni nada. Encontré una macro en internet que aparentemente hacia lo que necesitaba, pero no arroja los datos completos ya que en los cuadros se tienen algunas celdas vacias y no jala la data completa, ademas me jala tambien los encabezados de cada hoja. Adjunto el codigo.
Necesito su ayuda para encontrar el error en el código de una macro para combinar varias hijas en una sola.
Cada hoja tiene un cuadro con la misma estructura pero diferentes datos, los cuales para poderlos trabajar debo poner uno debajo del otro. Los datos son de texto, no se debe hacer calculos entre si ni nada. Encontré una macro en internet que aparentemente hacia lo que necesitaba, pero no arroja los datos completos ya que en los cuadros se tienen algunas celdas vacias y no jala la data completa, ademas me jala tambien los encabezados de cada hoja. Adjunto el codigo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Sub consolidar()
'Consolida diferentes hojas de un mismo libro en una hoja resumen
'Toma en cuenta los encabezados de cada una de las hojas
'La macro es adaptado de Ron de Bruin 'https://www.rondebruin.nl/
Dim hoja As Worksheet
Dim hojaDestino As Worksheet
Dim rangoCopiado As Range
Dim filaInicio As Long
Dim nombreHojaConsolidado As String
Dim ultimaFilaDestino As Long
Dim ultimaColumna As Long
Dim ultimaFilaOrigen As Long
nombreHojaConsolidado = "Consolidado" 'cambiar el nombre de la hoja de consolidados si es necesario
'Parámetros para acelerar la macro
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
'Borrar la hoja de consolidados (en el caso de que existiera)
On Error Resume Next
ActiveWorkbook.Worksheets(nombreHojaConsolidado).Delete
'Crear hoja de consolidados
Set hojaDestino = ActiveWorkbook.Worksheets.Add(After:=Sheets(Sheets.Count))
hojaDestino.Name = nombreHojaConsolidado
filaInicio = 1 'fila de inicio después del encabezado
For Each hoja In ActiveWorkbook.Sheets
If hoja.Name <> hojaDestino.Name Then
ultimaFilaOrigen = hoja.Cells(hoja.Rows.Count, "A").End(xlUp).Row
ultimaColumna = hoja.Cells(1, hoja.Columns.Count).End(xlToLeft).Column
Set rangoCopiado = hoja.Range(hoja.Rows(filaInicio), hoja.Rows(ultimaFilaOrigen))
ultimaFilaDestino = hojaDestino.Cells(hojaDestino.Rows.Count, "A").End(xlUp).Row
rangoCopiado.Copy
With hojaDestino.Cells(ultimaFilaDestino + 1, "A")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
hojaDestino.Cells(ultimaFilaDestino + 1, ultimaColumna + 1).Resize(rangoCopiado.Rows.Count).Value = hoja.Name
End If
Next hoja
hojaDestino.Range("A1").Select
'Restaurar parámetros de la aplicación
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
End Sub
Valora esta pregunta


0