Se puede crear nuevos ficheros Excel mediante una macro?

Tengo un fichero con todos los datos de mis clientes, cada cliente esta agrupado y en cada uno tengo un salto de pagina.

Ahora me gustaría crear un fichero Excel para cada uno de ellos por separado pero para no ir copiando y pegando, ¿hay alguna posibilidad de crear los ficheros automáticamente mediante una macro?

1 respuesta

Respuesta
1

Revisa el siguiente artículo:

https://www.gerencie.com/dividir-datos-de-una-hoja-de-excel-en-grupos.html

Trata de adaptar la macro a tu hoja, avísame cualquier duda y con gusto la reviso.

Eso es lo que buscaba, muchas gracias.

Pero hay un problemita, no me crea todos los archivos en formato Excel.

Y otra cosa, podrían crearse los ficheros con el mismo formato que tengo en el Excel principal?

Gracias

Cómo es que no te los crea en formato excel.

Cambia esta línea de la macro

L2.SaveAs ruta & clave

por esta

l2.SaveAs Filename:=ruta & clave, FileFormat:=xlOpenXMLWorkbook

prueba y me comentas. 

También dime qué versión de excel tienes

Ahora si que va bien lo del formato, me gustaría también si el alto y el ancho de la celdas se crearan igual. Es posible? disculpa por no preguntar al mismo tiempo todo esto, pero me doy cuenta cuando ejecuto la macro.

Por otro lado, sigue sin crearme todos los fichero con el archivo Excel como le he comentado anteriormente. La versión que tengo es del 2007.

gracias.

Pero necesito ver qué datos tienes, de cuáles si crea archivo y de cuáles no. Solamente revisando los datos podría ver qué falta.

No te entiendo, los datos de como tengo montado el Excel principal te los pase el la primera imagen.

Dices:

Sigue sin crearme todos los fichero

Entonces sí te crea unos ficheros, pon imágenes de cuáles datos si te generó ficheros.

Y también pon imágenes de cuáles datos NO te generó ficheros.

En tu primera imagen solamente veo "Cuenta" y "Cuenta", si estás generando los ficheros en base a la columna, entonces solamente debería de generar el fichero "Cuenta" con 2 registros.

Lo tengo tal cual esta en el enlace que me enviaste, pero cuando ejecuto la macro solo me crea unos cuantos los otros no, como la imagen que he adjuntado. Me crea archivos con diferentes extensiones.

Pero sigues sin poner una imagen para ver tus datos.

Envíame tu archivo para ver tus datos.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “carlos esba

No puedo, es privado. Muchas gracias.

Tengo un fichero tal cual esta en el ejemplo del enlace que me enviaste. Hago todos los pasos que indicas y cuando ejecuto la macro me crea todos los archivos pero varios de ellos se crean con otro formato o extensión como en esta imagen.

 No sé si me podrás ayudar, es pero que si.

Se podría, también, que el alto y el ancho de la celda se copiaran igual?

Gracia.

Eso es lo raro, porque solamente tiene la instrucción para guardar como excel, es por eso que necesito ver los datos de tu archivo

Envíame tu archivo

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “carlos esba

Esto es lo que me aparece. Y para que lo pueda guardar en la extensión xlsx, tengo que entrar y guardar como, entonces es cuando ya se guarda correctamente.

Otra cosa, el tamaño de la celdas no son iguales que el del archivo base. Me refiero al ancho y largo de las celda. Se puede hacer algo? gracias.

¿Qué versión de excel tienes?

Activa la grabadora de macros, crea un archivo nuevo, guarda el archivo como excel xlsx, regresa a detener la grabadora de macros. Envíame el código.

Para lo del formato, tienes que copiar la hoja y pegar especial formatos.

La versión es del 2007.

Ya he esta solucionado, el problema eran los puntos, comas . En la columna clave he eliminado los puntos y comas, y ahora ya me crea todos los archivos correctamente.

Otra cuestión, si quisiera añadir mas filas en la parte de arriba, tendría que hacer alguna modificación en la macro?

Gracias.

En estas líneas de la macro:

h1.Range("A1:" & ucol & u1).AutoFilter Field:=n, Criteria1:=clave
h1.Range("A1:" & ucol & u1).Copy h21.[A1]

En esta parte : h1.Range("A1

Significa que el encabezado está en la fila 1, si quieres que el encabezado ahora se encuentre en la fila 5, por ejemplo:

Las líneas en la macro deberán quedar así:

h1.Range("A5:" & ucol & u1).AutoFilter Field:=n, Criteria1:=clave
h1.Range("A5:" & ucol & u1).Copy h21.[A1]

.

.

Perdona me he confundido. Quería decir que el encabezado fueran mas filas, en este caso se quedaría así:

Hay celdas combinadas, hay algún inconveniente?

Gracias.

Ahora el confundido soy yo. ¿Quieres qué las filas de la 1 a la 4 se copien en los nuevos ficheros?

En tu pregunta original, el encabezado estaba así:

Sin duda, se le pueden hacer adecuaciones a la macro, y con todo gusto te ayudo, valora esta respuesta.

.

En una nueva pregunta me explicas con detalle cómo están tus datos y cómo quieres los resultados.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas