Sto mettendo insieme un po 'di codice dove sto cercando di scorrere i file aperti e aggiungere il file alla fine del file per un tavolo. Quindi se aprendo tre file in pratica lo si aggiunge alla fine del primo file per il tavolo, ma sto avendo due problemi, ma parlerò solo di quello qui.
Aggiungo una colonna al percorso della tabella di output, in modo da poter tenere traccia di dove stava andando. Quindi ecco il codice, dove funziona se nitems (selected_files) = 1, ma se è maggiore di 1 il risultato è vuoto, cosa sto facendo male? Ecco il codice:
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;Se esegui questo codice, vedrai con un file selezionato che sembra fare ciò che sto cercando, ma 2 o più non lo fa. Qualsiasi aiuto sarebbe molto apprezzato!
Fantastico, questo fa esattamente quello che volevo, grazie mille, questo mi ha fatto battere la testa!
Il problema è che stai impostando le due colonne su formule che usano le variabili selected_files [i] e file_name [i]. Quindi, quando continui attraverso lo script, questi valori cambiano ogni volta che cambi. Invece di usare una formula, imposta i valori direttamente sui valori che desideri. Inoltre, dal momento che stai inserendo valori di carattere in queste due colonne, ti consiglio di crearli come colonne di caratteri anziché come colonne numeriche. Cambia invece le due linee Nuova Colonna e penso che otterrai ciò che stai cercando:
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]));