Inserire comando di campo su calc

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
l.tor
Messaggi: 6
Iscritto il: giovedì 8 novembre 2012, 12:49

Inserire comando di campo su calc

Messaggio da l.tor »

Ciao a tutti,
in un file realizzato con calc, dovrei inserire il nome del titolo dello stesso.
Su writer ho visto la funzione "comando di campo" ma su calc sembra non essere presente.
Come potrei fare? Grazie!
OpenOffice 3.4.1 su Windows 7 Pro
Anna
Messaggi: 27
Iscritto il: sabato 7 luglio 2012, 17:49

Re: Inserire comando di campo su calc

Messaggio da Anna »

Forse il suggerimento è banale, ma se ti serve solo in stampa il nome del file (o del foglio) si può inserire nell'intestazione o piè di pagina.
OpenOffice 3.4 su Windows XP
l.tor
Messaggi: 6
Iscritto il: giovedì 8 novembre 2012, 12:49

Re: Inserire comando di campo su calc

Messaggio da l.tor »

Mi serve mettere il nome del file in una certa cella del foglio.
C'è qualche sistema per farlo?
OpenOffice 3.4.1 su Windows 7 Pro
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Inserire comando di campo su calc

Messaggio da patel »

Codice: Seleziona tutto

Sub ThisDocumentNameWithoutPath
   GlobalScope.BasicLibraries.LoadLibrary("Tools")
   oDoc = thisComponent
   FileN=GetFileNameWithoutExtension(oDoc.url,"/")
   msgbox FileN
End Sub

Sub ThisDocumentNameWithPath
   GlobalScope.BasicLibraries.LoadLibrary("Tools")
   oDoc = thisComponent
   FileN=GetFileNameWithoutExtension(oDoc.url)
   msgbox FileN
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
l.tor
Messaggi: 6
Iscritto il: giovedì 8 novembre 2012, 12:49

Re: Inserire comando di campo su calc

Messaggio da l.tor »

perdonami ma dove dovrei inserirlo questo codice?
inoltre per "nome del file" intendo il nome che gli attribuisco da file -> proprietà
comunque grazie tante anticipatamente! ;)
OpenOffice 3.4.1 su Windows 7 Pro
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Inserire comando di campo su calc

Messaggio da patel »

non mi sembra che esista una funzione di calc per ottenere il nome del documento corrente, quindi se proprio ci tieni occorre crearsela tramite macro come quelle che ho allegato perché tu le provassi, per farlo devi andare su Strumenti, Macro, Organizza Macro, Basic, Nuovo e incollare il codice e poi eseguirlo.
Se ti va bene possiamo provare a creare una funzione che ti inserisca il nome in una cella.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
l.tor
Messaggi: 6
Iscritto il: giovedì 8 novembre 2012, 12:49

Re: Inserire comando di campo su calc

Messaggio da l.tor »

purtroppo non funziona... :(
OpenOffice 3.4.1 su Windows 7 Pro
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Inserire comando di campo su calc

Messaggio da patel »

allega il tuo file indicando dove vuoi mettere il nome ed il quale formato
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
l.tor
Messaggi: 6
Iscritto il: giovedì 8 novembre 2012, 12:49

Re: Inserire comando di campo su calc

Messaggio da l.tor »

innanzitutto grazie tante per la disponibilità
ho un file con 12 fogli e in una cella in alto dovrei mettere a tutti il nome del file (ti ricordo non il nome del file fisico ma quello impostabile in file -> proprietà)
come potrei fare? il file è da circa 15MB e vorrei evitare di caricarlo
potresti insegnarmi il procedimento? grazie ancora
OpenOffice 3.4.1 su Windows 7 Pro
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Inserire comando di campo su calc

Messaggio da patel »

dovrebbe essere evidente che è una cosa che non ho mai fatto e che quindi devo fare prove, ti ho chiesto il file perché mi hai detto che non riesci a far funzionare la mia macro, quindi le ipotesi sono 2:
1) dipende dal file
2) non sei capace di far funzionare una macro
in ambedue i casi occorre che ti fornisca il file già funzionante, sempre che mi riesca...
Ovviamente non è necessario che siano presenti tutti i fogli, ne bastano 3 per fare le prove

non ho capito bene la differenza tra nome del file fisico ma quello impostabile in file -> proprietà
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Attilafdd
Volontario
Volontario
Messaggi: 564
Iscritto il: giovedì 5 aprile 2012, 8:25

Re: Inserire comando di campo su calc

Messaggio da Attilafdd »

patel ha scritto:non mi sembra che esista una funzione di calc per ottenere il nome del documento corrente......
In effetti non esiste, ma si può ricostruire concatenando qualche formula:

per nome file senza estensione inserisci in una cella qualsiasi la formula:

Codice: Seleziona tutto

 =STRINGA.ESTRAI(DESTRA(SOSTITUISCI(CELLA("FILENAME");"/";CODICE.CARATT(254);LUNGHEZZA(CELLA("FILENAME"))-LUNGHEZZA(SOSTITUISCI(CELLA("FILENAME");"/";"")));LUNGHEZZA(CELLA("FILENAME"))-RICERCA(CODICE.CARATT(254);SOSTITUISCI(CELLA("FILENAME");"/";CODICE.CARATT(254);LUNGHEZZA(CELLA("FILENAME"))-LUNGHEZZA(SOSTITUISCI(CELLA("FILENAME");"/";"")))));1;RICERCA(".ods";DESTRA(SOSTITUISCI(CELLA("FILENAME");"/";CODICE.CARATT(254);LUNGHEZZA(CELLA("FILENAME"))-LUNGHEZZA(SOSTITUISCI(CELLA("FILENAME");"/";"")));LUNGHEZZA(CELLA("FILENAME"))-RICERCA(CODICE.CARATT(254);SOSTITUISCI(CELLA("FILENAME");"/";CODICE.CARATT(254);LUNGHEZZA(CELLA("FILENAME"))-LUNGHEZZA(SOSTITUISCI(CELLA("FILENAME");"/";""))))))-1)
