[Risolto] Immagini come risultato

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

[Risolto] Immagini come risultato

Messaggio da giosipan »

Buonasera a tutti,
è il mio primo post su questo forum e spero di non sbagliare sezione per porre la mia domanda.
Innanzitutto premetto che utilizzo Windows 10 e la versione 5.2.3.3 di Libreoffice.

Tempo fa ho chiesto aiuto in un altro forum (che adesso è chiuso) e mi aiutarono due utenti attivi di questo forum, Gaetanopr e patel, per creare un file di calc che avesse queste caratteristiche:

1- richiamare delle immagini in una determinata cella (e cancellazione dell'immagine precedente) a secondo del valore presente in un'altra cella;
2- ripetizione delle immagini fino al foglio n.5;
3- impostazione delle immagini sullo sfondo del livello.

Ho perso purtroppo il file che utilizzavo e adesso sto provando a ricrearlo ma mi da sempre degli errori e non essendo pratico di VBA non so come risolvere il problema.
Allego il file con la speranza che qualcuno di voi esperti possa darmi una mano!

Giosi
Allegati
prova.ods
(9.2 KiB) Scaricato 242 volte
Ultima modifica di giosipan il martedì 24 gennaio 2017, 17:02, modificato 1 volta in totale.
Libreoffice 7.6.0.3 su Win11
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Immagini come risultato

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 = "$A$37" Or oCellTarget = "$C$37" Then
   If oCellTarget = "$A$37" Then 
      ITarget = sh.getCellRangeByName("A15") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$A$15"
   ElseIf oCellTarget = "$C$37" Then 
      ITarget = sh.getCellRangeByName("D37") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$D$37"
   End If

   NomeImage =  Target.String
   For s = 0 To 4
      Gp = createUnoservice("com.sun.star.graphic.GraphicProvider")
      props(0).Name = "URL" '   D:\Users\Gaetano\Desktop\download.png
      props(0).Value = ConvertToURL("D:\Users\Gaetano\Desktop\" & 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 = Sh.DrawPage
        For i = 0 To Drw.Count - 1
            CellaImmagine() = Split(Drw(i).Anchor.AbsoluteName, ".")
            If  CellaImmagine(1) = oCell Then
                Drw.Remove(Drw(i))
                Exit For
            End If   
       Next i
    '   Aggiungo l'immagine   
        Drw.add(Image)
      ' Ridimensiono l'immagine
       Larg =  5000
       resizeImageByWidth(Image,Larg) 

       positionImage.x = ITarget.position.x
       positionImage.y = ITarget.position.y
       Image.Position = positionImage
       Image.Name = NomeImage
       Image.Anchor = Sh 
       Image.LayerId = 1  'imposta l'immagine sullo sfondo

  Next s

End if
End Sub

Sub resizeImageByWidth(ImageCmp As Object, Larg As Long)
Dim imageInfo As Object, Proporzione As Double, SizeImage As Object
imageInfo = ImageCmp.Graphic
SizeImage = imageInfo.SizePixel
Proporzione = SizeImage.Height / SizeImage.Width
SizeImage.Width = Larg
SizeImage.Height = SizeImage.Width * Proporzione
ImageCmp.Size = SizeImage
End Sub

function revinstr(s as string, slash as string) as string
    dim ii as integer
	ii=0
	do
	if instr(ii+1,s,slash)=0 then exit do
		ii=instr(ii+1,s,slash)
	loop
	revinstr = ii
end function
Naturalmente devi modificare il percorso della cartella contenente le immagini
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: Immagini come risultato

Messaggio da giosipan »

Ciao Gaetano!
Grazie per la risposta :-D

La tua macro mi ancora le immagini nella cella A1 e non cancella l'immagine precedente... in più non si ripetono le immaagini nei fogli successivi...
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: Immagini come risultato

Messaggio da patel »

io ho aperto il file e mi sembra vuoto, non ho capito bene cosa viene richiesto
-------------------
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: Immagini come risultato

Messaggio da giosipan »

Ciao Patel,
c'è una macro nel file.
La richiesta sarebbe che ad ogni valore scritto in a 37 appare un'immagine diversa in A15.
Questa immagine deve essere portata sullo sfondo, e ripetuta nei fogli successivi fino al foglio n.5
Libreoffice 7.6.0.3 su Win11
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Immagini come risultato

Messaggio da Gaetanopr »

prova adesso

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 = "$A$37" Or oCellTarget = "$C$37" Then
   If oCellTarget = "$A$37" Then 
      ITarget = sh.getCellRangeByName("A15") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$A$15"
   ElseIf oCellTarget = "$C$37" Then 
      ITarget = sh.getCellRangeByName("D37") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$D$37"
   End If

   NomeImage =  Target.String
   For s = 0 To 4
      Gp = createUnoservice("com.sun.star.graphic.GraphicProvider")
      props(0).Name = "URL" '   D:\Users\Gaetano\Desktop\download.png
      props(0).Value = ConvertToURL("D:\Users\Gaetano\Desktop\" & 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
        For i = 0 To Drw.Count - 1
            CellaImmagine() = Split(Drw(i).Anchor.AbsoluteName, ".")
            If  CellaImmagine(1) = oCell Then
                Drw.Remove(Drw(i))
                Exit For
            End If   
       Next i

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

       positionImage.x = ITarget.position.x
       positionImage.y = ITarget.position.y
       Image.Position = positionImage
       Image.Name = NomeImage
       Image.Anchor = Doc.Sheets(s).getCellrangebyname(oCell) 
       Image.LayerId = 1  'imposta l'immagine sullo sfondo

  Next s

End if
End Sub

Sub resizeImageByWidth(ImageCmp As Object, Larg As Long)
Dim imageInfo As Object, Proporzione As Double, SizeImage As Object
imageInfo = ImageCmp.Graphic
SizeImage = imageInfo.SizePixel
Proporzione = SizeImage.Height / SizeImage.Width
SizeImage.Width = Larg
SizeImage.Height = SizeImage.Width * Proporzione
ImageCmp.Size = SizeImage
End Sub

function revinstr(s as string, slash as string) as string
    dim ii as integer
	ii=0
	do
	if instr(ii+1,s,slash)=0 then exit do
		ii=instr(ii+1,s,slash)
	loop
	revinstr = ii
end function
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: Immagini come risultato

Messaggio da giosipan »

Perfetto!!! :super: :super: :super:
E' quello che mi serviva!!!
Grazie ancora Gaetano sei il numero 1!!!! :bravo: :bravo: :bravo: :bravo:
Libreoffice 7.6.0.3 su Win11
karelias
Messaggi: 9
Iscritto il: mercoledì 23 novembre 2016, 17:04

Re: [Risolto] Immagini come risultato

Messaggio da karelias »

Ciao!

ho bisogno di fare una cosa analoga... ma non riesco a svilupparla partendo dal file che trovo in allegato... potreste condividere il file finito per favore?

Grazie mille!
Open Office 4.1.2, Sistema Operativo OSx
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: [Risolto] Immagini come risultato

Messaggio da patel »

è passato troppo tempo, allega un file di esempio, spiega cosa vuoi ottenere e vediamo di adattare il codice
meglio sarebbe aprire una nuova discussione tua facendo riferimento a questa
-------------------
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: [Risolto] Immagini come risultato

Messaggio da giosipan »

Buonasera a tutti!
Ho un quesito da rivolgervi.
Ho creato un file .ods seguendo le vostre preziose indicazioni in questo thread e funziona benissimo.
L'unico problema è che lentissima la stampa. Il file è composto da cinque fogli e per stamparli tutti impiega circa 2/3 minuti.
Non so se può essere questo il problema:
mi sono reso conto che le immagini non vengono cancellate ma si sovrappongono una sopra l'altra e quindi mi ritrovo un file carico di immagini...
Può essere questo che fa rallentare l'operazione di stampa?
Libreoffice 7.6.0.3 su Win11
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [Risolto] Immagini come risultato

Messaggio da Gaetanopr »

La macro del post elimina l'immagine precedente, quindi non dovrebbero esserci immagini sovrapposte, bisognerebbe vedere la macro da te modificata e una copia del tuo file.
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] Immagini come risultato

Messaggio da giosipan »

Il file non me lo fa allegare perché più grande di 256 kb.
Queste sono le macro contenute nel mio file:

Codice: Seleziona tutto

REM  *****  BASIC  *****


sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$30"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "=F22"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$F$31"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = "=F23"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())


end sub


sub Macro1
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$30"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$F$31"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

end sub

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 = "$F$76" Or oCellTarget = "$N$75" Then
   If oCellTarget = "$F$76" Then 
      ITarget = sh.getCellRangeByName("E79") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$E$79"
   ElseIf oCellTarget = "$N$75" Then 
      ITarget = sh.getCellRangeByName("K79") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$K$79"
   End If

   NomeImage =  Target.String
   For s = 0 To 4
      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")
      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
        For i = 0 To Drw.Count - 1
            CellaImmagine() = Split(Drw(i).Anchor.AbsoluteName, ".")
            If  CellaImmagine(1) = oCell Then
                Drw.Remove(Drw(i))
                Exit For
            End If   
       Next i

    '   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.Anchor = Doc.Sheets(s).getCellrangebyname(oCell) 
       Image.LayerId = 1  'imposta l'immagine sullo sfondo

  Next s

End if
End Sub

Sub resizeImageByWidth(ImageCmp As Object, Larg As Long)
Dim imageInfo As Object, Proporzione As Double, SizeImage As Object
imageInfo = ImageCmp.Graphic
SizeImage = imageInfo.SizePixel
Proporzione = SizeImage.Height / SizeImage.Width
SizeImage.Width = Larg
SizeImage.Height = SizeImage.Width * Proporzione
ImageCmp.Size = SizeImage
End Sub

function revinstr(s as string, slash as string) as string
    dim ii as integer
   ii=0
   do
   if instr(ii+1,s,slash)=0 then exit do
      ii=instr(ii+1,s,slash)
   loop
   revinstr = ii
end function

REM  *****  BASIC  *****


sub Giosi
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$76"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "Giosi"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())


end sub


sub Manuela
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$76"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "Manuela"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())


end sub


sub Vuoto
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$76"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "Vuoto"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())


end sub

sub Sonia
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$76"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "Sonia"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())


end sub

sub Paolo
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$76"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "Paolo"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())


end sub


sub Ordine_Alf
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$2:$E$296"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SortAscending", "", 0, Array())


