Macros en excel para importar 5000 archivos csv y exportarlos también como csv

Necesito su ayuda con una macros en excel para importar 5000 archivos csv y exportarlos también como csv sin modificarlos ni cambiar su nombre en otra carpeta. Esto es importante cuando ay archivos csv dañados o con errores que otros programas como IMACROS detecta pero que son editables con excel. Por ejemplo cuando un archivo de texto .txt le cambias la extensión por .csv con winrrar. Al momento de ser exportados con excel salen limpios y sin estos posibles errores.

1 Respuesta

Respuesta

Podrías dar más detalle de lo que deseas hacer, con el hecho de importar los archivos a una hoja de calculo, creo que podría ayudarte con tu problema, pero necesito saber como quieres que se monte la información en excel.

Hola enrrique gracias por aportar. Buscando en internet encontré este código y me resulto con 500 archivos, abajo lo pongo, pero no se si será el adecuado. Estos archivos csv son de puro texto donde no tienen comas por que los removí. Son de varias líneas que incluyen saltos de línea. No son para trabajar en excel. Ejemplo:

"La historia es la ciencia que tiene como objeto de estudio el pasado de la humanidad y como método el propio de las ciencias sociales.
Se denomina también historia al periodo que transcurre desde la aparición de la escritura hasta la actualidad " y algunos archivos son mucho más extensos.

Como veras es texto simple. Cuando importas estos archivos en excel el programa automáticamente los coloca en celdas que en este caso están demás, por que lo que se necesita es solamente importarlos para enseguida exportarlos como csv tal como estaban antes. En pocas palabras convertirlos o limpiarlos de alguna manera que otros programas los puedan leer sin problemas por que todos están con defectos pues les cambié la extensión de .txt a .csv con un programa parecido a winrrar. Cuando aplique esta macro que pongo a continuación ocurrió lo que dije arriba y se exportaron a la carpeta mis documentos todos los archivos que se importaron, sin errores.

Application.DisplayAlerts = False
mio = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path & "D:\borrar"
Set fso = CreateObject("scripting.filesystemobject")
Set carpeta = fso.getfolder(ruta)
For Each fichero In carpeta.Files
If fichero = ruta & mio Then GoTo salto
If fichero = ruta & "~$" & mio Then GoTo salto2
Workbooks.Open fichero
ActiveWorkbook.SaveAs , FileFormat:=xlCSV
otro = ActiveWorkbook.Name
Workbooks(otro).Close True
salto:
Next
salto2:
End Sub

Ojalá esto le ayude a más personas que tengan el mismo problema. Por favor revísalo y dime que le falta a este código para que elimine todos los saltos de línea a todos los archivos .csv antes de ser exportados, para que cuando salgan estén todas en una sola línea. Muchas gracias otra vez, suerte.

Aun no comprendo muy del todo lo que necesitas, pero para ver si voy comprendiendo, tenias archivos .txt y cambiaste a la extensión a .csv, el TXT estaba delimitado por comas anteriormente y se las quitaste para poder subirlo en el excel, ya que, son textos de historia u contexto continuo el cual no es para manipularlo en EXCEL, sino mas bien para luego guardarlo como .csv. en ese sentido, si el archivo contiene historias, las comas no estaban demás porque son parte del mismo para generar las pausas y la compresión del texto. Pero tu sabrás porque lo eliminaste.

Si todo esto es correcto entonces sigo con la confusión de la finalidad de hacer esto, sin embargo, te paso esta posible solución a ver si te sirve para lo que requieres, en caso contrario me avisas para encontrar otra solución.

http://www.benchmarkemail.com/es/help-FAQ/answer/como-puedo-eliminar-saltos-de-linea-en-mi-archivo-excel 

