[Risolto]Chiudere il documento con macro

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

[Risolto]Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Buongiorno.

Vorrei, con determinate condizioni, chiudere il documento senza salvarlo via macro.
Ho adottato vari suggerimenti trovati in rete ma, quando si esegue l'arresto, compare sempre un messaggio d'errore.
Ultimo "Errore di runtime BASIC. Proprietà o metodo non trovato: RangeDiCelleModificate_disposing."
Al riavvio del file il programma tenta un ripristino documento.
Non c'è un sistema per chiudere il documento senza salvarlo, esente da errori ?

Grazie.
Ultima modifica di Lanfranchi G.Luigi il giovedì 22 giugno 2023, 11:14, modificato 1 volta in totale.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

Buonasera
Non sò quale soluzione hai trovato in rete, ma posso dirti che riscontri quell'errore perchè non hai copiato anche la macro chiamata RangeDiCelleModificate_disposing

La macro più semplice per chiudere un documento senza salvare la trovi qui
https://forum.openoffice.org/it/forum/v ... vare+macro

Quello che ti serve è costruirti una macro principale che richiami questa quando si verificano le determinate condizioni
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Grazie per la risposta.
Ho inserito la macro e poi l'ho richiamata da un'altra macro e mi da l'errore...
"Errore di runtime BASIC.
Proprietà o metodo non trovato: RangeDiCelleModificate_disposing."
Mi chiede poi all'apertura del file se voglio fare il ripristrino.
Ho voluto riprovare ma avevo già tentato questa soluzione.
Questa è la macro incriminata che richiama "aggiorna dati" che a sua volta richiama Document_close.
macro.txt
(1.9 KiB) Scaricato 70 volte
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

Come ti avevo anticipato. Hai usato un listener e questo richiede la presenza nel modulo anche di una macro chiamata “RangeDiCelleModificate_disposing."
La soluzione è: o riprendi dalla fonte internet tutta la discussione e ti copi la Macro mancante oppure ne fai una nuova esattamente con questo nome da riportare in fondo al modulo.
Se la fai ex_novo puoi riprendere là macro della discussione di questo forum che ti ho allegato e la rinomini
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Grazie per la risposta.
Ora ho capito che serve una sub “RangeDiCelleModificate_disposing." .
Purtroppo il copia e incolla l'ho fatto 2 anni fà e mi risulta impossibile accedere ancora alla fonte.
Cortesemente non puoi scrivermi la sub da copiare perchè sono completamente a digiuno in questo campo.
Grazie.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Chiudere il documento con macro

Messaggio da patel »

associa ad un pulsante questa macro

Codice: Seleziona tutto

Sub Document_close( ) ' solo da pulsante
  thiscomponent.dispose()
End Sub
-------------------
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: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Patel non mi serve da pulsante.
Avrei, in questo caso, usato il classico pulsante "X" posto sul lato dx in alto.
Il problema sorge quando c'è un problema di collegamento con internet (mio o esterno).
Il programma si aggiorna con dati errati (zero o nulli).
Una macro intercetta questo errore e , dopo un avviso, dovrebbe uscire dal programma senza salvare il documento.
Uscita forzata senza intervento alcuno.
Grazie della pazienza.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Trovo strano che non ci sia una funzione, come in Excel, che chiude il file senza problemi.
Se premo la "X" per chiudere l'applicazione e confermo l'uscita senza salvataggio, Calc non dà nessun allarme o errore, ne mi chiede un ripristino documento.
Questo che ci sia una listener attiva o no.
Possibile che non esista una corrispettiva funzione da lanciare in una macro ?
Per il momento resto in attesa di vostri suggerimenti.
Grazie.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Chiudere il documento con macro

Messaggio da patel »

Ho detto di associarla ad un pulsante perché non è lanciabile dall'editor macro, ma la puoi inserire nella tua macro.
Immaginavo che tu la provassi.
-------------------
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
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

E’ lanciabile dal listener , basta cambiargli il nome

Codice: Seleziona tutto

 Sub RangeDiCelleModificate_disposing 
  thiscomponent.dispose()
End Sub
Devi solo aggiungere queste tre righe alla fine del modulo della Macro che hai allegato
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Grazie per le risposte.
Unlufcky83 la tua risposta mi ha spiazzato.
Thiscomponent.dispose() era il comando che adoperavo come chiusura documento.(che poi generava errori e il ripristino del documento di Calc)
Che comando devo dare ora per chiude il documento e attivare la sub che hai postato ?
Comincio a dare i numeri (1-4-5-67-58-...) ha ha ha.
Portate pazienza...
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

