[Risolto] Rinominare variabile all'interno di ciclo for

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
geovign
Messaggi: 215
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

[Risolto] Rinominare variabile all'interno di ciclo for

Messaggio da geovign »

Per ogni file che apro (e poi chiudo) determino la data ed ora di modifica per poi confrontarle successivamente.
A tale scopo ho impostato un ciclo for così strutturato, dove tutti i file da aprire hanno lo stesso nome, ma differenziati da ".n" dopo l'estensione.
dim m(0) as New com.sun.star.beans.PropertyValue
dim File as object
dim DocProvaas object
dim DataModifica as string
For i=1 to 2
File = ConvertToURL(Percorso & NomeFileScaricato & "." & i) 'al primo giro apre il file nome.ods.1 e così via per ogni valore assunto da i
m(0).Name = "Hidden"
m(0).Value = True
DocProva = StarDesktop.loadComponentFromUrl(File,"_blank" , 0, m())
With DocProva.DocumentProperties.ModificationDate
'Imposto anche i vari formati
DataModifica = _
Format(.Day,"0#") & "/" & _
Format(.Month,"0#") & "/" & _
.Year & " " & _
Format(.Hours,"0#") & ":" & _
Format(.Minutes,"0#")
End With
DocProva.close(True)
next
Ovviamente al termine del ciclo il valore assunto da DataModifica è relativo all'ultimo file, quindi ad ogni ciclo devo rinominare la variabile in funzione di "i" (DataModifica1, ect) in modo da poterla usare dopo.
Domando quindi:
- Con quale istruzione è possibile rinominarla?
- In che modo dichiararla? Dim ...... as string
- A seconda della soluzione proposta, in quale punto del ciclo è da eseguire l'istruzione?
Spero di essere stato sufficientemente chiaro anche senza allegare un file di esempio.
Grazie a tutti.
Geo
Ultima modifica di geovign il giovedì 10 ottobre 2019, 0:26, modificato 1 volta in totale.
LibO 7 su LinuxMint 21
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Rinominare variabile all'interno di ciclo for

Messaggio da unlucky83 »

Mmm...questa macro non é incorporata negli n file che apri e chiudi. Questa macro può essere incorporata in un file a parte che usi per analizzare gli n file, facciamo finta “Analisi.ods”.
Potresti salvare i DataMidifica di ciascun file in una colonna di un foglio per esempio:
Sheet1!A1 > nome file 1 Sheet1!B1>datamodifica dell’iterazione 1
Etc
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
geovign
Messaggi: 215
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: Rinominare variabile all'interno di ciclo for

Messaggio da geovign »

Ciao Unlucky63,
hai ragione. Quanto scritto da me è solo l'illustrazione del ciclo e non dell'intero codice che devo ancora ultimare, ma che ho, in linea generale, abbozzato. L'idea è questa: nel mio progetto ho un file contenente circa 4000 prodotti fitosanitari autorizzati; ogni tanto questa banca dati la aggiorno e la deposito nel cloud a disposizione di chi usa il progetto. Tramite pulsante presente nel file principale scarico la banca dati dal cloud, verifico la data di modifica e se questa ultima è più recente, la sostituisco all'esistente. Questo in linea di massima quanto sto facendo, o meglio vorrei fare.
Per questo motivo mi sono permesso di riportare il solo ciclo. Semplificando è come dici tu: ho un file Analisi.ods all'interno del quale gira la macro principale che scarica, verifica ed eventualmente sostituisce.
...E se io nei file riportassi, sempre nella stessa cella, la data di modifica? A questo punto verificherei il contenuto delle due celle senza alcun problema...
Ci ho "ragionato" solamente adesso, mentre scrivevo e pensavo alla tua possibile soluzione. Grazie Unlucky63.
Comunque, ritornando al quesito iniziale: senza l'utilizzo di celle di appoggio, è possibile modificare il nome della variabile da DataModifica a DataModifica+i ?
Saluti
Geo
LibO 7 su LinuxMint 21
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Rinominare variabile all'interno di ciclo for

Messaggio da patel »

è possibile utilizzando un array
Dim DATEModifica(50) as string
e puoi richiamare i nomi in un ciclo del tipo

Codice: Seleziona tutto

for i = 0 to 50
  DataModifica = DATEModifica(i)
  .........
next
-------------------
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
geovign
Messaggi: 215
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: Rinominare variabile all'interno di ciclo for

Messaggio da geovign »

Sera Patel,
ho fatto in parte quanto hai detto, e spero nel modo giusto.
Ad ogni ciclo (quello del primo post) inserisco il valore di DataModifica all'interno dell'array aDataModifica. Al termine costituisco due nuove variabili, una per ogni elemento della matrice, con il corrispondente valore. Ora posso verificare quale delle due date è la più recente.
All'interno del file che allego, c'è la parte di codice relativo alla verifica (presenza dei due file, determinazione della data di modifica e verifica temporale) oggetto della mia domanda (con alcune avvertenze per provarla).
Come sempre grazie a tutti.
Saluti
Geo
Allegati
ContoFileVerificoDataModifica.ods
(10.3 KiB) Scaricato 95 volte
LibO 7 su LinuxMint 21
Rispondi