Crear reportes y guardarlos en otro archivo diferente al que contiene los datos

Tengo una macros en excel que me crea reportes de evaluaciones en las hojas del mismo archivo. Necesito que estos reportes se creen en otro archivo, y tenga la opción de elegir donde guardar el archivo creado.

la macros:

Sub informes()
'por luismondelo
Sheets("ResultadoS").Select
Range("a2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Copy
Sheets("plantilla").Range("b4").PasteSpecial Paste:=xlValues
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 16)).Copy
Sheets("plantilla").Range("c7").PasteSpecial Paste:=xlValues, Transpose:=True
Range(ActiveCell.Offset(0, 17), ActiveCell.Offset(0, 20)).Copy
Sheets("plantilla").Range("c25").PasteSpecial Paste:=xlValues, Transpose:=True
Range(ActiveCell.Offset(0, 21), ActiveCell.Offset(0, 24)).Copy
Sheets("plantilla").Range("c31").PasteSpecial Paste:=xlValues, Transpose:=True
Range(ActiveCell.Offset(0, 25), ActiveCell.Offset(0, 27)).Copy
Sheets("plantilla").Range("c37").PasteSpecial Paste:=xlValues, Transpose:=True
Range(ActiveCell.Offset(0, 28), ActiveCell.Offset(0, 31)).Copy
Sheets("plantilla").Range("c42").PasteSpecial Paste:=xlValues, Transpose:=True
Sheets("plantilla").Copy after:=ActiveWorkbook.Worksheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = Left(Range("b4").Value, 30)
Sheets("Resultados").Select
ActiveCell.Offset(1, 0).Select
Loop
Sheets("plantilla").Select
Range("b4").ClearContents
Range("c7:c22").ClearContents
Range("c25:c28").ClearContents
Range("c31:c34").ClearContents
Range("c37:c39").ClearContents
Range("c42:c45").ClearContents
Sheets("Resultados").Select
Range("a1").Select
End Sub.

Gracias por leer la preguntas.

1 Respuesta

Respuesta
1

Espero te encuentres bien.

Que tal si sacas del archivo la Hoja.

Sub Macro3()
Sheets("ResultadoS").Select
Sheets("ResultadoS").Copy
End Sub

O bien puedes copiar estas dos lineas al final de tu macro.

hola Lucas gracias por responder, he agregado el código que me sugeriste y me crea un archivo con la hoja de "resultados" pero esa hoja es mi fuente de datos de ahi se crean reportes por cada registro que hay en la hoja resultados, y estos reportes se guardan en hojas nuevas ,tantas hojas como registros, mi necesidad es que estas hojas que se generan con la macros, se guarden en otro archivo, no en el archivo que contienen la hojas "resultados" ni la hoja "plantilla" .

Espero tu gentil respuesta Lucas.

Por lo que entiendo deberías sacar la hoja Plantillas entonces.

Sub Macro3()
Sheets("Plantillas").Select
Sheets("Plantillas"").Copy
End Sub

Atentamente.

Lucas.

<div id="wrc-float-icon" style="z-index: 2147483646; left: 15px; top: 15px; width: 42px; height: 42px; background-image: url('safari-extension://com.avast.wrc-6H4HRTU5E3/ad55d5c2/images/float/green-1.png'); position: fixed; display: none;"> </div>

si también lo he hecho, pero al final me crea un archivo solo con la hoja plantilla, me das tu correo para enviarte la macros y puedas ver como se ejecuta?.

mi correo: [email protected]

Te paso 5 macros para que pegues en tu libro. Saque aportes de otros expertos para poder lograrlo.

Sub PrimerPaso()
ActiveWorkbook.Sheets(1).Activate
ActiveWorkbook.Sheets.Add.Name = "Listado"
For Each Sheet In ActiveWorkbook.Sheets
If Sheet.Name <> ActiveSheet.Name Then
Cells(Application.WorksheetFunction.CountA(ActiveSheet.Range("A:A")) + 1, 1) = Sheet.Name
End If
Next Sheet
End Sub
Sub SegundoPaso()
Sheets("Listado").Select
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Sheets("Listado").Select
Range("B1").Select
ActiveCell.FormulaR1C1 = "1"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1:B183"), Type:=xlFillDefault
Range("B1:B183").Select
End Sub
Sub CuartoPaso()
LibroBase = ActiveWorkbook.Name
Workbooks.Add
LibroReplicas = ActiveWorkbook.Name
HojasInicio = ActiveWorkbook.Sheets.Count
For i = 1 To Application.WorksheetFunction.CountA(Workbooks(LibroBase).Sheets("Listado").Range("A:A"))
For j = 1 To Workbooks(LibroBase).Sheets("Listado").Cells(i, 2)
Workbooks(LibroBase).Sheets("" & Workbooks(LibroBase).Sheets("Listado").Cells(i, 1) & "").Move After:=Workbooks(LibroReplicas).Sheets(Workbooks(LibroReplicas).Sheets.Count)
Next
Next
Application.DisplayAlerts = False
For i = 1 To HojasInicio
Workbooks(LibroReplicas).Sheets(i).Delete
Next
End Sub
Sub QuintoPaso()
Application.DisplayAlerts = False
Windows("Macro_crear_reportes.xlsm").Activate
Sheets("Listado").Select
ActiveWindow.SelectedSheets.Delete
End Sub

Atentamente.

Lucas.

<div id="wrc-float-icon" style="z-index: 2147483646; left: 15px; top: 15px; width: 42px; height: 42px; background-image: url('safari-extension://com.avast.wrc-6H4HRTU5E3/8e8e724c/images/float/green-1.png'); position: fixed; display: none;"> </div>

Gracias Lucas, ya lo agregue todo al final de mi macros inicial y corre perfecto.

También lo ejecute con los botones, tenia problemas,porque empecé con tus cinco botones y al final con el mio , me corregí haciendo lo contrario, y también ejecuto y creo los reportes en otro archivo.

Muchas Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas