Estoy reuniendo un código en el que estoy tratando de recorrer los archivos abiertos y agregar el archivo al final del archivo para una tabla. Entonces, si abrir tres archivos básicamente se agrega al final del primer archivo de la tabla, pero tengo dos problemas, pero solo hablaré de uno aquí.
Agrego una columna a la ruta de la tabla de salida, para poder hacer un seguimiento de dónde iba. Así que aquí está el código, donde funciona si nitems (selected_files) = 1, pero si es mayor que 1, el resultado está en blanco, ¿qué estoy haciendo mal? Aquí está el código:
default_directory = "C:";
// Open Dialog box to select input files
selected_files = Pick File("Select Input File",default_directory,{"Excel Files|xls;xlsx","All Files|*"},1,0,"",multiple);
file_name = selected_files;
all_data_table = Empty();
For(i=1, i <= nitems(selected_files), i++,
num = Char(i);
file_name[i] = Concat Items({"File",num});
out_here = Open(
selected_files[i],
Worksheets( "Sheet1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Invisible,
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 2 ),
Data Starts on Row( 3 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 0 ),
Suppress Hidden Columns( 0 ),
Suppress Empty Columns( 0 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
out_here << New Column("Path",Numeric,"Continuous",Formula(selected_files[i]));
out_here << New Column("File",Numeric,"Continuous",Formula(file_name[i]));
If( Is Empty( all_data_table ),
all_data_table = out_here;
,
all_data_table << Concatenate( out_here, Append to first table );
);
);
all_data_table << New Data View;Si ejecuta este código, verá que con un archivo seleccionado parece que hace lo que estoy buscando, pero 2 o más no lo hacen. Cualquier ayuda sería muy apreciada!
Genial, esto hace lo que quería, ¡muchas gracias por haberme golpeado la cabeza!
El problema es que está configurando las dos columnas a fórmulas que usan las variables selected_files [i] y file_name [i]. Entonces, cuando continúas con el script, esos valores cambian cada vez que yo cambio. En lugar de utilizar una fórmula, establezca los valores directamente en los valores que desee. Además, como está colocando valores de caracteres en estas dos columnas, recomiendo crearlos como columnas de caracteres en lugar de columnas numéricas. Cambia las dos líneas de Nueva Columna a esto en su lugar y creo que obtendrás lo que estás buscando:
out_here << New Column("Path","Character","Nominal",Set Each Value(selected_files[i]));
out_here << New Column("File","Character","Nominal",Set Each Value(file_name[i]));