[Risolto]Utilizzare una macro che sostituisca una Progress Bar

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Avatar utente
Lanfranchi G.Luigi
Messaggi: 108
Iscritto il: venerdì 12 aprile 2019, 16:54

[Risolto]Utilizzare una macro che sostituisca una Progress Bar

Messaggio da Lanfranchi G.Luigi »

Buongiorno.
Ho terminato il mio foglio di lavoro non senza alcune difficoltà (superate grazie a voi). :-)
In questo foglio scarico in automatico dei dati utilizzando "collegamenti a file esterni".
Ho programmato di farlo ogni 10 min (nell'allegato abbassato a 30 sec per velocizzare).

Tutto benissimo.
Il problema è quando ho voluto aggiungere una Progress bar per visualizzare il tempo di attesa di ogni nuovo aggiornamento.
All'inizio ho cercato di usare una cella condizionata a barra ma utilizzando l'evento "Lo stato ' modificato' è cambiato" (unico purtroppo che va bene) non mi è stato possibile.
Allora ho scaricato dal sito una macro Progress bar che funziona benissimo ma che non posso utilizzare.
Se imposto tutto ad un minuto (Collegamento esterni + Progress bar) in effetti il collegamento avviene dopo due minuti.
In parole povere il tempo della Progress bar viene sommato al tempo impostato per l'aggiornamento.
Ho dato la colpa all'istruzione "Wait", posta all'interno di un ciclo "For Next", che congela tutto. Ho modificato il ciclo utilizzando While e wend con abbinato il comando timer ma il risultato non cambia.
Suggerimenti ?
Grazie.
PS: L'esempio che allego è basico quindi non pasticciate troppo con le celle. :-)

Ho pensato anche di fare un escamotage ponendo la Progress bar a 9:58 e l'aggiornamento a 0:2 che sommati danno 10:00.
Comunque se qualcuno mi può dare altre soluzioni.....
Allegati
Esempio.ods
Progress bar raddoppia il tempo di aggiornamento
(75.2 KiB) Scaricato 60 volte
Ultima modifica di Lanfranchi G.Luigi il martedì 2 agosto 2022, 10:57, modificato 2 volte in totale.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Problemi con la Progress bar

Messaggio da patel »

Non credo che tu possa collegare una progress bar all'aggiornamento perché questo non avviene tramite una macro sotto il tuo controllo.
-------------------
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 108
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Problemi con la Progress bar

Messaggio da Lanfranchi G.Luigi »

Patel GRAZIE per la risposta.
Purtroppo, per il momento, ci ho rinunciato.

Avevo provato anche ad utilizzare l'escamotage descritto precedentemente e funziona, ma non riesco più a chiudere l'applicazione perchè Calc mi dice che un programma basic sta lavorando. Ho dovuto utilizzare "Gestione attività" per sbloccare il pc. :knock:

Speravo di poter utilizzare una variabile interna a calc che adopera, per esempio, nel countdown impostato tra un aggiornamento web e l'altro....
Anche così però la vedo dura....
Spero in qualche buon anima che mi possa ancora aiutare....

Ciao.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Problemi con la Progress bar

Messaggio da Gaetanopr »

In un primo momento avevo capito che ti serviva una progress bar per visualizzare l'attesa dell'aggiornamento, cioè azionare la progress bar durante l'aggiornamento, ma questo dura pochissimi secondi quindi sarebbe una cosa inutile oltre a non fattibile in quanto la macro bloccherebbe temporaneamente l'aggiornamento, poi rileggendo
Lanfranchi G.Luigi ha scritto: sabato 23 luglio 2022, 9:00 Il problema è quando ho voluto aggiungere una Progress bar per visualizzare il tempo di attesa di ogni nuovo aggiornamento.
ho capito che la progress bar deve entrare in funzione nei periodi di attesa tra gli aggiornamenti per avvisare l'utente quanto tempo rimane al prossimo aggiornamento, cosa ancora meno fattibile a MIO avviso in quanto si farebbe uso perennemente di una macro andando ad impegnare costantemente le risorse del pc.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
Lanfranchi G.Luigi
Messaggi: 108
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Problemi con la Progress bar

Messaggio da Lanfranchi G.Luigi »

Gaetanopr grazie per la risposta.
Si hai ragione, una progress bar come l'avevo pensata è irrealizzabile (credo).
Stavo ora cercando di utilizzare una cella condizionata a barra ma il problema si ripresenta uguale (se non peggio). :crazy:

Come posso "chiudere" l'argomento ? Con la dicitura "risolto" non credo sia corretto.

Grazie ancora a tutti.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Problemi con la Progress bar

Messaggio da Gaetanopr »

Puoi usare una cella come timestamp, cioè stampi data e orario di ogni aggiornamento, oppure aggiungi 10 minuti all'orario corrente e lo scrivi su una cella in modo da sapere quando avverrà il prossimo aggiornamento.
L'argomento puoi lasciarlo aperto, in modo da poter ricevere qualche altro suggerimento utile.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
Lanfranchi G.Luigi
Messaggi: 108
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Problemi con la Progress bar

Messaggio da Lanfranchi G.Luigi »

Gaetanopr :bravo: :bravo:
Ottimi suggerimenti....farò così.
Ciao e grazie ancora.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
geovign
Messaggi: 215
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: Problemi con la Progress bar

Messaggio da geovign »

Non so se è la procedura pensata da Gaetanopr, ma il risultato è simile.
Ho creato un listener associato al range di celle che vengono aggiornate. Ad ogni aggiornamento, viene scritto l'orario di esecuzione e l'orario del prossimo.
Spero che possa essere utile.
Saluti.
Geo
Allegati
Esempio2.ods
(68.32 KiB) Scaricato 45 volte
LibO 7 su LinuxMint 21
Avatar utente
Lanfranchi G.Luigi
Messaggi: 108
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Problemi con la Progress bar

Messaggio da Lanfranchi G.Luigi »

Grazie Geovign. Ottimo lavoro. :bravo: :bravo:
Avevo già risolto il problema con una Sub copiata dal "guida di librerie office" ( https://help.libreoffice.org/7.3/it/tex ... System=WIN ) che utilizza la funzione Timer.... ma penso che utilizzerò la tua macro perchè mi sembra più idonea.

A proposito mi sono accorto che il codice proposto dalla guida di librerie office a un bug.
Il calcolo dei minuti e delle ore viene fatto dividendo per 60 utilizzando una variabile long come recipiente.
Il calcolo viene stravolto e portato un ora avanti quando si supera la mezz'ora.
Questo succede perchè la variabile arrotonda alla cifra superiore i decimali che superano 0.5
Ho usato la funzione int() per risolvere il bug.
Questo il codice originale con il bug.

Codice: Seleziona tutto

Sub ExampleTimer
      Dim lSec As Long,lMin As Long,lHour As Long
      lSec = Timer
      MsgBox lSec, 0, "Secondi trascorsi da mezzanotte"
      lMin = lSec / 60
      lSec = lSec Mod 60
      lHour = lMin / 60
      lMin = lMin Mod 60
    MsgBox Right("00" & lHour , 2) & ":"& Right("00" & lMin , 2) & ":" & Right("00" & lSec , 2), 0, "Sono le ore"
End Sub
Questo il codice corretto.

Codice: Seleziona tutto

Sub ExampleTimer
 Dim lSec as Long,lMin as Long,lHour as Long 
  lSec = Timer
  MsgBox lSec, 0, "Secondi trascorsi da mezzanotte"
  lMin = Int(lSec / 60)
  lSec = lSec Mod 60 
  lHour = Int(lMin / 60)     
  lMin = lMin Mod 60 
   MsgBox Right("00" & lHour , 2) & ":"& Right("00" & lMin , 2) & ":" & Right("00" & lSec , 2), 0, "Sono le ore"   
End Sub
Grazie ancora a tutti per i vostri preziosi suggerimenti. :super:
Ultima modifica di charlie il domenica 31 luglio 2022, 11:14, modificato 1 volta in totale.
Motivazione: Formattato codice
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
geovign
Messaggi: 215
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: Problemi con la Progress bar

Messaggio da geovign »

Grazie per il riscontro.
Come avrai sicuramente già visto, per cambiare l'orario del prossimo aggiornamento, devi modificare l'istruzione

Codice: Seleziona tutto

OraNuovoAggiornamento = CDate(OraAttuale)+TimeValue("00:00:30")
all'interno della Sub RangeDiCelleModificate_modified
Quindi se imposti l'aggiornamento ogni 600 secondi (10 minuti), l'istruzione puoi modificarla anche così

Codice: Seleziona tutto

OraNuovoAggiornamento = CDate(OraAttuale)+TimeValue("00:00:600")
Saluti
Geo
LibO 7 su LinuxMint 21
Avatar utente
Lanfranchi G.Luigi
Messaggi: 108
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Problemi con la Progress bar

Messaggio da Lanfranchi G.Luigi »

Geovign grazie ancora per il chiarimento.
Sono oramai convinto di aver superato lo "scoglio" e il merito va a voi e ai vostri suggerimenti.
La chiudo qui...
Grazie a tutti.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: [Risolto]Problemi con la Progress bar

Messaggio da patel »

Se metti Risolto dovresti cambiare titolo alla discussione, non hai usato la progress bar.
-------------------
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 108
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: [Risolto]Problemi con la Progress bar

Messaggio da Lanfranchi G.Luigi »

Ok Patel....fatto.

Geo il tuo ultimo suggerimento è sbagliato.
OraNuovoAggiornamento = CDate(OraAttuale)+TimeValue("00:00:600").
Il programma si impianta e calc si chiude da solo senza salvare.

Funziona correttamente cosi
OraNuovoAggiornamento = CDate(OraAttuale)+TimeValue("00:10:00").

Ciao.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Rispondi