Tu macro hacer para copiar SOLO la 1ª hoja

Disculpa solo ahora contestarte, ¿motivo? CANTV en Venezuela es de las mejores del mundo para repartir megas para navegación vía Internet. Horas y horas sin conexión. Te diré que bien se ejecuta, 2 detalles sencillos que no impiden lo bien ejecutable pero que quisiera poder hacer que;

Agarrar para el libro container, SOLO la 1ª hoja de cada libro. La 2ª es que mientras más libros más lento se ejecuta. Probé solo con 8 libros y en estos momentos tengo algo así como un poco más de 500 de cada lote de libros, tendría que hacerlo de ¿100 en 100? Y aun así, se pone lenta la macro. Por todo gracias y a esperar a ver que se puede hacer

1 Respuesta

Respuesta
1

Se me escapó el detalle de que solo era la primera hoja. No es difícil de cambiar ese detalle.

La respuesta está en la siguiente instrucción:

For Each shts In LibroOrigen.Worksheets
    shts.Copy After:=LibroAnidado.Worksheets(LibroAnidado.Sheets.Count)
Next shts

Esa instrucción dice que copie cada hoja del libro, solo hay que sustituirla con esta:

With LibroOrigen.
   Sheets(1).Copy After:=LibroAnidado.Worksheets(LibroAnidado.Sheets.Count)
End With

De esa manera solo copiara la hoja 1.

Esta pregunta era continuación de la anterior, podías seguir aquel hilo antes de calificarla como "útil".

Lo que quieres hacer es lento por naturaleza. Mover hojas de un libro a otro no es algo que se haga rápido y tal vez me equivoque, pero me atrevo a decir que nadie logrará hacerte una macro que haga esa tarea "rápido". (Tampoco hay muchas opciones, solo hay una manera de hacerlo)

Andy

No importa, es nueva pregunta. Gracias Andy

Quedaría así

Sub CrearAnidado(fPath As Variant, LibroAnidado As Workbook)
Dim shts As Worksheet
Dim LibroOrigen As Workbook
Set LibroOrigen = Workbooks.Open(fPath)
'Solo la 1ª hoja
With LibroOrigen
   Sheets(1).Copy After:=LibroAnidado.Worksheets(LibroAnidado.Sheets.Count)
End With
'Para todo el libro
For Each shts In LibroOrigen.Worksheets
    shts.Copy After:=LibroAnidado.Worksheets(LibroAnidado.Sheets.Count)
Next shts
LibroOrigen.Close SaveChanges:=True
End Sub

Así?

Bueno sí así, pero deberías quitar el código que copia "todas" las hojas si no no has hecho nada. Veo que aun lo tienes abajo. Le dije que lo sustituyera (borrarlo y poner el nuevo)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas