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.
[Risolto] Inserimento automatico della data
[Risolto] Inserimento automatico della data
Ultima modifica di balapao il lunedì 25 ottobre 2021, 13:09, modificato 2 volte in totale.
libre office 4 su windows xp
Re: Inserimento automatico della data
E dove vengono aggiunti alla fine dell'area dati? In tal caso, puoi farlo con la seguente macro:balapao ha scritto:Ad ogni apertura vengono aggiunti nuovi record.
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
- Allegati
-
- inserisci_data.ods
- (11.68 KiB) Scaricato 94 volte
OpenOffice 4.1.6 / LibreOffice 7.1.6.2 (x64)/ Windows 10
Sto scrivendo con google traduttore mi scuso per eventuali errori.
Sto scrivendo con google traduttore mi scuso per eventuali errori.
Re: Inserimento automatico della data
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)?
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
Re: Inserimento automatico della data
balapao ha scritto:Ho bisogno che per ogni record caricato venga contestualmente creata la data di inserimento in una cella posta prima (colonna A)
Prova così.balapao ha scritto:... è possibile limitare la lettura dell'ultima riga solo a determinate colonne (esempio da A ad M)?
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
.
Re: Inserimento automatico della data
@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
Grazie
libre office 4 su windows xp
Re: Inserimento automatico della data
... nell'esempio al momento la macro è collegata solo al pulsante rosso in cella N1.balapao ha scritto:preferirei che la colonna in cui inserire la data fosse N e le righe da leggere sono nelle colonne da A...
Test di funzionamento cliccando sul pulsante rosso.
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 88 volte
Re: Inserimento automatico della data
Perfetto funziona benissimo, Grazie!
libre office 4 su windows xp