Perché non alleghi un file di calc di esempio?
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Ok buona idea.
Ho cancellato tutto quello che non serviva e ridotto le macro all'osso.
Per attivare l'evento andare in "Modifica"/"Collegamenti a file..."/"Aggiorna".
Ecco l'allegato.
Allegati
Esempio.ods
(74.55 KiB) Scaricato 68 volte
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

Con l'uso del listener sia ThisComponent.close(true) sia ThisComponent.dispose() chiudono il file senza salvare, ma generano una chiusura con errore che poi fa comparire la finestra di ripristino alla riapertura del file. Il problema non riesco a risolverlo nemmeno rimuovendo il listener prima della chiusura.

La macro che aggiunge il listener deve essere avviata una sola volta, quindi è associata all'evento apertura documento.
Per far chiudere il documento del mio esempio, ho posto come condizione l'inserimento di 1 in cella V1.
Per capire se e quale macro viene eseguita ho aggiunto dei msgbox.
Di seguito il codice

Codice: Seleziona tutto

REM  *****  BASIC  *****
Global CelleDaAscoltare As Object
Global Ascoltatore As Object
Sub AggiungiAscoltatoreVariazioneFoglio  ' Sub che determina il comportamento ad un cambio valore nelle celle selezionate
' ------------------------------------------------
	Doc = ThisComponent
	Foglio = Doc.Sheets(0) 
	CelleDaAscoltare = Foglio.getCellRangeByName("V1:V200") 'Range di celle da ascoltare
	Ascoltatore = CreateUnoListener("RangeDiCelleModificate_","com.sun.star.util.XModifyListener")
	CelleDaAscoltare.addModifyListener(Ascoltatore)
	msgbox "Aggiunto Ascoltatore"	
End Sub

Sub RangeDiCelleModificate_modified(oEvent As Object)                              ' Unica Sub richiamata dall'aggiornamento web                                                          
    msgbox "cella modificata"                                                
    AggiornaDati(oEvent)
End Sub


Sub RangeDiCelleModificate_disposing(oEvent As Object)  
End Sub

Sub Range_Listeners_Remove(oEvent)
	CelleDaAscoltare.RemoveModifyListener(Ascoltatore)
	msgbox "Ascoltatore rimosso"
End Sub

Sub AggiornaDati(oEvent)   
	Doc = ThisComponent
	Foglio = Doc.Sheets(0)
	' ++++++++++++++++++++++    Qua dopo alcuni controlli va chiuso Calc senza salvataggio dati ++++++++++++++++++++++
	If Foglio.getcellRangeByName("V1").value=1 Then ' condizione di esempio
	Range_Listeners_Remove (oEvent)
	wait 1000
	Doc.close(True)
'	Doc.dispose()
	End If
End Sub
Forse qualcuno sa risolvere il problema
Allegati
Esempio.ods
(71.01 KiB) Scaricato 60 volte
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Grazie per il tempo che mi hai dedicato.
A memoria di più di un anno fà...
Anch'io avevo posto la listener con l'apertura del documento ma poi, aggiungendo un timer di 5 min al collegamento, stranamente alcune volte avevo dei download consecutivi (a volte 3-4).
Spostando la listener sull'evento vista creata il problema non l'ho più avuto.
Comunque riproverò con l'apertura documento...
Grazie ancora.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Curiosità.
Leggendo i vari forum, alcuni dicevano di aggiungere un Exit sub alla procedura che chiudeva calc, questo per uscire dalla sub senza generare errori.
Lo trovavo inutile dopo un istruzione Doc.close(True)....ma l'ho fatto.
Il problema sulla chiusura rimane ma se ne aggiunge un altro.
Se si aggiunge exit sub dopo l'istruzione doc.close e si esegue la macro (impostando a 1 la cella V1) calc genera un errore di "variabile dell'oggetto non impostata".
Se invece, dopo la modifica, si salva il file, si esce da calc e poi si rientra, eseguendo la macro il problema "variabile dell'oggetto non impostata" non si presenta più.
Misteri delle tecnica.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

Lanfranchi G.Luigi ha scritto: lunedì 19 giugno 2023, 7:17 Se si aggiunge exit sub dopo l'istruzione doc.close e si esegue la macro (impostando a 1 la cella V1) calc genera un errore di "variabile dell'oggetto non impostata".
Se invece, dopo la modifica, si salva il file, si esce da calc e poi si rientra, eseguendo la macro il problema "variabile dell'oggetto non impostata" non si presenta più.
Misteri delle tecnica.
Questo perchè per rimuovere il listener è necessario usare una variabile globale che viene assegnata quando si esegue la macro che associa il listener.
Se si modifica il modulo della macro scrivendo del codice, si svuota la memoria e la variabile global diventa un oggetto nullo, quindi la macro che deve eseguire la rimozione del listener da l'errore da te riscontrato. Salvando, chiudendo e riaprendo il file, la variabile global viene assegnata e mantiene il suo valore.
Ho provato ad aggiungere exit sub, ma la finestra di ripristino all'apertura successiva si presenta comunque.
Questi Listener sono potenti ma devo dire poco argomentati. Ho cercato sul forum inglese ma non ho trovato nulla di utile..
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
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