end sub

sub PrimaCellaVuotaA
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1" 'Funziona sulla colonna A

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1
args3(1).Name = "Sel"
args3(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())


end sub
Ultima modifica di charlie il lunedì 1 luglio 2019, 19:01, modificato 1 volta in totale.
Motivazione: Formattato codice
Libreoffice 7.6.0.3 su Win11
giosipan
Messaggi: 37
Iscritto il: martedì 24 gennaio 2017, 9:29

Re: [Risolto] Immagini come risultato

Messaggio da giosipan »

Buonasera!
Ho di nuovo bisogno del vostro aiuto.
Vorrei cambiare la cella di input del comando con una che è contenuta in un altro foglio.
Come posso fare?

Questa è la macro:

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 = "$A$37" Or oCellTarget = "$C$37" Then
   If oCellTarget = "$A$37" Then
      ITarget = sh.getCellRangeByName("A15") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$A$15"
   ElseIf oCellTarget = "$C$37" Then
      ITarget = sh.getCellRangeByName("D37") ' serve per le coordinate di inserimento dell'immagine
      oCell = "$D$37"
   End If
Grazie!
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: [Risolto] Immagini come risultato

Messaggio da patel »

patel ha scritto:è passato troppo tempo, allega un file di esempio, spiega cosa vuoi ottenere e vediamo di adattare il codice
......
-------------------
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: [Risolto] Immagini come risultato

