** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Importación campos de fecha
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoImportación campos de fecha

 Responder Responder
Autor
Mensaje
SkaryBlondi Ver desplegable
Habitual
Habitual


Unido: 24/Octubre/2020
Localización: Asturias
Estado: Sin conexión
Puntos: 67
Enlace directo a este mensaje Tema: Importación campos de fecha
    Enviado: 10/Diciembre/2020 a las 10:31
Buenos días

Seguro que es un tema viejo, pero aunque he encontrado una solución, quería ver si hay una opción más óptima con los bailes de DIA y MES entre el formato anglosajón (MM-DD-YYYY) y el castellano (DD-MM-YYYY).

En importaciones que hago de ficheros de texto (YYYYMMDD) le suelo aplicar la siguiente conversión:

Celda o array = Format(Mid(FVto, 7, 2) & "/" & Mid(FVto, 5, 2) & "/" & Left(FVto, 4), "dd/mm/yyyy")

Y si es una celda con el formato adecuado no hay ningún problema.

Pero muchas veces son cargas masivas y traslado todos los datos a un Array antes de copiarlo en la hoja.

Si el array es del tipo variant muchas veces me baila el día con el mes y lo que suelo hacer para resolverlo es crear dos arrays, uno con los campos de fecha declarándolo como DATE y otro array con el resto de campos del tipo VARIANT.

La consulta es por ver si hay una solución más eficiente para no llevarme sorpresas en alguna importación.

Gracias


Editado por SkaryBlondi - 10/Diciembre/2020 a las 10:34
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5769
Enlace directo a este mensaje Enviado: 10/Diciembre/2020 a las 18:22
Hola SkaryBlondi.

Normalmente ese tema se resuelve con: Datos > Herramientas de datos >Texto en columnas, donde en el paso 3 debes indicar que (el campo de las fechas) se trata de Fecha con el formato MDA.


Saludos desde Tenerife.

Mi sitio_web con ejemplos Excel.
Arriba
SkaryBlondi Ver desplegable
Habitual
Habitual


Unido: 24/Octubre/2020
Localización: Asturias
Estado: Sin conexión
Puntos: 67
Enlace directo a este mensaje Enviado: 10/Diciembre/2020 a las 18:41
Gracias AnSanVal, pero no es una importación pura.

Hago una importación de un TXT, pero los datos de una fila de Excel están contenidos en varios registros del TXT, además alguno de los campos hay que calcularlos, etc.

Por todo ello, la información que importo la vuelco en un Array y que luego copio en la hoja de excel con VBA mediante:

Range("PosiciónInicialHoja").Resize(filas, campos).Value = ArrayImportado

Saludos,



Editado por SkaryBlondi - 10/Diciembre/2020 a las 18:42
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5769
Enlace directo a este mensaje Enviado: 10/Diciembre/2020 a las 23:34

Si lo quieres con VBA, y suponiendo que FVto es  20201210 (AMD).

 

Esto...

Celda o array = Format(Mid(FVto, 7, 2) & "/" & Mid(FVto, 5, 2) & "/" & Left(FVto, 4), "dd/mm/yyyy")

... no devuelve una fecha, devuelve texto (si a Excel le resulta ambiguo podria ser 12 de octubre, 10 de diciembre o lo deja en texto). 

Esto otro...

DateSerial(Left(FVto, 4), Mid(FVto, 5, 2), Right(FVto, 2))

...  si devuelve una fecha (Excel no duda) 10 de diciembre de 2020. 

Si quieres algo diferente aporta una imagen de ejemplo y lo que quieres obtener a partir del ejemplo.


Saludos desde Tenerife.

Mi sitio_web con ejemplos Excel.
Arriba
SkaryBlondi Ver desplegable
Habitual
Habitual


Unido: 24/Octubre/2020
Localización: Asturias
Estado: Sin conexión
Puntos: 67
Enlace directo a este mensaje Enviado: 11/Diciembre/2020 a las 00:01
Mil gracias AnSanVal

En el array guardaba la fecha en modo texto con el Format, pensaba que era fecha. Al declarar un array independiente como fecha forzaba la grabación como date y funcionaba, pero con esta función DateSerial que desconocía ya puedo forzar la grabación con una único array variant y evitarme lios con cambios entre día y mes.

En concreto el ejercicio que tengo en Excel es la importación de AEB19, AEB58, AEB19.14, AEB19.44 y Adeudos Sepa XML CORE y B2B y la generación de remesas de Adeudos tanto en formato texto como XML.



Saludos y podéis cerrar el tema.





Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable