Skip to main content
Announcements
NEW Customer Portal: Initial launch will improve how you submit Support Cases. FIND OUT MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
igutierrezp
Contributor II
Contributor II

Seleccionar en Script ultimo Excel desde una carpeta

Estimados, 

necesito cargar un archivo excel desde el script los cuales se encuentran en una carpeta en red.

el problema es que el archivo cambia el nombre cada dia por la fecha y hora que contiene.

no me sirve poner * antes del (Fecha y hora) por que me duplica los datos que están dentro de los excel.

ejemplo:

excel.PNG

Saludos.

 
2 Replies
joseph_morales
Creator III
Creator III

Hola @igutierrezp ,

Puedo entender que lo único que cambia del nombre del archivo es la fecha y hora,  si el resto se mantiene puedes crear una variable que calcule la fecha actual  con el formato del nombre del archivo (si es que cada día se genera el archivo)  e ignorar la hora. por ejemplo:

LET vFecha = Capitalize(date(today(),'MMM DD, YYYY'));

En la parte de la carga de datos:

Tabla:
LOAD
*
FROM [lib://AttachedFiles/Prueba ($(vFecha)*.xlsx]
(ooxml, embedded labels, table is Hoja1);

 

El código es de Qlik Sense, si trabajas con el QlikView solo reemplaza la parte del lib://attachedfiles por tu ruta, y Prueba por el nombre del archivo. Con esto puedes cargar el último archivo creado.

 

Best Regards,
Joseph Morales
rubenmarin

Buenas, para coger siempre el último podrías recorrerlos todos y quedarte con la fecha más alta:

LET vFechaMasAlta=0;
//Recorrer los ficheros
FOR Each vFichero in dirlist('$(vRutaFicheros)*')
  LET vFechaActual = Timestamp(Timestamp#(TextBetween('$(vFichero)', '( ', ' )'), 'MMM DD, YYYY HHMM tt'));
  LET vFechaActualMasAlta = If(Timestamp('$(vFechaMasAlta)')>Timestamp('$(vFechaActual)'), 1, 0);
  LET vFechaMasAlta = If($(vFechaActualMasAlta)=1, '$(vFechaActual)' '$(vFechaMasAlta)');
  LET vFicheroACargar = If($(vFechaActualMasAlta)=1, '$(vFichero)', '$(vFicheroACargar)';
NEXT

// Cargar el fichero con la fecha más alta
LOAD ... From [$(vFicheroACargar)] (ooxml, ...);

Código sin probar, puede que contenga algún error.

Saludos.