[Risolto] File che si blocca durante il salvataggio

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

[Risolto] File che si blocca durante il salvataggio

Messaggio da giosipan »

Buongiorno,
ho un problema con un file che avevo creato qualche anno fa grazie al vostro aiuto (https://forum.openoffice.org/it/forum/v ... 769#p56769).
Da un giorno all'altro è successo che si blocca durante il salvataggio però solamente se viene cambiato il valore contenuto nelle celle D4 e D22 del foglio 'Input' dove c'è un menù a tendina.
Se vado a modificare gli atri campi lui salva correttamente.
Utilizzo la versione di Libreoffice 7.6.0.3.
Sul un altro PC ho invece installato una versione più vecchia, la 5.7 mi sembra, e lì non da nessun tipo di problema.
Questo è il file
CMR.ods
(97.19 KiB) Scaricato 72 volte
Qualcuno può aiutarmi a capire cosa è successo?
Ultima modifica di giosipan il venerdì 25 agosto 2023, 14:53, modificato 1 volta in totale.
Libreoffice 7.6.0.3 su Win11
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: File che si blocca durante il salvataggio

Messaggio da patel »

Io ho cambiato d4 e d22 e poi salvato senza problemi.
-------------------
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
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: File che si blocca durante il salvataggio

Messaggio da giosipan »

Siccome il nome che si sceglie dai menù a tendina va a richiamare un' immagine specifica contenuta all'interno di una cartella e la va a posizionare in un determinato punto dei fogli successivi ad 'Input', dopo il tuo messaggio ho provato a togliere la cartella e mi da l'avviso 'immagine non trovata' però, effettivamente, il salvataggio lo fa correttamente anche a me.
Deve esserci quindi qualche problema con l'inserimento delle immagini :roll:
Libreoffice 7.6.0.3 su Win11
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: File che si blocca durante il salvataggio

Messaggio da Lanfranchi G.Luigi »

Cambiando D4 e D22 mi da un errore di immagine non trovata ma il salvataggio va a buon fine.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: File che si blocca durante il salvataggio

Messaggio da giosipan »

Lanfranchi G.Luigi ha scritto: giovedì 24 agosto 2023, 11:03 Cambiando D4 e D22 mi da un errore di immagine non trovata ma il salvataggio va a buon fine.
Esatto, anche a me se elimino la cartella contenente le immagini che vengono richiamate il salvataggio va a buon fine.
Se però ripristino la cartella il salvataggio si blocca.
Libreoffice 7.6.0.3 su Win11
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: File che si blocca durante il salvataggio

Messaggio da patel »

D'altra parte noi non abbiamo la cartella di salvataggio, magari spiega meglio cosa dobbiamo fare per riprodurre il problema.
-------------------
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
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: File che si blocca durante il salvataggio

Messaggio da giosipan »

Se volete posso caricarla sul cloud altrimenti basta creare una cartella 'Firme' con all'interno delle immagini .jpg denominate 'Giosi', 'Paolo', 'Sonia', 'Manuela' e metterla sulla stessa cartella del file CMR.ods.
In questo caso si va ad interagire solo con l'elenco della cella D4.
Libreoffice 7.6.0.3 su Win11
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: File che si blocca durante il salvataggio

Messaggio da Lanfranchi G.Luigi »

L'istruzione che blocca il salvataggio è questa.

Nella sub Immagine1(target).
Image.LayerId = 1 'imposta l'immagine sullo sfondo

Se la trasformo in commento (') il salvataggio non si blocca.
Sono però a digiuno per quel che riguarda la sintassi di questo comando.
Ultima modifica di Lanfranchi G.Luigi il giovedì 24 agosto 2023, 14:56, modificato 1 volta in totale.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: File che si blocca durante il salvataggio

Messaggio da giosipan »

Lanfranchi G.Luigi ha scritto: giovedì 24 agosto 2023, 14:46 L'istruzione che blocca il salvataggio è questa.
Image.LayerId = 1 'imposta l'immagine sullo sfondo
Se la trasformo in commento (') il salvataggio non si blocca.
Sono però a digiuno per quel che riguarda la sintassi di questo comando.
Bhé è già un ottimo inizio direi e ti ringrazio!
Spero che ci sia qualcun altro che possa darmi qualche consiglio per risolvere.

Da capire anche perché ha sempre funzionato e poi tutto ad un tratto ha smesso.
Libreoffice 7.6.0.3 su Win11
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: File che si blocca durante il salvataggio

Messaggio da Lanfranchi G.Luigi »

Stavo facendo alcune prove e mi sono accorto di un altro errore.
Se scelgo più immagini nel menù a cascata in D4 il programma mi sostituisce la foto vecchia (cancellandola) con quella nuova.
Se però salvo il file con un immagine memorizzata, questa non viene più cancellata dal programma ma viene sovrapposta dalla nuova scelta nel menu D4.
Se si esegue un "taglia" sulla foto appena immessa, comparirà la foto sottostante precedentemente salvata.
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: File che si blocca durante il salvataggio

Messaggio da patel »

Ho segnalato la discussione a Gaetanopr, l'autore della macro.
-------------------
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
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: File che si blocca durante il salvataggio

Messaggio da giosipan »

Lanfranchi G.Luigi ha scritto: venerdì 25 agosto 2023, 8:24 Stavo facendo alcune prove e mi sono accorto di un altro errore.
Se scelgo più immagini nel menù a cascata in D4 il programma mi sostituisce la foto vecchia (cancellandola) con quella nuova.
Se però salvo il file con un immagine memorizzata, questa non viene più cancellata dal programma ma viene sovrapposta dalla nuova scelta nel menu D4.
Se si esegue un "taglia" sulla foto appena immessa, comparirà la foto sottostante precedentemente salvata.
Questo lo avevo notato anch'io e infatti una volta a settimana cancellavo manualmente tutte le immagini perché altrimenti il file diventava troppo grande ed era tutto rallentato.
Libreoffice 7.6.0.3 su Win11
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: File che si blocca durante il salvataggio

Messaggio da giosipan »

patel ha scritto: venerdì 25 agosto 2023, 8:28 Ho segnalato la discussione a Gaetanopr, l'autore della macro.
Grazie mille!
Libreoffice 7.6.0.3 su Win11
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: File che si blocca durante il salvataggio

Messaggio da Lanfranchi G.Luigi »

Il programma va a vedere l' ancoraggio dell'immagine e se corrisponde alla cella, l'immagine viene cancellata/sostituita.
Quando si apre il file con immagini già salvate il programma non vede l'ancoraggio e quindi non esegue le istruzioni a seguire.
Per questo non cancella le immagini salvate con il file.
C'è forse qualche parametro da dare a Calc perchè memorizzi l'ancoraggio delle immagini alle celle ?

Ecco l'allegato che lo dimostra.
Ho agito solo su un foglio per semplificare... serve chiaramente la cartella con le immagini.
Se, dopo aver inserito i nomi si salva il file, alla riapertura il programma non trova più gli ancoraggi.
Allegati
CMR - Copia.ods
(87.88 KiB) Scaricato 74 volte
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: File che si blocca durante il salvataggio

Messaggio da Gaetanopr »

Salve, purtroppo Libreoffice presenta dei bug con gli ancoraggi alle celle delle immagini, almeno in passato li aveva e credo anche adesso, facendo un test la macro ancora alla cella correttamente ma alla riapertura l'immagine risulta ancorata alla pagina per cui la macro non trovando l'indirizzo dell'ancoraggio non provvede alla cancellazione e le immagini vengono sovrapposte, due possibili soluzioni sarebbero, solo in caso nelle pagine sia presente una sola immagine, effettuare la cancellazione senza verifica, l'altra cancellare tutte le immagini che riportino un nome specifico.

Codice: Seleziona tutto

  For i = 0 To Drw.Count - 1
            If Drw(i).Name = "Sonia" Or Drw(i).Name  = "Giosi"  Then'  
                Drw.Remove(Drw(i))
                Exit For
            end if
        Next i

Codice: Seleziona tutto

  For i = 0 To Drw.Count - 1
               Drw.Remove(Drw(i))
           Next i
Togliendo questa parte ImageLayerid come fatto notare da Luigi
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: File che si blocca durante il salvataggio

Messaggio da Gaetanopr »

Lanfranchi G.Luigi ha scritto: venerdì 25 agosto 2023, 11:17 C'è forse qualche parametro da dare a Calc perchè memorizzi l'ancoraggio delle immagini alle celle ?
Non avevo visto la tua risposta, comunque l'istruzione è già presente nella macro ed è questa

Codice: Seleziona tutto

Image.Anchor = Doc.Sheets(s).getCellrangebyname(oCell)
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: File che si blocca durante il salvataggio

Messaggio da giosipan »

Gaetanopr ha scritto: venerdì 25 agosto 2023, 11:30 Salve, purtroppo Libreoffice presenta dei bug con gli ancoraggi alle celle delle immagini, almeno in passato li aveva e credo anche adesso, facendo un test la macro ancora alla cella correttamente ma alla riapertura l'immagine risulta ancorata alla pagina per cui la macro non trovando l'indirizzo dell'ancoraggio non provvede alla cancellazione e le immagini vengono sovrapposte, due possibili soluzioni sarebbero, solo in caso nelle pagine sia presente una sola immagine, effettuare la cancellazione senza verifica, l'altra cancellare tutte le immagini che riportino un nome specifico.

Codice: Seleziona tutto

  For i = 0 To Drw.Count - 1
            If Drw(i).Name = "Sonia" Or Drw(i).Name  = "Giosi"  Then'  
                Drw.Remove(Drw(i))
                Exit For
            end if
        Next i

Codice: Seleziona tutto

  For i = 0 To Drw.Count - 1
               Drw.Remove(Drw(i))
           Next i
Togliendo questa parte ImageLayerid come fatto notare da Luigi
Buongiorno Gaetanopr e grazie per esserti unito alla discussione!
Diciamo che potrei adottare la prima soluzione che proponi per ovviare al discorso della mancata cancellazione dell'immagine precedente.
Il problema più grande però rimane quello che non mi fa salvare il file e da quanto scritto e verificato da Luigi il problema sta in questa istruzione:

sub Immagine1(target).
Image.LayerId = 1 'imposta l'immagine sullo sfondo

Puoi aiutarmi anche per questo?
Libreoffice 7.6.0.3 su Win11
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: File che si blocca durante il salvataggio

Messaggio da Gaetanopr »

Un'altra soluzione alternativa sarebbe quella di sfruttare la posizione dell'immagine che dovrebbe essere sempre uguale.
Da provare
For i = 0 To Drw.Count - 1
If Drw(i).Position.X = ITarget.position.x and Drw(i).Position.Y = ITarget.position.y Then'
Drw.Remove(Drw(i))
Exit For
end if
Next i
Ultima modifica di Gaetanopr il venerdì 25 agosto 2023, 12:20, modificato 1 volta in totale.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: File che si blocca durante il salvataggio

Messaggio da Gaetanopr »

giosipan ha scritto: venerdì 25 agosto 2023, 12:03 sub Immagine1(target).
Image.LayerId = 1 'imposta l'immagine sullo sfondo

Puoi aiutarmi anche per questo?
Togli questa istruzione, non conosco il motivo per cui blocca la macro, potrebbe essere un bug di LibreOffice in quanto su OpenOffICE FUNZIONA.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: File che si blocca durante il salvataggio

Messaggio da giosipan »

Gaetanopr ha scritto: venerdì 25 agosto 2023, 12:16
giosipan ha scritto: venerdì 25 agosto 2023, 12:03 sub Immagine1(target).
Image.LayerId = 1 'imposta l'immagine sullo sfondo

Puoi aiutarmi anche per questo?
Togli questa istruzione, non conosco il motivo per cui blocca la macro, potrebbe essere un bug di LibreOffice in quanto su OpenOffICE FUNZIONA.
Il problema è che mi copre le scritte del documento rimanendo in primo piano.
Se non si risolvere proverò a cambiare le immagini in .png per togliere lo sfondo perché quelle scritte devo essere visibili purtroppo.
Libreoffice 7.6.0.3 su Win11
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: File che si blocca durante il salvataggio

Messaggio da Gaetanopr »

Inverti le istruzioni in questo modo
Image.LayerId = 1 'imposta l'immagine sullo sfondo
Image.Anchor = Doc.Sheets(s).getCellrangebyname(oCell)
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: File che si blocca durante il salvataggio

Messaggio da giosipan »

Gaetanopr ha scritto: venerdì 25 agosto 2023, 12:31 Inverti le istruzioni in questo modo
Image.LayerId = 1 'imposta l'immagine sullo sfondo
Image.Anchor = Doc.Sheets(s).getCellrangebyname(oCell)
Perfetto!!! Adesso non si blocca più al salvataggio!!!
Direi che il problema è stato risolto!
Grazie mille!
Libreoffice 7.6.0.3 su Win11
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: File che si blocca durante il salvataggio

Messaggio da giosipan »

Per quanto riguarda invece la cancellazione delle immagini presenti queste due istruzioni vanno in errore:

Codice: Seleziona tutto

For i = 0 To Drw.Count - 1
               Drw.Remove(Drw(i))
           Next i

Codice: Seleziona tutto

For i = 0 To Drw.Count - 1
If Drw(i).Position.X = ITarget.position.x and Drw(i).Position.Y = ITarget.position.y Then'
Drw.Remove(Drw(i))
Exit For
end if
Next i
Questa invece funziona ma avendo due immagini presenti sullo stesso foglio non va bene perché le cancella entrambi:

Codice: Seleziona tutto

For i = 0 To Drw.Count - 1
            If Drw(i).Name = "Sonia" Or Drw(i).Name  = "Giosi"  Then'  
                Drw.Remove(Drw(i))
                Exit For
            end if
        Next i
Comunque non è un grosso problema, se si può risolvere bene altrimenti continuo a fare come facevo finora e cioè cancellarle a mano.

Grazie ancora :D
Libreoffice 7.6.0.3 su Win11
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [Risolto] File che si blocca durante il salvataggio

Messaggio da Gaetanopr »

Prova in questo modo

Codice: Seleziona tutto

Sub Immagine1(Target)
Dim Sh As Object, addr As Object
Dim Doc As Object
Dim Drw As Object, Image As Object, Gp As Object
Dim positionImage As New com.sun.star.awt.Point
Dim props(0) As New com.sun.star.beans.PropertyValue
Doc = ThisComponent
fpath = left(Doc.geturl(),revinstr(Doc.geturl(),"/"))
Sh = Target.getSpreadsheet()
oCellT() = Split(Target.AbsoluteName, ".")
oCellTarget = oCellT(1)
If oCellTarget = "$D$4" Or oCellTarget = "$D$22" Then
   If oCellTarget = "$D$4" Then
      ITarget = sh.getCellRangeByName("E79") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$E$79"
   ElseIf oCellTarget = "$D$22" Then
      ITarget = sh.getCellRangeByName("K79") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$K$79"
   End If

   NomeImage =  Target.String
   For s = 1 To 5
      Gp = createUnoservice("com.sun.star.graphic.GraphicProvider")
      props(0).Name = "URL" '   D:\Users\Gaetano\Desktop\download.png
      props(0).Value = fpath & "Firme/" & NomeImage & ".jpg" '("C:\Documents and Settings\Administrator\Desktop\" & NomeImage & ".jpg")
     ' props(0).Value = fpath & NomeImage & ".jpg" '("C:\Documents and Settings\Administrator\Desktop\" & NomeImage & ".jpg")
      Image=Doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
      Image.Graphic = Gp.queryGraphic( props() )
    ' Controllo se è presente l'immagine in archivio
      If IsNull(Image.Graphic) Then MsgBox "Immagine non presente in archivio" : exit sub
        ' Elimino se presente immagine precedente nella cella di destinazione
       
       Drw = Doc.sheets(s).DrawPage

    '   Aggiungo l'immagine   
       Drw.add(Image)
      ' Ridimensiono l'immagine
       Larg =  10000
       resizeImageByWidth(Image,Larg)

       positionImage.x = ITarget.position.x
       positionImage.y = ITarget.position.y
       Image.Position = positionImage
       Image.Name = NomeImage

      Image.LayerId = 1  'imposta l'immagine sullo sfondo
      Image.Anchor = Doc.Sheets(s).getCellrangebyname(oCell)
      
      
        For i = 0 To Drw.Count - 1
            If Drw(i).Name <> NomeImage Then
               if Drw(i).Position.x = Image.Position.x Then
                   Drw.Remove(Drw(i))
                 '  Exit For
               end if
            end if
        Next i
      
      
  Next s

End if

End Sub
In pratica prima aggiungo l'immagine, poi tramite un ciclo elimino le immagini con nome diverso che si trovano sulle stesse coordinate dell'ultima inserita.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: [Risolto] File che si blocca durante il salvataggio

Messaggio da giosipan »

Gaetanopr ha scritto: venerdì 25 agosto 2023, 15:53 Prova in questo modo

Codice: Seleziona tutto

Sub Immagine1(Target)
Dim Sh As Object, addr As Object
Dim Doc As Object
Dim Drw As Object, Image As Object, Gp As Object
Dim positionImage As New com.sun.star.awt.Point
Dim props(0) As New com.sun.star.beans.PropertyValue
Doc = ThisComponent
fpath = left(Doc.geturl(),revinstr(Doc.geturl(),"/"))
Sh = Target.getSpreadsheet()
oCellT() = Split(Target.AbsoluteName, ".")
oCellTarget = oCellT(1)
If oCellTarget = "$D$4" Or oCellTarget = "$D$22" Then
   If oCellTarget = "$D$4" Then
      ITarget = sh.getCellRangeByName("E79") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$E$79"
   ElseIf oCellTarget = "$D$22" Then
      ITarget = sh.getCellRangeByName("K79") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$K$79"
   End If

   NomeImage =  Target.String
   For s = 1 To 5
      Gp = createUnoservice("com.sun.star.graphic.GraphicProvider")
      props(0).Name = "URL" '   D:\Users\Gaetano\Desktop\download.png
      props(0).Value = fpath & "Firme/" & NomeImage & ".jpg" '("C:\Documents and Settings\Administrator\Desktop\" & NomeImage & ".jpg")
     ' props(0).Value = fpath & NomeImage & ".jpg" '("C:\Documents and Settings\Administrator\Desktop\" & NomeImage & ".jpg")
      Image=Doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
      Image.Graphic = Gp.queryGraphic( props() )
    ' Controllo se è presente l'immagine in archivio
      If IsNull(Image.Graphic) Then MsgBox "Immagine non presente in archivio" : exit sub
        ' Elimino se presente immagine precedente nella cella di destinazione
       
       Drw = Doc.sheets(s).DrawPage

    '   Aggiungo l'immagine   
       Drw.add(Image)
      ' Ridimensiono l'immagine
       Larg =  10000
       resizeImageByWidth(Image,Larg)

       positionImage.x = ITarget.position.x
       positionImage.y = ITarget.position.y
       Image.Position = positionImage
       Image.Name = NomeImage

      Image.LayerId = 1  'imposta l'immagine sullo sfondo
      Image.Anchor = Doc.Sheets(s).getCellrangebyname(oCell)
      
      
        For i = 0 To Drw.Count - 1
            If Drw(i).Name <> NomeImage Then
               if Drw(i).Position.x = Image.Position.x Then
                   Drw.Remove(Drw(i))
                 '  Exit For
               end if
            end if
        Next i
      
      
  Next s

End if

End Sub
In pratica prima aggiungo l'immagine, poi tramite un ciclo elimino le immagini con nome diverso che si trovano sulle stesse coordinate dell'ultima inserita.
Va in errore e mi evidenzia questa riga:

Codice: Seleziona tutto

If Drw(i).Name <> NomeImage Then
Valore non valido, mi scrive
Libreoffice 7.6.0.3 su Win11
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [Risolto] File che si blocca durante il salvataggio

Messaggio da Gaetanopr »

Strano a me funziona, allego il file.
Non è che nel tuo originale hai altri tipi di oggetti ?
Allegati
CMR (1).ods
(96.19 KiB) Scaricato 55 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: [Risolto] File che si blocca durante il salvataggio

Messaggio da giosipan »

Trovato l'errore!
Ho messo a confronto il tuo codice con quello mio e mi sono accorto che una virgoletta era finita da un'altra parte e non so come!

Codice: Seleziona tutto

    For i = 0 To Drw.Count - 1
            If Drw(i).Name <> NomeImage Then
               if Drw(i).Position.x = Image.Position.x Then
                   Drw.Remove(Drw(i))
                 ' Exit For
               end if
            end if
        Next i
Praticamente 'Exit for' era diventato un commento.
Adesso funziona benissimo!

Grazie ancora per il tuo preziosissimo aiuto.
Libreoffice 7.6.0.3 su Win11
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [Risolto] File che si blocca durante il salvataggio

Messaggio da Gaetanopr »

In realtà non era un errore, Exit for non va messo in quanto(non dovrebbe succedere) potrebbero esserci tante immagini e con exit for ne eliminerebbe solo una e poi uscirebbe dal ciclo.
Il codice corretto è il seguente

Codice: Seleziona tutto

For i = Drw.Count - 1 To  0 step - 1
            If Drw(i).Name <> NomeImage Then
                if Drw(i).Position.x = Image.Position.x Then'
                       Drw.Remove(Drw(i))
                end if
            end if
        Next i
Ti faccio un esempio, se richiami la macro due volte con il nome Sonia, attualmente la macro inserirebbe due volte la stessa immagine in quanto verrebbe meno la verifica sul nome diverso, al variare di Sonia se lasci exit for cancellerebbe solo una immagine con nome Sonia e non due o tre e così via.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: [Risolto] File che si blocca durante il salvataggio

Messaggio da giosipan »

Gaetanopr ha scritto: venerdì 25 agosto 2023, 16:46 In realtà non era un errore, Exit for non va messo in quanto(non dovrebbe succedere) potrebbero esserci tante immagini e con exit for ne eliminerebbe solo una e poi uscirebbe dal ciclo.
Il codice corretto è il seguente

Codice: Seleziona tutto

For i = Drw.Count - 1 To  0 step - 1
            If Drw(i).Name <> NomeImage Then
                if Drw(i).Position.x = Image.Position.x Then'
                       Drw.Remove(Drw(i))
                end if
            end if
        Next i
Ti faccio un esempio, se richiami la macro due volte con il nome Sonia, attualmente la macro inserirebbe due volte la stessa immagine in quanto verrebbe meno la verifica sul nome diverso, al variare di Sonia se lasci exit for cancellerebbe solo una immagine con nome Sonia e non due o tre e così via.
Sei stato chiarissimo!
Ho applicato quest'ultima modifica e funziona benissimo!
Grazie ancora!!!
Libreoffice 7.6.0.3 su Win11
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: [Risolto] File che si blocca durante il salvataggio

Messaggio da Lanfranchi G.Luigi »

Dato che il problema c'è solo all'apertura del file con foto già inserita, un'altra soluzione potrebbe essere questa.
All'apertura del file cancellare tutte le foto (tabula rasa).

Codice: Seleziona tutto

Sub CancellaTutto
Dim Doc As Object
Dim Drw As Object
Doc = ThisComponent
for S=1 to 5
  Drw = Doc.sheets(S).DrawPage
  Fine=Drw.count-1  
    For i = 0 To fine 
           Drw.Remove(Drw(0))     
    Next i      
 Next S   
  End Sub
Macro da abbinare all'evento "Apri documento"
Sempre che il documento serva solo per la stampa e non per l'archiviazione.
In questo caso si potrebbe abbinare la macro ad un pulsante.
Così si eviterebbe di cancellare le foto manualmente.
Ho ripreso il file originale modificando...

Image.LayerId = 1 'imposta l'immagine sullo sfondo
Image.Anchor = Doc.Sheets(s).getCellrangebyname(oCell)

In allegato la versione con pulsante.
Allegati
CMR.ods
(88.16 KiB) Scaricato 64 volte
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Rispondi