Pregunta

Tengo una aplicación VB que extrae datos y crea 3 archivos CSV (a.csv, b.csv, c.csv). Luego uso otra hoja de cálculo de Excel (import.xls) para importar todos los datos de los archivos CSV anteriores a esta hoja.

El archivo

import.xls tiene una macro que abre los archivos CSV uno por uno y copia los datos. El problema al que me enfrento es que las fechas en los archivos CSV se almacenan como mm / dd / aaaa y esto se copia como está en la hoja de Excel. Pero quiero la fecha en formato dd / mm / aaa.

Cuando abro cualquiera de los archivos CSV manualmente, las fechas se muestran en el formato correcto (mm / dd / aaaa). ¿Alguna idea de cómo puedo resolver este problema?

¿Fue útil?

Solución

Puede usar la función Formato VBA:

Format(DateText, "dd/mm/yyyy")

Eso lo formateará como quiera.

Para una solución más permanente, intente cambiar su configuración regional en Windows, Excel lo usa para su formato de fecha.

Inicio - > Configuración - > Panel de control - > Opciones regionales

Asegúrese de que el idioma esté establecido en lo que sea apropiado y que la configuración de la fecha sea la que desea

Otros consejos

Cuando me encuentro con este problema, generalmente escribo las fechas como aaaa-mm-dd que Excel interpretará sin ambigüedad.

En primer lugar, todas las otras respuestas son buenas, pero hay más información que puede ser útil

Un archivo CSV solo contiene texto. Es decir, los datos no están en formato de fecha sino en formato de texto. Entonces, cuando abre un archivo CSV en Excel, Excel interpreta de manera predeterminada esos datos por usted. No tiene que hacerlo Puede forzarlo a dejarlo como texto, o como lo menciona Mark, puede agregar código a su macro de importación que lo altere por usted. Si desea un proceso automatizado, esta es la mejor solución. Simplemente agregue el código en VBA a la macro que aplica el formato de fecha requerido a la columna con los datos de fecha. Alternativamente, puede hacerlo manualmente después de abrir el archivo y pegar los datos seleccionando la columna usted mismo y cambiando el formato. Puede personalizar los formatos de número (elija personalizado) y luego escribirlo usted mismo. Por ejemplo, dd / mm / aaaa.

Tuve un problema similar y lo resolví así, esencialmente es la opción 'todo lo anterior'

  1. Con formato (fecha, 'dd-mmm-aaaa') convertir la fecha al formato 2-3-4 por ejemplo, 01-agosto-2008, de ninguna manera una computadora errores 01-ago para el 08-ene :-)
  2. Desde copiar esto en excel lo revierte automáticamente a formato de fecha / hora, convierta el resultado a una cadena usando cstr en el funcionar en 1
  3. Formatee las celdas en las que la fecha se copia como texto (si no lo hace, de cabeza gruesa como lo es Excel, lo hará convertirlo nuevamente a fecha / hora nuevamente
  4. Guarde la hoja como un archivo csv y abrir en el bloc de notas para confirmar que tiene trabajado

Algunas personas pueden decir que es excesivo, pero es mejor estar seguros, que hacer que un usuario me llame dentro de un año y me diga que está haciendo algo extraño con la fecha

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top