............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

crear con macros de excel, reportes sucesivos y guardarlos en hojas del mismo archivo

Ver el tema anterior Ver el tema siguiente Ir abajo

crear con macros de excel, reportes sucesivos y guardarlos en hojas del mismo archivo

Mensaje por lander391 el Vie Ago 24, 2012 2:13 pm

Tengo una macros en excel que me jala datos de un registro (hoja1) aun formato de reporte (hoja2), he logrado jalar los datos, pero solo para el primer registro, necesito crear reportes igual al numero de registros y guardarlos en las hojas del mismo archivo, con nombre igual a la primera columna del registro (es decir el nombre).
le envio esta es la macros, por si no adjunta el archivo:

Sub promedio_evaluacion()
n = 74
Worksheets(1).Activate
'metodologia
For f = 2 To 3
Sheets(2).Cells(4, 2) = Sheets(1).Cells(f, 1) 'nombre del docente
For c = 2 To 32
If c < 18 Then
Sheets(2).Cells(c + 5, 3) = Sheets(1).Cells(f, c) ' metodologia

ElseIf 17 < c And c < 22 Then
Sheets(2).Cells(c + 7, 3) = Sheets(1).Cells(f, c) 'evaluacion

ElseIf 21 < c And c < 26 Then
Sheets(2).Cells(c + 9, 3) = Sheets(1).Cells(f, c) ' consejeria

ElseIf 25 < c And c < 29 Then
Sheets(2).Cells(c + 11, 3) = Sheets(1).Cells(f, c) 'comunicacion

ElseIf 28 < c And c < 33 Then
Sheets(2).Cells(c + 13, 3) = Sheets(1).Cells(f, c) ' respeto y cordialidad
End If

Next c
Next f

End Sub

como les comente me falta, la parte donde se guarda cada reporte (n entotal) en "n" hojas del mismo archivo


agradecere inmensamente su apoyo.

gracias.
Archivos
Macro_crear reportes.xlsm muchas graciasNo tienes los permisos para descargar los archivos.(44 KB) Descargado 89 veces

lander391

Masculino Cantidad de envíos : 1
Edad : 33
Ciudad - Pais : lima-peru
Version de Excel : 2010
Fecha de inscripción : 24/08/2012

Volver arriba Ir abajo

Re: crear con macros de excel, reportes sucesivos y guardarlos en hojas del mismo archivo

Mensaje por moises melgar el Mar Sep 11, 2012 11:25 pm

Buenas Noches Sr lander391
"n" hojas del mismo archivo.
La macro no es varriable es decir que si tiene mas de 74 registros pues.... solo jalara los primeros 74

Lo que pides claro que lo respondere, mi version es 2007 pero llego a suponer que funcionara igual en 2010

para que jale el numero de registros sin importar cuantos sean:
sustituir:
Código:
n = 74
por:
Código:
Hoja1.Range("A" & Rows.Count).End(xlUp).Row - 1

"Hoja1.Range("A" & Rows.Count).End(xlUp).Row" representa la ultima celda con datos de la columna "A"
Ahora para que copie la hoja de resultados y el nombre de la hoja sea el nombre del Docente

entre:
Código:
Next c
Next f
Colocar:
Código:
Sheets("Resultados").Select
Sheets("Resultados").Copy Before:=Sheets(Sheets.Count)
ActiveSheet.Name = Left(Hoja1.Range("A" & f).Value, 31)

Left(........,31) es la version VBa de =izquierdo(..,31) por que el nombre de una hoja solo me permite hasta 31 letas o numeros
esto ocacionara que por cada Docente se cree una copia de la hoja resultado con el nombre del docente.

Finalmente esto ocacionara que se mire el procedimiento de copiado de las hojas, para aumentar la velocidad de la macro:
despues de:
Código:
Sub promedio_evaluacion()
colocar:
Código:
Application.ScreenUpdating = False

Esto ocacionara que el proceso de la macro no se observe, es decir no se actualiza la pantalla, por lo que ahorra significativamente el tiempo de ejecucion de la macro.

Quedaria algo asi:
Código:
Sub promedio_evaluacion()

Dim n, prom_metodologia, prom_evaluacion, prom_consejeria, prom_comunicacion, prom_respeto As Integer
Application.ScreenUpdating = False
Worksheets(1).Activate
'metodologia
For f = 2 To Hoja1.Range("A" & Rows.Count).End(xlUp).Row - 1
    Sheets(2).Cells(4, 2) = Sheets(1).Cells(f, 1) 'nombre del docente
  For c = 2 To 32
    If c < 18 Then
      Sheets(2).Cells(c + 5, 3) = Sheets(1).Cells(f, c)  ' metodologia
    ElseIf 17 < c And c < 22 Then
        Sheets(2).Cells(c + 7, 3) = Sheets(1).Cells(f, c)  'evaluacion
    ElseIf 21 < c And c < 26 Then
      Sheets(2).Cells(c + 9, 3) = Sheets(1).Cells(f, c) ' consejeria
    ElseIf 25 < c And c < 29 Then
      Sheets(2).Cells(c + 11, 3) = Sheets(1).Cells(f, c) 'comunicacion
    ElseIf 28 < c And c < 33 Then
      Sheets(2).Cells(c + 13, 3) = Sheets(1).Cells(f, c) ' respeto y cordialidad
    End If
 Next c
 Sheets("Resultados").Select
 Sheets("Resultados").Copy Before:=Sheets(Sheets.Count)
 ActiveSheet.Name = Left(Hoja1.Range("A" & f).Value, 31)
 Next f

End Sub
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: crear con macros de excel, reportes sucesivos y guardarlos en hojas del mismo archivo

Mensaje por nathalie el Miér Nov 26, 2014 2:05 pm

Hola, una consulta, si yo tengo una table de datos, y se van ingresando dia a dia mas datos..
yo quiero solo generar hojas de reportes de los datos que vaya cargando diariamente, como harai esa macro?

nathalie

Femenino Cantidad de envíos : 1
Edad : 24
Ciudad - Pais : peru
Version de Excel : 2010
Fecha de inscripción : 26/11/2014

Volver arriba Ir abajo

Re: crear con macros de excel, reportes sucesivos y guardarlos en hojas del mismo archivo

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.