Un archivo CSV ( comma-separated values: valores separados por comas) se puede definir como un archivo TXT, en donde los campos (valores) se encuentran separados por una coma ( , ). Así de simple, no encierran mayores misterios. Y son extremadamente útiles para el almacenamiento de grandes cantidades de datos, ya que no poseen formatos y cada caracter es un byte, lo que los convierte en algo realmente liviano y "transportable". Ejemplo sacado de Wikipedia:
987,juan,87345,10 norte 342
876,pedro,43649,8 oriente 342
123,jorge,03342,av. libertad 23
69,vicente,61560,valencia nº183
18,lorenzo,06490,sol nº 18
19,lucía,06480,luna nº 8
[+/-] Ver el resto / OcultarComo ya intuirán, son muy sencillos de importar a una hoja de cálculos, dado que esas comas nos permitirán separar los campos y colocar cada uno de ellos en una columna distinta.
El tema aquí es que Excel nos permite exportar datos hacia CSV, desde la opción "guardar como...":
Y bueno, digamos entonces que si tenemos una tabla cualquiera, la misma quedará igual que el ejemplo que les mostré extraído de Wikipedia, sin mas vueltas. Pero un lector me consulta como automatizar la tarea: ahí es donde recurriremos a las macros y estudiaremos ciertos puntos a tener en cuenta antes de realizar la exportación, ya que de no considerarlos podremos obtener mas de un error.
Como primer medida el libro a guardar no puede tener mas de una hoja. Intenten llevar a cabo dicha tarea y observarán que no resulta posible. Luego debemos especificar la ruta de guardado, junto al nombre que llevará el archivo, revisando si el mismo ya existe o no. Y si existe, dar la opción a borrarlo y así poder crear el nuevo. No son cuestiones complicadas, pero en su totalidad nos presentan un buen ejercicio para llevar adelante.
Tenemos esta tabla en Excel, dentro de una de sus hojas de cálculo:
Veamos el código, mismo que se encuentra comentado para que observen que acciones se van realizando en cada línea:
El tema aquí es que Excel nos permite exportar datos hacia CSV, desde la opción "guardar como...":
solo deberemos tener en cuenta seleccionar la opción correcta al momento de guardar.
Y bueno, digamos entonces que si tenemos una tabla cualquiera, la misma quedará igual que el ejemplo que les mostré extraído de Wikipedia, sin mas vueltas. Pero un lector me consulta como automatizar la tarea: ahí es donde recurriremos a las macros y estudiaremos ciertos puntos a tener en cuenta antes de realizar la exportación, ya que de no considerarlos podremos obtener mas de un error.
Como primer medida el libro a guardar no puede tener mas de una hoja. Intenten llevar a cabo dicha tarea y observarán que no resulta posible. Luego debemos especificar la ruta de guardado, junto al nombre que llevará el archivo, revisando si el mismo ya existe o no. Y si existe, dar la opción a borrarlo y así poder crear el nuevo. No son cuestiones complicadas, pero en su totalidad nos presentan un buen ejercicio para llevar adelante.
Tenemos esta tabla en Excel, dentro de una de sus hojas de cálculo:
y la llevaremos mediante macros hacia un archivo csv
Veamos el código, mismo que se encuentra comentado para que observen que acciones se van realizando en cada línea:
Sub MigarExcel2Csv() Dim Wsc As Object Dim Ruta, Csv As String 'antes que nada pregunto: If MsgBox("Exporta la hoja actual hacia CSV?", vbYesNo) = vbNo Then Exit Sub End If 'obtengo la ruta de acceso al escritorio de la Pc: Set Wsc = CreateObject("wscript.shell") Ruta = Wsc.specialfolders("desktop") 'ahora le pido al usuario que me brinde el nombre que 'llevará el archivo: Csv = InputBox("Ingrese el nombre del archivo a guardar:", "Excel_2_Csv") 'control de rutina: si no ingresa nada, me voy: If Trim(Csv) = "" Then MsgBox "No ha ingresado ningún valor", vbExclamation, "Sin datos" Exit Sub End If 'le agrego la extensión: Csv = Csv & ".csv" 'otro control: si el archivo ya existe en la ruta especificada, cosa 'que llevo a cabo con la función Dir(), concatenando la Ruta con el 'nombre de archivo brindado por el usuario: If Dir(Ruta & "\" & Csv) <> "" Then 'pregunto y si NO desea sobreescribir, también me voy: If MsgBox("El archivo ya existe ¿lo reemplaza?", vbYesNo, "Atención") = vbNo Then Exit Sub Else 'caso contrario, lo borro con Kill: Kill (Ruta & "\" & Csv) End If End If 'bueno, vamos a guardar esta hoja como un csv, con los datos obtenidos hasta 'el momento: Application.DisplayAlerts = False ActiveSheet.Copy ActiveWorkbook.SaveAs Filename:=Ruta & "\" & Csv, _ FileFormat:=xlCSV, CreateBackup:=False 'cierro el csv: ActiveWindow.Close Application.DisplayAlerts = True 'y aviso: MsgBox "La hoja " & ActiveSheet.Name & " fue guardada como " _ & Ruta & "\" & Csv, vbInformation 'destruyo el objeto para liberar recursos Set Wsc = Nothing End Sub
Bueno, listo el pollo. Cada vez que ejecutemos la macro sobre la hoja activa, esta se copiará a un nuevo libro y se guardará en formato Csv, con el nombre indicado. Noten que creo el objeto wscript.shell para luego tomar su propiedad specialfolders("desktop") y así averiguar la ruta de acceso al escritorio del usuario, que es donde mi lector necesita guardar los archivos. Es una buena tarea que averigüen sobre este muy muy útil objeto y todas sus propiedades, métodos y eventos, que nos serán de gran utilidad en nuestros proyectos.
Una cosa mas, especialmente para todos aquellos que se dedican a la creación de sitios web dinámicos con Php&Mysql: este ejemplo es ideal para luego "levantar" ese Csv desde MySql, o sea que con muy poco esfuerzo estaremos llevando datos de Excel hacia esa poderosa base de datos, creando una muy buena interoperabilidad entre dos plataformas muy distintas.
Les dejo el link al archivo y el agradecimiento por todos sus comentarios y mensajes que recibo en mi correo.
Suerte y cualquier duda la vemos.
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Etiquetas
Macros
Etiquetas:
Macros
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Comentarios
Publicar un comentario