[Risolto] Inserimento automatico della data

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
balapao
Messaggi: 50
Iscritto il: venerdì 11 ottobre 2013, 11:00

[Risolto] Inserimento automatico della data

Messaggio da balapao »

Salve ho questa necessità:
all'apertura di un file in un foglio vengono caricati dei dati da una sorgente dati esterna. Ad ogni apertura vengono aggiunti nuovi record.
Ho bisogno che per ogni record caricato venga contestualmente creata la data di inserimento in una cella posta prima (colonna A) o dopo la riga inserita (colonna M)
Alla successiva apertura dello stesso file per i record inseriti precedentemente la data di inserimento non venga modificata, ma venga inserita solo per i nuovi record.
Per cercare di spiegarmi in modo semplice, l'inserimento della data è condizionato dal fatto che in una determinata matrice le celle delle righe siano piene e che la data sia fissa al giorno di inserimento.

Se fosse più facile condizionare questo evento evento nel file di base (sorgente dati), riproporrò la questione nella giusta applicazione.
Ultima modifica di balapao il lunedì 25 ottobre 2021, 13:09, modificato 2 volte in totale.
libre office 4 su windows xp
Rafkus_pl
Messaggi: 52
Iscritto il: domenica 19 settembre 2021, 15:45

Re: Inserimento automatico della data

Messaggio da Rafkus_pl »

balapao ha scritto:Ad ogni apertura vengono aggiunti nuovi record.
E dove vengono aggiunti alla fine dell'area dati? In tal caso, puoi farlo con la seguente macro:

Codice: Seleziona tutto

Sub inserisci_data
 GlobalScope.BasicLibraries.LoadLibrary("Tools")	'carica libreria, con la funzione: trova dati recenti
 Ark = ThisComponent.Sheets.getByName("Foglio1")	'c'è un foglio di lavoro chiamato Sheet1 nel documento
 i=getLastUsedRow(Ark)								'trova l'ultima riga scritta
 do while  Ark.getCellByPosition(0, i).getType()=0	'se la cella Ax è vuota (x è il numero di riga)
    Ark.getCellByPosition(0, i).Value = date		'inserisci la data corrente al suo interno
    'Ark.getCellByPosition(1, i).Value = now		'facoltativamente inserisci il momento corrente in esso (data con ora)
    i=i-1
    if i<0 then exit sub
 loop
End Sub
Questa macro dovrebbe essere assegnata all'evento Salva documento per compilare automaticamente le voci mancanti durante il salvataggio.
Allegati
inserisci_data.ods
(11.68 KiB) Scaricato 95 volte
OpenOffice 4.1.6 / LibreOffice 7.1.6.2 (x64)/ Windows 10

Sto scrivendo con google traduttore mi scuso per eventuali errori.
balapao
Messaggi: 50
Iscritto il: venerdì 11 ottobre 2013, 11:00

Re: Inserimento automatico della data

Messaggio da balapao »

I nuovi record vengono aggiunti in un foglio (ultimo di una serie), attraverso il richiamo da "sorgente dati" di una ricerca, in un'area definita e viene utilizzato poi come lettura per la compilazione automatica dei fogli anteposti.
La macro che mi hai postato fa al caso mio, Grazie Rafkus_pl, ho girato un pò tra i vari comandi ed ho trovato come associare la macro al salvataggio.
Solo una precisazione, essendo nello stesso foglio richiati dalla stessa "sorgente dati" altre ricerche, in aree diverse, è possibile limitare la lettura dell'ultima riga solo a determinate colonne (esempio da A ad M)?
Ultima modifica di balapao il giovedì 21 ottobre 2021, 16:03, modificato 2 volte in totale.
libre office 4 su windows xp
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 3069
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Inserimento automatico della data

Messaggio da lucky63 »

balapao ha scritto:Ho bisogno che per ogni record caricato venga contestualmente creata la data di inserimento in una cella posta prima (colonna A)
balapao ha scritto:... è possibile limitare la lettura dell'ultima riga solo a determinate colonne (esempio da A ad M)?
Prova così.

Codice: Seleziona tutto

Sub InserisciDataInColonnaA_AiNuoviDatiAccodatiInCOlonnaB
Rem Link del quesito: https://forum.openoffice.org/it/forum/viewtopic.php?f=9&t=11370
Doc = ThisComponent
Foglio = Doc.Sheets.getByName("Foglio1")   '... nome del foglio interessato
REM Loop che controlla le celle di colonna B incrementando il valore della variabile “Riga”
REM fino a quando trova la prima cella vuota della colonna B
Riga = 0 'il numero della riga dal quale si vuole far partire il controllo (0 = prima riga)
Do while  Foglio.getCellByPosition(1,Riga).string <> "" ' 0=colonna A, 1=ColonnaB, ...
Rem Controlla la CellaA(Riga) e se è vuota inserisci la data odierna
Rem Data inserita in formato valore seriale
Rem Preformattare colonna A Nel formato data di preferenza Es: GG/MM/AAAA o altro
 If Foglio.getCellByPosition(0,Riga).string = "" Then
  Foglio.getCellByPosition(0,Riga).Value = Date
  End If
Riga = Riga + 1
Loop 
End Sub
Macro avviabile all'occorrenza tramite pulsante o automaticamente assegnandola ad evento "Contenuto foglio modificato" oppure "Salva documento".
.
balapao
Messaggi: 50
Iscritto il: venerdì 11 ottobre 2013, 11:00

Re: Inserimento automatico della data

Messaggio da balapao »

@lucky63 - Scusami, avevo scritto che la data doveva entrare in colonna A, ma per varie ragioni preferirei che la colonna in cui inserire la data fosse N e le righe da leggere sono nelle colonne da A ad M che si compilano automaticamente all'avvio del file, ho provato a modificare i riferimenti nella macro, ma associando poi la macro al salvataggio, così come ho provato in alternativa al contenuto modicato del foglio, comunque la data non si carica. potresti per favore riscrivermela tu?
Grazie
libre office 4 su windows xp
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 3069
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Inserimento automatico della data

Messaggio da lucky63 »

balapao ha scritto:preferirei che la colonna in cui inserire la data fosse N e le righe da leggere sono nelle colonne da A...
... nell'esempio al momento la macro è collegata solo al pulsante rosso in cella N1.
01.png
01.png (8.31 KiB) Visto 2336 volte
Test di funzionamento cliccando sul pulsante rosso.
02.png
02.png (8.47 KiB) Visto 2336 volte
Vedi le note nel file e nella macro.
Fai alcuni test manuali.
Collegala poi all'evento "Salva documento" e quando salvi il documento si attiva automaticamente.
.
Allegati
Test - Macro - InserisciInColonnaNLaDataOrdienaDiSistemaAiNuoviDatiAccodatiInColonnaA.ods
(18.8 KiB) Scaricato 89 volte
balapao
Messaggi: 50
Iscritto il: venerdì 11 ottobre 2013, 11:00

Re: Inserimento automatico della data

Messaggio da balapao »

Perfetto funziona benissimo, Grazie!
libre office 4 su windows xp
Rispondi