Imprimir página | Cerrar ventana

Importación campos de fecha

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85670
Fecha de impresión: 20/Abril/2021 a las 11:28


Tema: Importación campos de fecha
Publicado por: SkaryBlondi
Asunto: Importación campos de fecha
Fecha de publicación: 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



Respuestas:
Publicado por: AnSanVal
Fecha de publicación: 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 http://achinet.mvp-access.es/" rel="nofollow - sitio_web con ejemplos Excel.


Publicado por: SkaryBlondi
Fecha de publicación: 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,



Publicado por: AnSanVal
Fecha de publicación: 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 http://achinet.mvp-access.es/" rel="nofollow - sitio_web con ejemplos Excel.


Publicado por: SkaryBlondi
Fecha de publicación: 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.








Imprimir página | Cerrar ventana