Garashan Creative Commons License 2024.10.10 0 0 38241

Ez pedig, ha nem Excelben van eltárolva a kép, hanem mappából kell beilleszteni:

 

If Len(Dir(mappa + CStr(Cells(i, kepNevekOszlopa)) + ".jpg")) = 0 Then

'Ide kell jönnie egy hiba kezelésnek, hogy mi legyen akkor, ha nem létezik a kép

Else
On Error Resume Next
Set kep = ActiveSheet.Shapes(CStr(Cells(i, kepNevekOszlopa))).Delete
On Error GoTo 0
ActiveSheet.Shapes.AddPicture _
(Filename:=mappa + CStr(Cells(i, kepNevekOszlopa)) + ".jpg", _
linktofile:=msoFalse, savewithdocument:=msoCTrue, _
Left:=x + x1, Top:=y + y1, Width:=meret, Height:=meret).Name = Cells(i, kepNevekOszlopa)
End If

 

"mappa": az a változó, amiben a mappa elérési útvonalát tárolom, sima string

"i": long típusú változó, ebben az esetben a sornak a sorszámát jelöli.

"kepNevekOszlopa": szintén string. Ebben tárolom, hogy melyik oszlopban vannak a képek nevei. (Kiterjesztés nélkül, mert a ".jpg" kiterjesztés később kerül hozzáadásra)

"x": horizontális irányú eltolás az adott oszlopig

"x1": a kép méretéből adódó eltolás, hogy az oszlop közepére kerüljön a kép

"y": vertikális irányú eltolás az adott sorig

"y1": a kép méretéből adódó eltolás, hogy a sor közepére kerüljön a kép

Azaz az x, x1, y és y1 változóknak köszönhetően pontosan a cella közepére fog kerülni a beillesztendő képem.

"meret": a cella magasságából és szélességéből kalkulált érték. Mivel nálam 1:1 arányú képeket kell beilleszteni, így csak ellenőrzöm, hogy melyik méret a kisebb és az lesz egyenlő a mérettel.

 

Nálam az "x" értékét cikluson kívül határozom meg, mert fentről lefelé haladva illesztem be a képeket.

"x1", "y1" és a "meret" változó cikluson belül kalkulálódik minden egyes sornál. Bár törekszem az egységes táblázat formátumra, így gyakorlatilag mindig ugyan azt az értéket veszi fel egy-egy táblázat esetén.

"y" értékét pedig minden egyes ciklus végén növelem az adott sor magasságának megfelelően.
"i" értékét is növelem a ciklus végén, hogy a következő sorra ugorjunk a kép beillesztéssel

Előzmény: Trike. (38238)