Hola, muchas gracias por la información. Te explico desde otro angulo la situación, lo más importante de este proyecto no son las comas sino volver a dar el formato a miles de archivos csv que están defectuosos mediante una macros de excel importándolos y exportandolos de nuevo como csv. por lo que veo es imposible poner texto amplio dentro de una celda con este programa para poder editarlo manualmente, además al tratarse de miles de archivos no veo como una persona por más trabajadora que sea lo pueda hacer. Como no soy programador no se mucho del tema pero ya trabaje con varias macros que me resultaron bien con la ayuda de los tutoriales de distintas webs de este tipo. Con esta macros de arriba se puede hacer este trabajo por que ya lo probé con miles de archivos. Ahora el código que pongo a continuación adicional a este y que debo ponerlo en alguna parte de este, creo que es para reemplazar algunos caracteres por otros como el salto de línea:

------------------------------------------------------------------------------------

Tengo que meter el texto en una variable y aplicar esto (suponiendo que la variable se llame xx)

dim xx as string

 xx = Replace (Replace (xx, Chr(10), " "), Chr(13), " ")

------------------------------------------------------------------------------------

Pero no se exactamente como hacerlo ni para que sirve a pesar de estar revisando tutoriales de programación. Si no me entiendes lo comprendo por que no se explicar bien las cosas. Solo te pido una pista más para seguir buscando respuestas, por favor dime donde pongo este código

Y para que sirve. Muchas gracias por su ayuda y paciencia. Suerte.

Llegaste a probar el link que te pase, este entiendo que te ayudaría muchísimo con tu caso, el cual solo elimina el salto de línea con un Replace o reemplazar en toda la información que cargues al excel, lo cual posteriormente puedes exportar a .CSV.

Pedazo de código que colocaste es para reemplazar el salto de línea, al igual que lo que te indique en el link anterior, la diferencia es que uno es con Macros, y la que te facilite es mediante un simple buscar, que seria más fácil para ti manejarte con este, porque seria lo mismo para ambos casos.

Cualquier otro detalle no dudes en escribir.

Hola, si, ya revise el vinculo, pero como me explicas es para trabajar uno por uno buscando y reemplazando, pero como tengo miles de archivos (23,000 aproximadamente) no los puedo hacer uno por uno. Solo te pido por favor que copies y pegues el primer código y le aumentes en su respectivo lugar el segundo que esta arriba:

------------------------------------------------------------------------------------

Tengo que meter el texto en una variable y aplicar esto (suponiendo que la variable se llame xx)

dim xx as string

 xx = Replace (Replace (xx, Chr(10), " "), Chr(13), " ")

------------------------------------------------------------------------------------

Lo estoy intentando con tutoriales de macros en excel pero no entiendo, las fórmulas son tan variadas que ya empecé a verlas verde. Gracias otra vez, suerte.

Uhm, ya te voy comprendiendo un poco más, tu quieres subir todos o cierta cantidad de los 23,000 archivos y hacerles esa limpieza que indicas, ahora esta es mi pregunta para ver si te ayudo con ello.

1. ¿Cuántos líneas promedio tiene cada archivo (el que más tenga)?

2. ¿Son los 23,000 archivos que equivalen a un libro de historia o de estos 23,000 archivos estarán seccionados por diferentes historias que serian varios "libros"?

Tengo una macro que entiendo te puede ayudar, pero para ello depende la cantidad de líneas que tenga cada archivo y adicionalmente si los 23,000 archivos son de una misma historia.

Paso explicarte como funciona la macro que tengo, solo debes de colocar todos los archivos en una misma carpeta, dependiendo de si son los 23,000 archivos de la misma historia o de varias, ¿Por qué?, la macro monta en el excel todos los archivos que se encuentran la carpeta al mismo tiempo, si son por Ej. supongamos que son 2,000 archivos por historia colocas estos 2,000 en una carpeta y cuando ejecutes la macro te los montara todos en el archivo de excel, ahora bien ¿Por qué la pregunta de las líneas?, excel tiene un problema y es que cuando montas información en el, dependiendo de la version de excel que tengas cuando quieras guardar el archivo como .CSV, te guardara 65,000 líneas o más según su version, en ese sentido, según la cantidad multiplicado por la cantidad de archivos por historia y la version de office, te dará que tantos archivos puedes subir.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas