Foto via macro in Calc plaaten - positie - grootte

vanhorentrash
Berichten: 42
Lid geworden op: wo jan 27, 2010 5:51 am

Foto via macro in Calc plaaten - positie - grootte

Bericht door vanhorentrash »

L.S.,

Ik zou heel graag hulp hebben bij het volgende:

Ik heb een foto (steeds een andere die zo opgeslagen wordt):
C:/foto01.JPG

Deze wil ik graag plaatsen, beginnende in cel C3.

Het formaat van de foto ken ik niet, maar moet 600x800 worden.

Weet iemand hier een macro voor?

Alvast bedankt!

P.S. Ik gebruik OpenOffice2.4 op Windows XP.
OpenOffice 2.4 op Windows XP
vanhorentrash
Berichten: 42
Lid geworden op: wo jan 27, 2010 5:51 am

Re: Foto via macro in Calc plaaten - positie - grootte

Bericht door vanhorentrash »

Is deze link (voor mij is het echt te hoog gegrepen) behulpzaam:
http://codesnippets.services.openoffice ... Image.snip

Alvast bedankt!
OpenOffice 2.4 op Windows XP
vanhorentrash
Berichten: 42
Lid geworden op: wo jan 27, 2010 5:51 am

Re: Foto via macro in Calc plaaten - positie - grootte

Bericht door vanhorentrash »

Ondertussen ben ik een klein stukje verder. Met behulp van de volgende code zet ik een foto neer:

Code: Selecteer alles

sub FotoNeerzetten
dim document   as object
dim dispatcher as object

rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FileName"
args1(0).Value = "file:///Z:/Offerte_EU_Import/Fotos/Anton/foto01.JPG"
args1(1).Name = "FilterName"
args1(1).Value = "JPEG - Joint Photographic Experts Group"
args1(2).Name = "AsLink"
args1(2).Value = false

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

end sub
Als het me nu zou lukken om van die enige foto die vervolgens op deze sheet staat de breedte in cel A1 en de hoogte in cel A2 te zetten, dan kan ik via een formule de gewenste grootte in de cellen A6 en A7 berekenen (afhankelijk van of de foto's portrait of landscape zijn ect). De formule lukt me wel.

Dan kan ik de volgende code gebruiken om de foto in de gewenste afmetingen (en op de goede plaats) op de sheet te plaatsen. (ik realiseer me dat ik daarna dus 2 foto's op de sheet heb staan, maar dat maakt even voor het voorbeeld niet uit):

Code: Selecteer alles

sub embed_bitmap

Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Sheet = thisComponent.Sheets("Blad1")
Foto1Breedte = Sheet.getCellRangeByName("A6")
Foto1Hoogte = Sheet.getCellRangeByName("A7")

Url_Bitmap=converttourl("Z:/Offerte_EU_Import/Fotos/Anton/foto01.JPG")

odoc = thiscomponent
oshape = odoc.createInstance("com.sun.star.drawing.GraphicObjectShape")

'size.width = Foto1Breedte.value
'size.Height = Foto1Hoogte.value
point.Y = 8000
point.X = 5000

with oshape
.name = "Shape1"
'.size = size
.position = point()
.GraphicURL = Url_Bitmap
end with

opage = odoc.sheets(0).drawpage
opage.add(oshape)

'embed the picture

oBitmap = odoc.createInstance( "com.sun.star.drawing.BitmapTable" )
sName = oshape.LinkDisplayName

If oBitMap.hasByName(sName) Then
oBitmap.replaceByName( sName, oshape.GraphicURL )
else
oBitmap.insertByName( sName, oshape.GraphicURL )
End If

oNewURL = oBitmap.getByName( sName )
oshape.GraphicURL = oNewURL 'Embedded

end sub
Dus de vraag die even overblijft is: kan ik, wanneer er 1 foto op een sheet staat, de dimensies/afmetingen (hoogte en breedte) in de respectievelijke cellen A1 en A2 zetten?

Alvast bedankt!
OpenOffice 2.4 op Windows XP
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Foto via macro in Calc plaaten - positie - grootte

Bericht door RPG »

Hallo

Ik heb geen oplossing voor jouw probleem maar het staat mij bij dat het wel eens eerder behandeld geweest is op het oude Engelse forum, mogelijk is het ook wel eens behandeld op het nieuwe Engelse forum. Als je het op een Engels forum ter sprake wil stellen doe het dan op het nieuwe forum daar krijg je waarschijnlijk een betere reactie.

Voor het geval je zelf verder wilt gaan bedenk dat de afmetingen van een cel afhankelijk is van de regel en kolom waartoe de cel behoort. Voor zover ik weet heeft een cel zelf geen afmeting.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Plaats reactie