2012-07-12 20 views
15

Este es el código im VBA usando para tratar de agregar una nueva hoja al último lugar en el libroAdición de hojas hasta el final del libro en Excel (método normal no funciona?)

mainWB.Sheets.Add(After:=Sheets(Sheets.Count)).Name = new_sheet_name 

vi esto en una pregunta similar en este sitio. No funciona.

Hago esto en un bucle y cada hoja se agrega a la segunda posición en las hojas. Hay 2 hojas que están permanentemente allí (información y resumen) y luego me preceden a añadir más 5 llamado "prueba" del 1 al 5. Siempre termino con las hojas en este orden:

Info, sheet5, sheet4, sheet3, sheet2, sheet1, Summary 

Pero lo que quiero/esperaba era:

Info, Summary, sheet1, sheet2, sheet3, sheet4, sheet5 

(el bucle hace producirlos en el orden esperado por lo que el problema no está ahí.)

Si intercambiar las hojas de resumen y la información antes de empezar entonces son en los lugares opuestos cuando termino.

¿Qué estoy haciendo mal?

Respuesta

23

probar este

mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name 
+0

bien, eso funciona ... pero solo estaba usando un libro de trabajo en primer lugar, entonces ¿por qué estaba causando un problema? – Jacxel

+0

Si no me equivoco, tiene al menos 2 WB abiertos. ¿Puedes verificarlo? ¿A qué WB se refiere 'mainWB'? –

+0

oh espera ... no importa, forgor los archivos CSV que la macro estaba abriendo. Gracias ... otra vez ... parece que has respondido al 50% de mis preguntas XD – Jacxel

5
mainWB.Sheets.Add(After:=Sheets(Sheets.Count)).Name = new_sheet_name 

probablemente debería ser

mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name 
+0

@Siddharth - ¡vencerme! –

+0

+ 1 Sin embargo, para publicar al mismo tiempo :) –

+0

Tenía 55 segundos de retraso. – danielpiestrak

1

Asegúrese de calificar totalmente sus hojas de cuaderno de trabajo con las que se hacen referencia!

mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name 
1

Un error común es

mainWB.Sheets.Add(After:=Sheets.Count) 

que conduce a error 1004. Aunque no está claro en absoluto de la documentación oficial, resulta que el parámetro 'Después' no puede ser un número entero, debe ser una referencia a una hoja en el mismo libro de trabajo.

Cuestiones relacionadas