Trovata la soluzione.
Serve un Wait subito dopo il comando Doc.close(True)
Sul mio pc non ha problemi con un Wait 5000

Codice: Seleziona tutto

REM  *****  BASIC  *****
Global CelleDaAscoltare As Object
Global Ascoltatore As Object
Sub AggiungiAscoltatoreVariazioneFoglio  ' Sub che determina il comportamento ad un cambio valore nelle celle selezionate
' ------------------------------------------------
	Doc = ThisComponent
	Foglio = Doc.Sheets(0) 
	CelleDaAscoltare = Foglio.getCellRangeByName("V1:V200") 'Range di celle da ascoltare
	Ascoltatore = CreateUnoListener("RangeDiCelleModificate_","com.sun.star.util.XModifyListener")
	CelleDaAscoltare.addModifyListener(Ascoltatore)
	msgbox "Aggiunto Ascoltatore"	
End Sub

Sub RangeDiCelleModificate_modified(oEvent As Object)                              ' Unica Sub richiamata dall'aggiornamento web                                                          
    msgbox "cella modificata"                                                
    AggiornaDati(oEvent)
End Sub


Sub RangeDiCelleModificate_disposing(oEvent As Object)  
End Sub

Sub Range_Listeners_Remove(oEvent)
	CelleDaAscoltare.RemoveModifyListener(Ascoltatore)
	msgbox "Ascoltatore rimosso"
End Sub

Sub AggiornaDati(oEvent)   
	Doc = ThisComponent
	Foglio = Doc.Sheets(0)
	' ++++++++++++++++++++++    Qua dopo alcuni controlli va chiuso Calc senza salvataggio dati ++++++++++++++++++++++
	If Foglio.getcellRangeByName("V1").value=1 Then ' condizione di esempio
	Range_Listeners_Remove (oEvent)
	Doc.close(True)
    wait 5000
	End If
End Sub
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Provato sul mio pc....
Da l'impressione che funzioni poi terminato il tempo di attesa compare ancora il solito messaggio di errore.
Provato anche con 6000.
Peccato...
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Buongiorno.
Il problema non è legato alla listener.
In questo file (vedi allegato senza listener) chiudo Calc con due opzioni.
1) Quando cambio il valore di A1, il cambiamento viene intercettato da una gestione evento che chiude Calc.
2) Premendo il pulsante "click" Calc viene chiuso.
La prima opzione da l'errore mentre la seconda no.
Calc da un errore quando è chiuso all'interno di una macro "evento".
Idee in merito ?
Grazie.
Allegati
Test base.ods
(10.53 KiB) Scaricato 76 volte
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

Forse ho risolto aggiungendo un altro listener per la chiusura del file. Prova questo nuovo allegato. Ho messo molti msgbox per capire quali macro vengono eseguite mano mano, ma se è tutto ok puoi anche rimuoverle.
Fai prove :roll:

Codice: Seleziona tutto

REM  *****  BASIC  *****
Global CelleDaAscoltare As Object
Global Ascoltatore As Object
Global oListener as Object

Sub AggiungiAscoltatoreVariazioneFoglio  ' Sub che determina il comportamento ad un cambio valore nelle celle selezionate
' ------------------------------------------------
	Doc = ThisComponent
	Foglio = Doc.Sheets(0) 
	CelleDaAscoltare = Foglio.getCellRangeByName("V1:V200") 'Range di celle da ascoltare
	Ascoltatore = CreateUnoListener("RangeDiCelleModificate_","com.sun.star.util.XModifyListener")
	CelleDaAscoltare.addModifyListener(Ascoltatore)
'aggiunta ascoltatore per gestire correttamente la chiusura
	oListener = CreateUnoListener("Listensub_", "com.sun.star.util.XCloseListener")
	thisComponent.addCloseListener(oListener)
	msgbox "Aggiunto Ascoltatore"	
End Sub

Sub RangeDiCelleModificate_modified(oEvent As Object)                              ' Unica Sub richiamata dall'aggiornamento web                                                          
    msgbox "cella modificata" 
   	Doc = ThisComponent
	Foglio = Doc.Sheets(0)                                                
    If Foglio.getcellRangeByName("V1").value=1 Then ' condizione di esempio
		Range_Listeners_Remove (oEvent)
	    Doc.ismodified(False)
		msgbox "Sta per chiudere"
	 	Doc.close(true)
	End If
End Sub

