Carissimi,
il mio problema è stato probabilmente sollevato in precedenza in quanto è abbastanza semplice ma non sono riuscito a trovare la soluzione al mio problema esatto.
Voglio importare più file con la stessa struttura, manipolarli nello stesso modo e quindi incollarne un sottoinsieme. Ho eseguito la parte di importazione e manipolazione dei dati nel seguente modo generico:
dt = Open(
"PATH/File1.xlsx",
Worksheets( "Table1" ),
XXX
);
// New operation e.g. New column: Column 2
dt << New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 )
);<BR /><BR />File1 = dt;<BR />File1 << Set Name("File1");<BR />Per importare più file, copierei lo stesso codice nello script e scambierei solo "File1" con "File2", "File3" e così via. Funziona ma la lunghezza dello script diventa piuttosto grande poiché ho molti file da importare.
Ho anche provato l'opzione FMI. Quando ho scelto "Apri più tabelle" (non lo voglio impilato) ho le tabelle di dati già collegate a nomi specifici e non sono riuscito a manipolarle con un codice generico sopra descritto.
Qualche idea per una soluzione più elegante?
Molte grazie!
Potresti provare a usare funzione() (jmp.com) o espr(). Ecco alcune opzioni che usano function():
Names Default To Here(1);
open_and_modify = function({file_path}, {Default Local},
dt = Open(file_path, Worksheets("Table1"), XXX);
// New operation e.g. New column: Column 2
dt << New Column("Column 2", Numeric, "Continuous", Format("Best", 12));
dt << Set Name("File1");
return(dt);
);
dt1 = open_and_modify("PATH/File1.xlsx");
dt2 = open_and_modify("PATH/File2.xlsx");
dt3 = open_and_modify("PATH/File3.xlsx");
//or have a list of paths
file_paths = {"PATH/File1.xlsx", "PATH/File2.xlsx", "PATH/File3.xlsx"};
//create first concatenate before
table_list = {};
For Each({new_file_path}, files,
Insert Into(table_list, open_and_modify(new_file_path));
);