per avere anche l'estensione basta variare il -1 in fondo alla formula con +3:

Codice: Seleziona tutto

=STRINGA.ESTRAI(DESTRA(SOSTITUISCI(CELLA("FILENAME");"/";CODICE.CARATT(254);LUNGHEZZA(CELLA("FILENAME"))-LUNGHEZZA(SOSTITUISCI(CELLA("FILENAME");"/";"")));LUNGHEZZA(CELLA("FILENAME"))-RICERCA(CODICE.CARATT(254);SOSTITUISCI(CELLA("FILENAME");"/";CODICE.CARATT(254);LUNGHEZZA(CELLA("FILENAME"))-LUNGHEZZA(SOSTITUISCI(CELLA("FILENAME");"/";"")))));1;RICERCA(".ods";DESTRA(SOSTITUISCI(CELLA("FILENAME");"/";CODICE.CARATT(254);LUNGHEZZA(CELLA("FILENAME"))-LUNGHEZZA(SOSTITUISCI(CELLA("FILENAME");"/";"")));LUNGHEZZA(CELLA("FILENAME"))-RICERCA(CODICE.CARATT(254);SOSTITUISCI(CELLA("FILENAME");"/";CODICE.CARATT(254);LUNGHEZZA(CELLA("FILENAME"))-LUNGHEZZA(SOSTITUISCI(CELLA("FILENAME");"/";""))))))+3)
LibreOffice 24.8.3 (Win 11)
-----------------------------------------
Se risolto inserisci [Risolto] e la spunta verde Immagine: viewtopic.php?f=9&t=5661
Attilafdd
Volontario
Volontario
Messaggi: 564
Iscritto il: giovedì 5 aprile 2012, 8:25

Re: Inserire comando di campo su calc

Messaggio da Attilafdd »

Per chi è interessato a sviscerare la formula.
la partenza è data dalla funzione

Codice: Seleziona tutto

CELLA("FILENAME")
(denominiamola _1F_ ossia prima formula) che però restituisce un output simile a:

'file:///media/Penna USB/Archivio/Informatica/Libreoffice/File di test.ods'#$Foglio3

tutto il resto della formula serve per estrarre da questo output solamente "File di test" o nel secondo caso "File di test.ods"
i passaggi che ho seguito sono:
1) sostituzione del carattere "/" prima del nome del file con CODICE.CARATT(254) (in modo da avere un carattere univoca da ricercare per applicare "destra" e "stringa estrai")

Codice: Seleziona tutto

=SOSTITUISCI(_1F_;"/";CODICE.CARATT(254);LUNGHEZZA(_1F_)-LUNGHEZZA(SOSTITUISCI(_1F_;"/";"")))
(denominiamola _2F_ ossia seconda formula)

2) eliminazione di tutto il percorso (cioè di tutto ciò che precede il CODICE.CARATT(254) che ho appena usato come marcatore di inizio del nome file) mediante la funzione DESTRA

Codice: Seleziona tutto

=DESTRA(_2F;LUNGHEZZA(_1F_)-RICERCA(CODICE.CARATT(254);_2F_))
(denominiamola _3F_ terza formula)
ottenendo un output simile a

File di test.ods'#$Foglio3

3) eliminazione della coda (da .ods in poi nel primo caso e dopo .ods nel secondo) mediante ricerca della stringa ".osd" nel nome residuo e mediante la funzione STRINGA.ESTRAI

Codice: Seleziona tutto

 STRINGA.ESTRAI(_3F_;1;RICERCA(".ods";_3F_)-1)
oppure

Codice: Seleziona tutto

 STRINGA.ESTRAI(_3F_;1;RICERCA(".ods";_3F_)+3)
per aggiungere l'estensione
LibreOffice 24.8.3 (Win 11)
-----------------------------------------
Se risolto inserisci [Risolto] e la spunta verde Immagine: viewtopic.php?f=9&t=5661
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Inserire comando di campo su calc

Messaggio da patel »

Attilafdd ha scritto:
patel ha scritto:non mi sembra che esista una funzione di calc per ottenere il nome del documento corrente......
In effetti non esiste ....
Bravo Attilafdd ! però hai dimostrato che esiste eccome, è un po' troppo completa, ma basta elaborarla che hai mostrato tu, mi sembra che questo risolva il problema
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
l.tor
Messaggi: 6
Iscritto il: giovedì 8 novembre 2012, 12:49

Re: Inserire comando di campo su calc

Messaggio da l.tor »

grazie tante per la disponibilità
soltanto che non devo inserire il nome del file ma il titolo del file (come dicevo, quello che viene indicato tramite file -> proprietà -> descrizione)
sarebbe possibile? come? grazie ancora ;)
OpenOffice 3.4.1 su Windows 7 Pro
Rispondi