Sub Range_Listeners_Remove(oEvent)
	CelleDaAscoltare.RemoveModifyListener(Ascoltatore)
	msgbox "Ascoltatore rimosso"
End Sub

Sub RangeDiCelleModificate_disposing(oEvent As Object)  
End Sub

Sub Listensub_queryClosing(oEvent, bOwnership)
msgbox("query")
End Sub

Sub Listensub_notifyClosing(oEvent)
msgbox("notify")
End Sub 

Sub Listensub_disposing(oEvent)
msgbox("disposing")
End Sub
Allegati
Esempio2.ods
(71.04 KiB) Scaricato 59 volte
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Pulllltroppo è uguale a prima. :crazy:
Si apre una pagina e mi dice che Calc ha fatto un arresto anomalo.
Poi richiama la pagina principale di libreoffice chiedendomi se voglio inviare un rapporto dell'errore. Cosa che una volta ho fatto.
Comunque l'errore non è legato alla listener. Come vedi il mio allegato precedente ne è esente ma genera lo stesso errore.

Non so se esiste un'istruzione in basic che possa "resettare" calc azzerando tutte le pendenze che siano eventi o altro.
Non avrebbe importanza anche se ciò inquinasse dei dati perche si esce senza salvataggio.
Teoricamente dovrebbe farlo l'istruzione Close(true).

Strano che a te non dia problemi....
Grazie per l'impegno.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

A me adesso chiude il file e alla riapertura non mi chiede il ripristino. A parte il messaggio in cui ti chiede di inviare il rapporto di errore, ha smesso di chiederti il ripristino del file?
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Si il ripristino, quando riapro il file, non me lo richiede più.
Mi da il messaggio di errore che Calc si è arrestato in maniera anomala, dopo apre la pagina iniziale di Libreoffice chiedendomi se voglio inviare un report.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

Ottimo, vuol dire che stiamo verso la risoluzione. Adesso incide la differenza di sistema operativo. Con Windows dovrebbe essere utile mettere Stardesktop.terminate nell’ultima macro

Codice: Seleziona tutto

 Sub Listensub_disposing(oEvent)
msgbox("disposing")
Stardesktop.terminate()
End Sub
Dovrei fare le prove su un pc Windows però
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Fatta io la prova....
Siamo vicino alla soluzione credo.
Ora non da più nessun messaggio alla chiusura.
Quando riapro il file mi appare la schermata "rapporto di errore".
Questo succede anche se chiudo il file manualmente, cosa che prima non succedeva.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Dato che l'errore avviene se richiamo la sub di chiusura documenti da una macro legata ad un evento, ho pensato bene di creare un pulsante normalmente nascosto, poi reso visibile dalla macro sopre citata.
Uscito dalla macro, cliccando sul pulsante ora visibile avrei chiuso Calc in maniera pulita.
Bell'idea se non fosse che mi sono scontrato con un problema...come faccio a rendere visibile il pulsante con codice basic ?
Ho speso sei ore su internet in ricerche senza uscirne a capo.
Sicuramente è possibile dato che. nelle specifiche del pulsante, si può scegliere se renderlo visibile o no di default.
LibreOffice ha sicuramente grandi potenzialità ma sinceramente le mie forze cominciano a venirmi meno.....

PS: Un grosso grazie IN OGNI CASO a unlucky83
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

Lanfranchi G.Luigi ha scritto: mercoledì 21 giugno 2023, 16:32 Dato che l'errore avviene se richiamo la sub di chiusura documenti da una macro legata ad un evento, ho pensato bene di creare un pulsante normalmente nascosto, poi reso visibile dalla macro sopre citata.
Ottima alternativa, cosi evitiamo di compromettere il profilo utente di libreoffice o openoffice con degli arresti errati. Mi dispiace non aver risolto questa cosa al momento, ma è inutile complicarsi la vita se si trova un'alternativa soddisfacente.
Uscito dalla macro, cliccando sul pulsante ora visibile avrei chiuso Calc in maniera pulita.
Bell'idea se non fosse che mi sono scontrato con un problema...come faccio a rendere visibile il pulsante con codice basic ?
Ho speso sei ore su internet in ricerche senza uscirne a capo.
Qui sul forum c'erano delle informazioni sparse per rispondere al tuo nuovo quesito, ma ci sta perdersi quando non si sa bene cosa cercare.
Prova questo allegato e dimmi se cosi ti va bene
Allegati
Esempio4_con pulsante.ods
(72.08 KiB) Scaricato 69 volte
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
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Chiudere il documento con macro

Messaggio da Lanfranchi G.Luigi »

Si va bene così grazie. :bravo:
Cosa faccio ? Chiudo l'argomento con risolto o lo lascio aperto ?
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Chiudere il documento con macro

Messaggio da unlucky83 »

:super: Va bene chiuderlo.
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
Rispondi