Copiar una hoja varias veces y coger datos de otra

Cerrado
ADRIN - 23 jul 2018 a las 17:22
Hola, buenas tardes, me llamo Adrián y soy profesor de EF. Estoy diseñando una herramienta de excel para hacer un seguimiento de todos mis alumnos. Podríais ayudarme??

Esto es lo que tengo ya desarrollado:

Tengo 1hoja para la evaluación, una hoja de asistencia para cada mes, una hoja para las notas de cada examen, una hoja para las notas de los tests físicos, 1 hoja para las notas de los trabajos... Y una hoja con el modelo de ficha de alumno con los datos que quiero que se reflejen de cada uno de ellos y que se encuentran en las hojas anteriormente mencionadas. En dicha hoja hay celdas en las que recojo los datos de evaluación (=Avaliación!I10), las faltas de asistencia (=Mar!AJ3), notas de exámenes (='Exame 1'!C4), de trabajos (='Traballo 1'!C4)...

En la ficha del alumno, tengo una autoforma (que llamo Novo Alumno) a la que le quiero asignar una macro para que me copie de una vez dicha hoja tantas veces como alumnos voy a tener a lo largo del curso (normalmente entre 18 y 30). Lo que necesito es una macro que cuando pinche en la autoforma haga lo siguiente:

1. Copiar la hoja de la ficha del alumno al final de todas las hojas del excel tantas veces como le indique y las coloque al final de todas las hojas, renombrándolas con el número de alumno del 1 al nº de hojas que haya indicado.

2. En cada hoja copiada y renombrada, en las celdas en las que se recogen datos de otras hojas (de evaluación, faltas, exámenes...), se elijan los datos correspondientes al alumno.

Tengo este comando para hacer más o menos lo primero, pero los datos que copia son siempre los mismos, y necesito que se correspondan con cada alumno, pues cambiar manualmente la fórmula en cada celda me llevaría mucho tiempo pues manejo muchos cursos y número de alumnos:

Sub NovoAlumno()
'
' NuevoAlumno Macro
'

'

Dim I As Long
Dim xNumber As Integer
Dim xName As String
Dim xActiveSheet As Worksheet
On Error Resume Next
Application.ScreenUpdating = False
Set xActiveSheet = ActiveSheet
xNumber = InputBox("1")
For I = 1 To xNumber
xName = ActiveSheet.Name
xActiveSheet.Copy After:=ActiveWorkbook.Sheets(xName)
ActiveSheet.Name = "Al" & I
Next
xActiveSheet.Activate
Application.ScreenUpdating = True

End Sub

Muchas gracias de antemano por vuestra ayuda!!

Consulta también: