Excel - recorrer hojas activas para ejecutar macro

 
Vista:

recorrer hojas activas para ejecutar macro

Publicado por pere (3 intervenciones) el 28/10/2016 07:24:04
Hola a todos, llevo un mes programando una pequeña calculadora de tiempos y me he quedado atascado en la parte final donde debo recorrer las hojas una a una para listar los resultados.
Me explico: Tengo 4 hojas de calculo. A:Tiene la base de datos doonde busca los datos a calcular, B: COntiene los mismos datos traducidos al castellano, C es la pagina base que la duplico segun los listados de la pagina D.
Las hojas duplicadas de la pagina C se enumeran del 1 al..... 100. A veces tengo tres paginas, a veces 30.
Y aqui es donde tengo el problema. Tengo que traspasar los resultados del rango (A9:P209) de cada hoja a una hoja que creo llamada "Totals". He intentado recorrer las paginas con un For i to , pero algo deebo estar haciendo mal porque no me lanza el procedimiento.
Podrian ayudarme?
Necesito algo que me busque si existe la pagina (n), y si existe copie (A9:p209) a la pagiina "totals" ,
Luego busque la pagina 2, la tres, etc.....(esta es la parte que no consigo hacer funcionar)
Y finalmente se pare al no encontrar mas paginas.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

recorrer hojas activas para ejecutar macro

Publicado por JuanC (1237 intervenciones) el 28/10/2016 12:19:34
pequeño bucle que recorre las hojas del libro y muestra su nombre... (espero te sirva de algo)

1
2
3
4
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
    MsgBox ws.Name
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

recorrer hojas activas para ejecutar macro

Publicado por pere (3 intervenciones) el 28/10/2016 14:27:39
No es lo que necesito.
Me vuelvo a axplicar con lo que tengo.
Tengo escrito el siguiente codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Worksheets.Add.Name = "Totals"
 
Sheets("1").Select
Range("A9:Q209").Select
Selection.Copy
Sheets("Totals").Select
Range("A9").Select
Selection.PasteSpecial Paste:=xlPasteValues
 
Sheets("3").Select
Range("A9:Q209").Select
Selection.Copy
Sheets("Totals").Select
Range("A9").Select
Selection.PasteSpecial Paste:=xlPasteValues
 
Sheets("3").Select
Range("A9:Q209").Select
Selection.Copy
Sheets("Totals").Select
Range("A9").Select
Selection.PasteSpecial Paste:=xlPasteValues

etc,... hasta la pagina 9. Mi problema es que hoy se que tengo 9 pagina, pero mañana puedo tener 2 o 100 (que seria el maximo). No encuentro la solucion a algo parecido a esto:

1
Worksheets.Add.Name = "Totals"

Busca si existe la pagina 1. si existe haz esto:

1
2
3
4
5
6
Sheets("1").Select
Range("A9:Q209").Select
Selection.Copy
Sheets("Totals").Select
Range("A9").Select
Selection.PasteSpecial Paste:=xlPasteValues

busca si existe la pagina 2, si existe haz esto:

1
2
3
4
5
6
Sheets("2").Select
Range("A9:Q209").Select
Selection.Copy
Sheets("Totals").Select
Range("A9").Select
Selection.PasteSpecial Paste:=xlPasteValues

necesito automatizar la busqueda de las paginas i la accion de copiado para no tener que escribir 100 veces el codigo. A parte de que si la pagina no existe, me copia la primera otra vex.
Gracias por responder.

Pere
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

recorrer hojas activas para ejecutar macro

Publicado por pere (3 intervenciones) el 29/10/2016 15:04:36
Me contesto a mi mismo.
He replanteado el codigo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Crear_una_Hoja_para_todas_las_hojas()
Dim i As Integer
 
i = 1
Worksheets.Add.Name = "Totals"
ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets.Count)
Do Until i > Sheets.Count
On Error Resume Next
 
Sheets(i).Select
    Range("A9:Q209").Select
    Selection.Copy
    Sheets("Totals").Select
    Selection.Insert Shift:=xlDown
 
i = i + 1
Loop
End Sub


Ahora no consigo que a la orden Sheets(i) el curso se coloque en la pagina 1... Como puedo hacerlo?
Gracies
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar