Guardar en formato CSV separado por columnas

¿Podrían ayudarme con este problemita?

Acá en chile existe una página del gobierno que pide subir una lista de trabajadores, pero el archivo debe estar en formato CSV pero además separado por columnas (igual que un excel normal).

En forma manual puedo guardarlo separado por columnas, al cerra el archivo me aparece un cuadro de dialogo y me pregunta si quiero mantener el formato y perder cierta compatibilidad, pero se acepta y listo... El problema es que al automatizar la operación, el archivo CSV se guarda en su formato predeterminado que es separado por comas y la página a la cual debo subirlo no me acepta el archivo.

Si pudieran ayudarme...

1 respuesta

Respuesta
1

H o l a:

No encuentro cuál es el formato "separado por columnas"

¿Qué versión de excel tienes?

Puedes poner una imagen donde muestres cuál es el formato "separado por columnas"

O envíame 2 archivos: un ejemplo de archivo de excel y el archivo en csv tal y como lo necesitas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Luis Barrales” y el título de esta pregunta.

Dante... primero que todo te detallo el problema... la dirección del trabajo de chile, exige una lista de trabajadores desvinculados en este formato, CSV pero delimitado por tabulación o por columnas, en realidad ese formato no existe de forma predeterminada en excel, solo el delimitado por comas.

Pero... si creo un nuevo excel y lleno sus campos, de manera normal, como un excel común y corriente, puedo guardar el archivo en formato CSV sin perder el formato Excel. (Me pregunta al cerrar el archivo si quiero mantener el formato, aunque pierda compatibilidad, porque no lo guardará separados por coma) entonces el archivo me queda con extensión CSV pero con formato normal de excel.

En cambio... si yo lo hago de manera automatizasa, con macro... guardando el archivo en formato CSV lo hace delimitando el texto por "comas"... en la imagen puedes ver la diferencia entre un formato y otro...

Las líneas 2 y 3 corresponde a como queda guardado automáticamente y la línea 1, muestra como debería quedar toda la hoja.

Te envío de todas maneras los archivos a tu correo... para que puedas ayudarme.

Saludos y muchas gracias por tu tiempo!

El archivo con formato csv es guardado con coma "," y tu lo necesitas con punto y coma ";"

Utiliza el parámetro Local ejemplo:

    Windows("machasa1.xlsx").Activate
    ruta = ThisWorkbook.Path & "\"
    nomb = "macha"
    ActiveWorkbook.SaveAs Filename:=ruta & nomb & ".csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Lo que pasa es que el parámetro Local, por default es false, para que tome le parámetro de la configuración de tu país, tienes que poner Local:=True

Referencia: https://msdn.microsoft.com/es-es/library/office/ff841185.aspx 


:)
S aludos. D a n t e A m o r. Recuerda valorar la respuesta. G r a c i a s
;) 

Gracias nuevamente... Pero lo que necesito es que el archivo quede con extensión CSV, pero con la apariencia de un Excel normal, Así como la fila 1 de la imagen, filas y columnas. En cambio, por defecto el CSV separa por "comas", como las filas 2 y 3 de la imagen. Saludos

Es lo que intenté explicarte, pero ya veo que no fue suficiente.


Para que veas la diferencia entre un archivo y otro, no abras los archivos con excel, abre los archivos con el bloc de notas

El archivo1 :

El archivo2:

Si te fijas bien, la única diferencia entre un archivo y otro es el separador de columnas.


Si utilizas el siguiente código el archivo se guarda con el separador ","

    ActiveWorkbook.SaveAs _
        Filename:=ruta & nomb & ".csv", _
        FileFormat:=xlCSV, _
        CreateBackup:=False

Pero si al código anterior le agregas el parámetro Local:=True, el archivo se guarda con el separador ";"

    ActiveWorkbook.SaveAs _
        Filename:=ruta & nomb & ".csv", _
        FileFormat:=xlCSV, _
        CreateBackup:=False, _
        Local:=True

Entonces vas a tener el archivo con extensión CSV y con separador de punto y coma ";" a lo que tu llamas: "con la apariencia de un Excel normal"


Prueba la macro que te estoy enviando, te va a generar el archivo con extensión CSV, luego abres el archivo con excel y tendrás tu archivo con "apariencia de un excel normal"


Si tienes dudas, pon tu macro y le agrego el parámetro Local:=True para automatizar la operación.


:)
S aludos. D a n t e A m o r. Recuerda valorar la respuesta. G r a c i a s
;) 

Dante...  Te envié el archivo, no consigo hacer la separación por ";"... 

Muchas gracias  (Y) 

Tienes el parámetro en False:

l2.SaveAs Filename:=escritorio & fini & guion & nbrelibro & guion & mes & guion & ano & csv, FileFormat:=xlCSV, CreateBackup:=False, Local:=False

Como te comenté desde el principio, lo tienes que poner en True 

l2.SaveAs Filename:=escritorio & fini & guion & nbrelibro & guion & mes & guion & ano & csv, FileFormat:=xlCSV, CreateBackup:=False, Local:=True

Maestro... Ese valor quedó así después de hacer varias pruebas, con true, con false...  Revisé la configuración regional y el separador de listas es ";"  pero nada pasa...  

En tu formulario tienes varias saveas no pusiste Local:=True en todas:

l2.SaveAs Filename:=escritorio & fini & guion & nbrelibro & guion & mes & guion & ano & csv, FileFormat:=xlCSV


Otra cosa que noté en tu programa es lo siguiente:

l2.SaveAs Filename:=escritorio & fini & guion & nbrelibro & guion & mes & guion & ano & csv, FileFormat:=xlCSV, Local:=True    
l2.Activate
ActiveWorkbook.Close savechanges:=True

Después de guardar el archivo, lo activas y lo guardas, ya no debes guardarlo, solamente cierra el archivo:

l2.SaveAs Filename:=escritorio & fini & guion & nbrelibro & guion & mes & guion & ano & csv, FileFormat:=xlCSV, Local:=True
l2.close

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas