Discussion:
Guardar cada hoja de excel por separado con el nombre de la hoja
(demasiado antiguo para responder)
Halixman
2008-02-22 23:36:01 UTC
Permalink
Tengo un libro con 50 hojas. Quiero guardar cada hoja de excel por separado
en un nuevo archivo. Cada nuevo archivo.xls deberá tener como nombre el
nombre de la hoja.

Por ejemplo: Si la hoja 40 se llama Costos, quiero que se genere el archivo
Costos.xls, pero ese archivo solo contenga esa hoja.
Héctor Miguel
2008-02-23 19:55:17 UTC
Permalink
hola, 'anonimo/a' !
Tengo un libro con 50 hojas. Quiero guardar cada hoja de excel por separado en un nuevo archivo.
Si la hoja 40 se llama Costos, quiero que se genere el archivo Costos.xls, pero ese archivo solo contenga esa hoja.
suponiendo que no habra problemas de nombres duplicados entre las hojas y/o libros ya existentes -?-
y asumiendo que cada nueva hoja-libro se puede guardar en el mismo directorio que el original -?-
prueba con una macro +/- como la siguiente (y la ejecutas desde tu libro con las 50 -o mas- hojas)...

Sub Separa_hojas()
Application.ScreenUpdating = False
Dim n As Integer
For n = 1 To Worksheets.Count
Worksheets(n).Copy
ActiveWorkbook.SaveAs ActiveSheet.Name
ActiveWorkbook.Close
Next
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Halixman
2008-02-24 00:47:02 UTC
Permalink
Ok. Funcionó. El problema es que está salvando como xlsx, pero mis clientes
tienen Office 2003, así que quisiera que grabe como xls y no como xlsx. Ya
proble poniendo en las opciones de guardar por defecto xls, pero no funciona.

Habría una forma de que el macro fuerce a que se grabe como xls?... no
sé... como Fileformat=xls... donde iría esta línea?
Héctor Miguel
2008-02-24 01:12:53 UTC
Permalink
hola, (...) ???
... El problema es que esta salvando como xlsx, pero mis clientes tienen Office 2003
asi que quisiera que grabe como xls y no como xlsx. Ya proble poniendo en las opciones de guardar por defecto xls, pero no funciona.
Habria una forma de que el macro fuerce a que se grabe como xls?... no se... como Fileformat=xls... donde iria esta linea?
si estas usando la version 2007 para separar las hojas...
cambia la instruccion con el SaveAs e incluye el formato de compatibilidad con las versiones 97 a 2003

de:
ActiveWorkbook.SaveAs ActiveSheet.Name

a:
ActiveWorkbook.SaveAs Filename:=ActiveSheet.Name, FileFormat:=xlExcel8

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Elmer
2008-04-24 17:37:00 UTC
Permalink
Si cumple con su función, separa las hojas, las guarda según el nombre de
cada hoja.

Pero el problema es que hay celdas conteniendo mucho texto y las copia solo
con 255 caracteres como máximo.
Héctor Miguel
2008-04-24 20:16:07 UTC
Permalink
hola, Elmer !
Si cumple con su funcion, separa las hojas, las guarda segun el nombre de cada hoja.
Pero el problema es que hay celdas conteniendo mucho texto y las copia solo con 255 caracteres como maximo.
al copiar hojas entre libros, las celdas con mas de 255 caracteres pasaran TRUNCADAS :((
la unica solucion (hasta donde se) es...
-> seleccionar TODAS las celdas de la hoja original
-> hacer un copy y...
-> pegar (p.e. todo, o solo los valores, o ???) a la hoja nueva
el haber copiado la hoja te preserva los formatos y demas monerias que hubieras personalizado

saludos,
hector.

p.d. revisa:
XL2000: Error de "255 caracteres de celda" cuando el error copia hoja de calculo
http://tinyurl.com/4gbmy (traduccion automatica al espanol)
XL2000: "255 Characters in Cell" Error When Copying Worksheet
http://tinyurl.com/5upbf (version original -ingles-)
Elmer
2008-04-24 17:43:01 UTC
Permalink
Post by Héctor Miguel
suponiendo que no habra problemas de nombres duplicados entre las hojas y/o
libros ya existentes -?-
Post by Héctor Miguel
y asumiendo que cada nueva hoja-libro se puede guardar en el mismo directorio que el original -?-
prueba con una macro +/- como la siguiente (y la ejecutas desde tu libro con las 50 -o mas- hojas)...
Sub Separa_hojas()
Application.ScreenUpdating = False
Dim n As Integer
For n = 1 To Worksheets.Count
Worksheets(n).Copy
ActiveWorkbook.SaveAs ActiveSheet.Name
ActiveWorkbook.Close
Next
End Sub
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Si cumple con su función, separa las hojas, las guarda según el nombre de
cada hoja.

Pero el problema es que hay celdas conteniendo mucho texto y las copia solo
con 255 caracteres como máximo.

Como lo puedo solucionar???
r***@gmail.com
2013-11-27 16:40:41 UTC
Permalink
A mi me funciono de las mil perlas Gracias, aun que el aporte ya es un poco viejo.
r***@gmail.com
2013-11-27 18:38:26 UTC
Permalink
Solo tengo un problema no guarda bien los archivos solo guarda una hoja del libro de excel
h***@gmail.com
2016-02-26 14:47:48 UTC
Permalink
muchas gracias Héctor, de todos los que habían en internet fue el único que funciono perfecto.
Nelson Bova
2020-10-19 14:36:53 UTC
Permalink
Muchas gracias, en 2020 sigue funcionando bien, el único detalle es que me deja los archivos en la carpeta Documentos y no dónde está el Excel original (que es una carpeta compartida). Pero igual funciona muy bien, muchas gracias por el aporte. Saludos.
Continúe leyendo en narkive:
Loading...