BackgroundPicture

Pomoč pri izdelavi makrov
Odgovori
dragopre
Prispevkov: 88
Pridružen: To Dec 11, 2012 11:46 pm

BackgroundPicture

Odgovor Napisal/-a dragopre »

Pozdravljeni

V VBA pod določenimi pogoji na delovni list naložim sliko ozadja. Moti me, ker moram sliko imeti naloženo na disku. (Ko prenašam zvezek, moram vedno prenesti tudi sliko)
Sliko bi rad naložil nekam v Excel zvezek ( npr. na skrit list) in jo po potrebi uporabil za ozadje.
Prosim za nasvet.

Lep pozdrav,
Drago
admin
Site Admin
Prispevkov: 3600
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: BackgroundPicture

Odgovor Napisal/-a admin »

Pozdravljeni,

Da sliko nekako vstavite v Excel jo seveda morate naložiti iz diska. Ko pa jo imate enkrat v delovnem zvezku pa lahko z njo počnete karkoli želite. Lahko jo premikate, povečujete, kopirate, spreminjate barve...

Recimo tale koda bi sliko z imenom 'Morje' prekopirala iz lista 1 na list 2:

Koda: Izberi vse

Sub KopirajSlikoNaList2()
    Dim slika: Set slika = Sheets("List1").Shapes("Morje")
    slika.Copy
    Sheets("List2").Paste
End Sub
lp,
Matjaž Prtenjak
Administrator
dragopre
Prispevkov: 88
Pridružen: To Dec 11, 2012 11:46 pm

Re: BackgroundPicture

Odgovor Napisal/-a dragopre »

Pozdravljeni

Naložiti in kopirati sliko sem uspel. Pri ukazu "Sheets("List1").SetBackgroundPicture Filename:= "c:\..." pa zahteva ime datoteke in si s sliko ne morem pomagati.
Kako bi pa to sliko shranil na disk v začasno datoteko? Potem bi jo lahko uporabil pri SetBackgroundPicture in po uporabi brisal.
Na ta način bi zvezek sliko nosil s seboj.

Lep pozdrav,
Drago
admin
Site Admin
Prispevkov: 3600
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: BackgroundPicture

Odgovor Napisal/-a admin »

:) Ja to pa v Excelu oz. Excelovem VBA-ju niti ni tako preprosto.

Sem vam priredil kodo s spleta in vam napisal primer uporabe:

Koda: Izberi vse

Sub test()
  ShraniSliko Sheets("List1").Shapes(1), "c:\moja_slika.png"
End Sub

' Prirejena koda s spletne strani https://www.thespreadsheetguru.com/blog/vba-save-as-picture-file-excel
Sub ShraniSliko(slika As Shape, imeDatoteke As String)

  Dim cht As ChartObject

  Set cht = ActiveSheet.ChartObjects.Add(Left:=ActiveCell.Left, Width:=slika.Width, Top:=ActiveCell.Top, Height:=slika.Height)

  cht.ShapeRange.Fill.Visible = msoFalse
  cht.ShapeRange.Line.Visible = msoFalse
    
  slika.Copy
  cht.Activate
  ActiveChart.Paste
  
  cht.Chart.Export imeDatoteke

  cht.Delete
End Sub
lp,
Matjaž Prtenjak
Administrator
dragopre
Prispevkov: 88
Pridružen: To Dec 11, 2012 11:46 pm

Re: BackgroundPicture

Odgovor Napisal/-a dragopre »

Hvala. Že uporabljam,

Lep pozdrav,
Drago
Odgovori