Application.ScreenUpdating = False

Creare una macro - Scrivere uno script - Usare le API
Rispondi
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Application.ScreenUpdating = False

Messaggio da patel »

qual'è il corrispondente in OObasic ?
ho provato ThisComponent.lockControllers , ma non mi funziona nel caso di copia da un foglio all'altro
-------------------
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
vladboscaneanu
Volontario
Volontario
Messaggi: 380
Iscritto il: martedì 22 ottobre 2013, 1:35

Re: Application.ScreenUpdating = False

Messaggio da vladboscaneanu »

Ciao patel,come dice mio amico Bernard Marcelly,
si deve usare il modello del documento
Freezing screen is done with method lockControllers() of the document's Model.
Prova, poi ci fai sapere.
Ciao
LibreOffice ultima versione su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Application.ScreenUpdating = False

Messaggio da patel »

Gaetano, se ci sei batti un colpo ! Vlad non è molto prodigo di spiegazioni.
-------------------
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
Gaetanopr
Volontario
Volontario
Messaggi: 3314
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Application.ScreenUpdating = False

Messaggio da Gaetanopr »

Ciao, patel potresti allegare il file? comunque io ho dato un'occhiata ad un mio file dove effettuo varie copie tra fogli diversi ed ho usato quest'altro metodo, serve a bloccare l'aggiornamento delle formule e a velocizzare la macro.
Provali assieme al metodo da te indicato

Codice: Seleziona tutto

Doc.addActionLock

Codice: Seleziona tutto

Doc.resetActionLocks()
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Application.ScreenUpdating = False

Messaggio da patel »

il file Fattura.ods è allegato nell'ultimo post di viewtopic.php?f=9&t=5764
vorrei evitare i passaggi da un foglio all'altro
-------------------
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
Gaetanopr
Volontario
Volontario
Messaggi: 3314
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Application.ScreenUpdating = False

Messaggio da Gaetanopr »

Purtroppo la macro è in Vba sarebbe meglio una macro in Ooo Basic
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Application.ScreenUpdating = False

Messaggio da patel »

non avevo voglia di trasformarla, comunque non vale la pena perderci tempo, grazie, speravo che tu avessi una soluzione già pronta.
Tu hai capito cosa è il modello di cui parla vlad ?
-------------------
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
Gaetanopr
Volontario
Volontario
Messaggi: 3314
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Application.ScreenUpdating = False

Messaggio da Gaetanopr »

Vlad dice che questo metodo è a livello di documento, come in effetti tu lo hai applicato cioè al ThisComponent, ma non capisco a che genere di prova si riferisce
ThisComponent.lockControllers
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Application.ScreenUpdating = False

Messaggio da patel »

ho provato ThisComponent.lockControllers su una macro OO basic che elimina le righe vuote in un foglio e non funziona, l'unica che funziona, ma è discutibile è

Codice: Seleziona tutto

ThisComponent.getCurrentController().getFrame().getContainerWindow().Visible= false
-------------------
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
vladboscaneanu
Volontario
Volontario
Messaggi: 380
Iscritto il: martedì 22 ottobre 2013, 1:35

Re: Application.ScreenUpdating = False

Messaggio da vladboscaneanu »

Ciao patel ,le macro sono state registrate.Quindi il codice si eseguie con GUI (Interfaccia Grafica Utente)attivo.
A confermare la mia ipotesi è una piccola modifica nel tuo codice,che permette di nascondere tutti i fogli,tranne quel attivo .
"Lampeggia" lo stesso,anche se i fogli non sono visibili.
Poi ho un altro esempio,con UNO, e sempre nel ambiente GUI ,dove non c'è traccia di VBA ,pero anche qui i controllori non sono disattivabili.

Codice: Seleziona tutto

sub maiuscole
ThisComponent.lockControllers
ThisComponent.addActionLock()
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "B7:F100"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
dispatcher.executeDispatch(document, ".uno:ChangeCaseToTitleCase", "", 0, args2())
ThisComponent.UnlockControllers
ThisComponent.removeActionLock()
End Sub
Dovresti fare quello che hai fatto con penultima riga:assegnare i valori direttamente,senza Cut o Paste.
Allegati
Fattura.ods
(25.87 KiB) Scaricato 237 volte
LibreOffice ultima versione su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Application.ScreenUpdating = False

Messaggio da patel »

vlad, forse non hai notato che il paste su foglio nascosto non avviene
-------------------
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
Gaetanopr
Volontario
Volontario
Messaggi: 3314
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Application.ScreenUpdating = False

Messaggio da Gaetanopr »

patel ha scritto:ho provato ThisComponent.lockControllers su una macro OO basic che elimina le righe vuote in un foglio e non funziona, l'unica che funziona, ma è discutibile è

Codice: Seleziona tutto

ThisComponent.getCurrentController().getFrame().getContainerWindow().Visible= false
Si in questo caso così funziona, oltretutto ho notato che nel file era già presente questa riga di codice ma era stata remmata
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Rispondi