Pannello di Controllo Moderatore ]

[Risolto] Rinominare variabile all'interno di ciclo for

Discussioni sull'applicazione per i fogli di calcolo

[Risolto] Rinominare variabile all'interno di ciclo for

Messaggioda geovign » martedì 8 ottobre 2019, 20:56

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 6 su MX Linux
geovign
 
Messaggi: 80
Iscritto il: domenica 13 gennaio 2019, 12:19

Re: Rinominare variabile all'interno di ciclo for

Messaggioda unlucky83 » martedì 8 ottobre 2019, 22:11

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
LibO5.1.6.2-Ubuntu 16.04.2 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio
Avatar utente
unlucky83
Volontario
Volontario
 
Messaggi: 2040
Iscritto il: lunedì 7 gennaio 2013, 2:23
Località: Latina

Re: Rinominare variabile all'interno di ciclo for

Messaggioda geovign » mercoledì 9 ottobre 2019, 0:03

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 6 su MX Linux
geovign
 
Messaggi: 80
Iscritto il: domenica 13 gennaio 2019, 12:19

Re: Rinominare variabile all'interno di ciclo for

Messaggioda patel » mercoledì 9 ottobre 2019, 6:51

è possibile utilizzando un array
Dim DATEModifica(50) as string
e puoi richiamare i nomi in un ciclo del tipo
Codice: Seleziona tutto   Espandi visualeStringi visuale
for i = 0 to 50
  DataModifica = DATEModifica(i)
  .........
next
-------------------
OpenOffice 4.1 e Libre Office 6.o.7.3 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3318
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Rinominare variabile all'interno di ciclo for

Messaggioda geovign » giovedì 10 ottobre 2019, 0:25

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 3 volte
LibO 6 su MX Linux
geovign
 
Messaggi: 80
Iscritto il: domenica 13 gennaio 2019, 12:19


Torna a Calc

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti