Pagina 1 di 1

[Risolto] Inserimento automatico della data

Inviato: giovedì 30 settembre 2021, 15:22
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.

Re: Inserimento automatico della data

Inviato: domenica 3 ottobre 2021, 20:04
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.

Re: Inserimento automatico della data

Inviato: giovedì 21 ottobre 2021, 14:46
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)?

Re: Inserimento automatico della data

Inviato: venerdì 22 ottobre 2021, 14:02
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".
.

Re: Inserimento automatico della data

Inviato: lunedì 25 ottobre 2021, 9:21
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

Re: Inserimento automatico della data

Inviato: lunedì 25 ottobre 2021, 12:14
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 2391 volte
Test di funzionamento cliccando sul pulsante rosso.
02.png
02.png (8.47 KiB) Visto 2391 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.
.

Re: Inserimento automatico della data

Inviato: lunedì 25 ottobre 2021, 13:04
da balapao
Perfetto funziona benissimo, Grazie!