Messaggio da giosipan »

Buongiorno e grazie per la risposta!
Ho dovuto eliminare alcuni fogli perché il file da allegare superava il limite consentito.
La macro come è impostata adesso prende gli input nel foglio "Mittente" dalle celle F76 e N75 e il risultato (inserisce un'immagine) appare sulle celle E79 e N20.
Quello che vorrei modificare sono le celle di input e le vorrei sul foglio "Inserimento dati". Il resto deve rimanere tutto uguale.
E' possibile?
Grazie
Allegati
CMR Compilabile_new - Copia.ods
(111.19 KiB) Scaricato 102 volte
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: [Risolto] Immagini come risultato

Messaggio da patel »

Non hai detto quali celle sul foglio "Inserimento dati", inoltre la macro deve ancora essere attivata al modificarsi di queste celle o tramite pulsante ?
-------------------
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: [Risolto] Immagini come risultato

Messaggio da giosipan »

Le celle sono B16 e B19.
Se possibile la macro dovrebbe attivarsi nel momento in cui viene modificata.
Grazie.
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: [Risolto] Immagini come risultato

Messaggio da patel »

quale cella deve attivare la macro ? una qualsiasi delle 2 ? inoltre mi sembra che la macro Immagine1 non vada d'accordo con i foglio Mittente, dovresti descrivere cosa vuoi ottenere.
Riprendere vecchie discussioni non è consigliato proprio per questo motivo, tu dai per scontate cose che ad un nuovo interlocutore non lo sono
-------------------
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: [Risolto] Immagini come risultato

Messaggio da giosipan »

Ok, capisco!
Quello che vorrei ottenere è questo:

1- richiamare delle immagini in una determinata cella del foglio n.2 (e cancellazione dell'eventuale immagine precedente) a secondo del valore presente in un'altra cella del foglio n.1;
2- ripetizione delle immagini dal foglio n.3 al foglio n.6;
3- impostazione delle immagini sullo sfondo del livello.

Le celle sono:
- INPUT 1 - cella B16 foglio1
risultato in cella F76 foglio2

- INPUT 2 - cella B19 foglio 1
risutlto in cella K79 foglio 2

Spero di essere stato chiaro.
Grazie ancora.
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: [Risolto] Immagini come risultato

Messaggio da patel »

giosipan ha scritto:Ok, capisco!.....
non mi sembra, quando una discussione è marcata come risolta nessuno la apre più, insistendo con questa ti precludi l'intervento di altri oltre a me, magari proprio quelli che avrebbero la soluzione già pronta.
-------------------
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
Rispondi