[Risolto]Chiudere il documento con macro
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
[Risolto]Chiudere il documento con macro
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.
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
Re: Chiudere il documento con macro
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
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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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.
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.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Re: Chiudere il documento con macro
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
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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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.
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
Re: Chiudere il documento con macro
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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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.
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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.
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
Re: Chiudere il documento con macro
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.
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
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
Re: Chiudere il documento con macro
E’ lanciabile dal listener , basta cambiargli il nome
Devi solo aggiungere queste tre righe alla fine del modulo della Macro che hai allegato
Codice: Seleziona tutto
Sub RangeDiCelleModificate_disposing
thiscomponent.dispose()
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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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...
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
Re: Chiudere il documento con macro
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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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.
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
Re: Chiudere il documento con macro
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
Forse qualcuno sa risolvere il problema
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
- 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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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.
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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.
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
Re: Chiudere il documento con macro
Questo perchè per rimuovere il listener è necessario usare una variabile globale che viene assegnata quando si esegue la macro che associa il listener.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.
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
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
Re: Chiudere il documento con macro
Trovata la soluzione.
Serve un Wait subito dopo il comando Doc.close(True)
Sul mio pc non ha problemi con un Wait 5000
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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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...
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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.
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
Re: Chiudere il documento con macro
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
Fai prove
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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
Pulllltroppo è uguale a prima.
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.
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
Re: Chiudere il documento con macro
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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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.
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
Re: Chiudere il documento con macro
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
Dovrei fare le prove su un pc Windows però
Codice: Seleziona tutto
Sub Listensub_disposing(oEvent)
msgbox("disposing")
Stardesktop.terminate()
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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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.
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
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
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
Re: Chiudere il documento con macro
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.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.
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.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.
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
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
- Lanfranchi G.Luigi
- Messaggi: 116
- Iscritto il: venerdì 12 aprile 2019, 16:54
Re: Chiudere il documento con macro
Si va bene così grazie.
Cosa faccio ? Chiudo l'argomento con risolto o lo lascio aperto ?
Cosa faccio ? Chiudo l'argomento con risolto o lo lascio aperto ?
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Re: Chiudere il documento con macro
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
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