Pagina 1 di 1
[Risolto] "Nome" di un intervallo di celle
Inviato: lunedì 7 dicembre 2020, 8:13
da Masera
Buongiorno.
Tenterò di essere il più chiaro possibile.
Ho un file “B.ods” in cui ho assegnato un “nome” ad un dato intervallo di celle. Nome che poi utilizzo per scambiare il valore di queste celle con un altro file, chiamiamolo “C.ods”.
Il valore delle celle in “B.ods” cambia nel tempo e lo ottengo da uno strumento che scrive in un altro file “A.ods”. Se copio “A.ods” in “B.ods” il “nome” che definisce l’intervallo di celle scompare.
Se invece manualmente lo faccio con copia e incolla il “nome” assegnato all’intervallo di celle resta inalterato.
Domanda : c’è modo di fare questa seconda operazione con un comando ? Non ho a che fare con un singolo file, che qui ho chiamato “B.ods”, ma con molti.
Spero la spiegazione sia stata sufficientemente chiara.
Grazie
Re: "Nome" di un intervallo di celle
Inviato: sabato 12 dicembre 2020, 8:31
da charlie
Masera ha scritto:Spero la spiegazione sia stata sufficientemente chiara.
Ciao, dei piccoli file di esempio chiarirebbero meglio.
Re: "Nome" di un intervallo di celle
Inviato: sabato 12 dicembre 2020, 14:36
da Masera
Si Charlie hai ragione, forse con un paio di files la cosa è più chiara. Li ho allegati.
Il file origine dei dati è A.ods. Su questo file io non ho controllo alcuno. Lo ricevo diciamo da un’apparecchiatura. Nella realtà non si tratta di un solo file ma molti di più altrimenti farei un semplice copia ed incolla. Il mio problema è di automatizzare la copia delle celle A1:H20 presenti in A.ods nella stessa posizione di un secondo file che chiamiamo B.ods. Ma c’è un piccolo problema.
Nel file B.ods il campo A1:H20 è stato caratterizzato con un “nome” come si può vedere andando nella “casella del nome” che è quella in alto a sx subito sotto quella “nome del carattere”.
Come si può vedere aprendo B.ods il campo A1:H20 è denominato “campoa”.
Se io con comando copia&incolla da tastiera prendo i valori delle celle A1:H20 nel file A.ods e li copio nelle analoghe celle di B.ods queste continueranno a essere denominate “campoa”.
Io vorrei fare questo con un comando da terminale. Qualcuno sa se è possibile, ovvero che dopo la copia la definizione "campoa" sia sempre presente ?
Grazie anticipatamente.
Re: "Nome" di un intervallo di celle
Inviato: sabato 12 dicembre 2020, 15:58
da charlie
Non puoi collegare il file B a quello A, cella-cella, con formule di questo tipo ?
Re: "Nome" di un intervallo di celle
Inviato: domenica 13 dicembre 2020, 14:30
da lucky63
Ho fatto un test con una macro che dal file B apre il file A in modo invisibile copiandone i dati in B.
Nel file B "campoa" rimane ed è funzionante.
Ti può interessare ?
I dati da copiare sono sempre relativi a A1:H20 ?
Re: "Nome" di un intervallo di celle
Inviato: domenica 13 dicembre 2020, 16:00
da Masera
Charlie grazie, ma non posso usare quella procedura.
Lucky63 sei sempre la mia salvezza! Si il range di celle è sempre quello e si grazie per la macro.
Re: "Nome" di un intervallo di celle
Inviato: domenica 13 dicembre 2020, 17:13
da lucky63
.
Adeguare la macro nella seguente riga impostando percorso e nome del file di origine dei dati.
Codice: Seleziona tutto
FileOrigine = StarDesktop.loadComponentFromURL ("file:///home/NomeUtente/Scaricati/A.ods", "_blank",0, Dummy() )
Codice: Seleziona tutto
Sub CaricaDatiDaFileEsterno
Rem Link del quesito: https://forum.openoffice.org/it/forum/viewtopic.php?f=9&t=10907&sid=8669c0022da9059fe96fcf202b02b1f9
Rem ----------------------------------------------------------------------------------------------------------------------------
Rem Dichiara il vettore come nuova istanza associandogli la proprietà Hidden/Nascosto
Rem Non farà mostrare la finestra di caricamento del file di origine
Dim Dummy(0) as New com.sun.star.beans.PropertyValue
Dummy(0).Name = "Hidden"
Dummy(0).Value = True
Rem File e Foglio di origine dei dati
FileOrigine = StarDesktop.loadComponentFromURL ("file:///home/NomeUtente/Scaricati/A.ods", "_blank",0, Dummy() )
FoglioOrigine = FileOrigine.Sheets(0) 'PrimoFoglio
Rem ----------------------------------------------------------------------------------------------------------------------------
Doc = ThisComponent
Foglio = Doc.Sheets(0) 'PrimoFoglio
Rem Inizio cicli
For Riga = 0 to 19 'N.B.: 19=Riga20
For Colonna = 0 to 7 'N.B.: 7=ColonnaH
Cella = FoglioOrigine.GetCellByPosition(Colonna,Riga).String
ValoreCella = CLng(Cella) 'Converte il dato stringa in un InteroLungo
If ValoreCella = 0 Then
Foglio.GetCellByPosition(Colonna,Riga).String = Cella
Else
Foglio.GetCellByPosition(Colonna,Riga).Value = ValoreCella
End if
Next Colonna
Next Riga
FileOrigine.Close(True) 'Chiusura file origine dati
End sub
.
Re: "Nome" di un intervallo di celle
Inviato: lunedì 14 dicembre 2020, 20:55
da Masera
Lucky63, grazie per la MACRO ma purtroppo va in errore alla riga 11 (vedi alllegato).
Ho fatto qualche ricerca in rete ed ho trovato diverse situazioni simili ma non ne sono venuto a capo.
Per inciso la riga 11 dice :
FileOrigine = StarDesktop.loadComponentFromURL ("file:///home/NomeUtente/Scaricati/A.ods", "_blank",0, Dummy() )
che per me diventa :
FileOrigine = StarDesktop.loadComponentFromURL ("file:///home/giulio/Scrivania/PROVA/A.ods", "_blank",0, Dummy() )
Re: "Nome" di un intervallo di celle
Inviato: martedì 15 dicembre 2020, 2:39
da lucky63
La finestra di errore ti segnala ...
Messaggio: URL non supportato
Tipo : Rilevamento fallito.
file:///home/giulio/Scrivania/PROVA/
-A.ods
Nella riga di codice hai scritto il nome del file come
-A.ods (notare il trattino davanti) e non
A.ods
Quindi cerca un file di nome -A.ods (e non A.ods) e non trovandolo segnala l'errore.
Se invece il nome file è effettivamente -A.ods (ma non credo) allora l'errore è nel come è scritto il "NomeUtente" o il NomeCartella "PROVA".
.
Re: "Nome" di un intervallo di celle
Inviato: martedì 15 dicembre 2020, 7:46
da Masera
Sono stato davvero disattento ! Scusa.
Premetto che il trattino “-” lo avevo notato da subito, ma nella mia ingenuità lo avevo considerato un simbolo di “accapo” !!!
Quando si è trattato di provare la macro io mi sono solo interessato a cambiarle il percorso, ma non ho fatto caso al fatto che tu (prendendo spunto da quanto avevo scritto io nel messaggio) avevi denominato il file “A.ods”. Il mio file “reale” si chiama “ST-A.ods” !!! Ecco il trattino..... Ed io la prova l'ho fatta appunto con "ST-A.ods" , il file "A.ods" non esiste proprio. Sono andato in confusione. Ma l’importante è che funzioni. Grazie sempre. Adesso debbo scappare. Spero di poter fare un po' di prove tra oggi è domani, poi ti riscrivo.
Grazie ancora.
Re: "Nome" di un intervallo di celle
Inviato: mercoledì 16 dicembre 2020, 9:17
da Masera
Lucky63 grazie al tuo aiuto sono riuscito ad automatizzare il tutto. Ho modificato la tua macro leggermente ed adesso tutto il processo di aggiornamento avviene molto semplicemente con un unico comando. E soprattutto mi hai spinto ad usare le macro cosa che fino adesso avevo sempre evitato. Grazie ancora.