Buenas.
Tengo un libro de Excel (es un ejemplo) donde hay varias hojas con datos y en la hoja "Inconsistencias" es donde quedan los datos que captura de las demás hojas.
Queda así (imagen):
Lo que necesito es que esos datos NO queden en la hoja "Inconsistencias", sino en otro libro aparte (el nombre del nuevo libro puede ser cualquiera porque ya tengo creada la opción de que el nombre del libro el usuario lo pueda guardar como desee). (La hoja "Inconsistencias" tiene que quedar con unos comentarios predeterminados que después pondré).
Éste es el código que tengo:
Sub ConsolidarInconsistencias() Dim Hoja As Worksheet, CON As Worksheet, Titulo As Range Application.ScreenUpdating = False
Set CON = Sheets("Inconsistencias")
'Traer datos con las inconsistencias que están en color amarillo CON.Range("A2:K" & CON.Range("A" & Rows.Count).End(xlUp).Row + 1).ClearContents For Each Hoja In Sheets With Hoja If Not Hoja.Name = CON.Name Then '-- Set Titulo = Nothing For y = .Cells(1, Columns.Count).End(xlToLeft).Column To 2 Step -1 If Hoja.Name Like .Cells(1, y) & "*" Then Set Titulo = .Cells(1, y) Exit For End If Next '-- If Not Titulo Is Nothing Then For x = 2 To .Cells(Rows.Count, Titulo.Column).End(xlUp).Row If .Cells(x, Titulo.Column).Interior.Color = vbYellow Then fila = CON.Range("B" & Rows.Count).End(xlUp).Row + 1 CON.Range("A" & fila).HorizontalAlignment = xlCenter CON.Range("B" & fila) = .Range("A" & x) CON.Range("F" & fila) = .Cells(Titulo.Column) CON.Range("H" & fila).Font.Color = vbRed CON.Range("H" & fila).HorizontalAlignment = xlCenter 'Traer la escala en caso que exista If .Range("B" & x).Font.Color = vbRed Then CON.Range("H" & fila) = .Range("B" & x) End If 'Fin de traer escala CON.Range("I" & fila) = .Cells(x, Titulo.Column) CON.Range("I" & fila).Interior.Color = vbYellow CON.Range("J" & fila) = .Cells(x, Titulo.Column).Offset(0, 1) End If Next End If End If End With Next 'Fin de traer datos de las inconsistencias***
'Contar errores Worksheets("Inconsistencias").Select Final = Application.CountA(Worksheets("Inconsistencias").Range("B:B")) For I = 2 To Final 'Contamos las veces que se repiten cada uno de la cantidad de errores CantidadErrores = Worksheets("Inconsistencias").Cells(I, 2).Value Worksheets("Inconsistencias").Cells(I, 1).Value = Application.CountIf(Worksheets("Inconsistencias").Range("B1:B" & Final), CantidadErrores) Next 'Fin de contar errores***
'Listar preguntas Dim cont As Long Dim ultLinea As Long Dim pregunta As Variant Dim nom_preg As Variant Dim rango As Variant
ultLinea = Sheets("Inconsistencias").Range("F" & Rows.Count).End(xlUp).Row
Set rango = Sheets("Variables").Range("A:E")
For cont = 2 To ultLinea nom_preg = Sheets("Inconsistencias").Cells(cont, 6) pregunta = Application.VLookup(nom_preg, rango, 5, False)
If IsError(pregunta) Then pregunta = 0
End If
Sheets("Inconsistencias").Cells(cont, 7) = pregunta Next cont
'Fin de listar preguntas*** '
Crear hoja aparte
Application.DisplayAlerts = False
Workbooks.Add ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Inconsistencias Consolidadas"
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Cuenta de Errores x Enc(COPIAR)"
For Each she In Worksheets
a = she.Name
If a <> "Inconsistencias Consolidadas" And a <> "Cuenta de Errores x Enc(COPIAR)" Then she.Delete
Sheets("Inconsistencias Consolidadas").Select Next
With Range("A1:K1") .Value = Array("Cantidad de Errores", "SbjNum", "Status", "Fechas", "Srvyr", "Variables", "Preguntas", "Escala", "Menciones", "Inconsistencias", "Solución de Comercial") .Font.Bold = True
End With
'Fin hoja aparte***
End Sub
En la parte del código vba donde dice "'Crear hoja aparte" ya está codificado para que me guarde el libro, con dos hojas y los encabezados que debe tener, solo necesito que en dicho libro quede guardado los datos que se capturaron en el otro libro.
Me es muy útil su ayuda. Gracias.
Adjunto el archivo de ejemplo:
| Adjunto | Tamaño |
|---|---|
| 60.79 KB |

