Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
... Image (Obrázek) a jeho použítí ve formuláři za pomocí VBA...
Karta Vývojář - Visual Basic. Menu Insert - UserForm. Z Toolboxu vybereme Image.
Seznam základních vlastností prvku Image (Obrázek). Okno vlastností můžeme zobrazit klávesou F4.
Pojmenování prvku (můžeme změnit). Ve kódech se pak budeme na tento prvek odkazovat jeho jedinečným názvem. V našem příkladě je (Name) Image1.
Pozor: Název prvku se musí změnit před psaním kódu. Když dojde ke změně názvu po napsání VBA kódu jeho odkazy se nezmění.
Specifikuje, zda mění objekt automaticky velikost v souladu se svým celým obsahem. Pokud mění tak velký text zvětší objekt.
Hodnota (True - mění, False - výchozí, nemění)
Image1.AutoSize = True
AutosizeStav = Image1.AutoSize
Vrací nebo nastavuje barva pozadí objektu TextBox.
Image1.BackColor = RGB(255, 128, 128)
BarvaPozadi = Image1.BackColor
Vrací nebo nastavuje styl pozadí objektu Label.
fmBackStyleTransparent (0) Pozadí je průhledné.
fmBackStyleOpaque (1) Pozadí je neprůhledné (výchozí nastavení).
Image1.BackStyle = fmBackStyleTransparent
Vrací nebo nastavuje barvu okrajů. Pokud není nastaven okraj tak se změna barvy neprojeví.
Image1.BorderColor = RGB(254, 127, 127)
Poznámka: Nutno mít nastaven BorderStyle
Vrací nastavení nebo změní nastavení okrajů.
Image1.BorderStyle = fmBorderStyleSingle
Poznámka: ignoruje se pokud je vlastnost SpecialEffect = none
Bublinková nápověda. Zobrazí se při najetí nad objekt
Image1.ControlTipText = "Můj text v bublinkové nápovědě."
ControlTipText = Image1.ControlTipText
Určuje, zda se může ovládací prvek stát aktivním a odpovídat na události, generované uživatelem. Nebo specifikuje jak je tato vlastnost aktuálně nastavena.
Image1.Enabled = True
EnabledNastaveni = Image1.Enabled
Vrací výšku objektu nebo jeho výšku nastaví.
Image1.Height = 28
Vyska = Image1.Height
Umístění objektu od levého okraje. Nebo zjištění jak je umístěn objekt.
umistenileft = Image1.Left
Image1.Left = 12
Přiřazení ikony por objekt
Image1.MouseIcon = LoadPicture ("c:\mojeIkonka.ico")
Vrací typ ukazatele myši, nebo nastaví ukazatel myši. Hodnoty jsou:
Image1.MousePointer = fmMousePointerHelp
Nastavení obrázek na pozadí.
Image1.Picture = LoadPicture("c:\Obrazek.jpg")
Poznámka: Nutno zadat správný název a umístění obrázku.
Udává umístění obrázku v pozadí. Nebo vrací nastavení této vlastnosti.
Image1.PictureAlignment = fmPictureAlignmentTopRight
Udává, jak se v ovládacím prvku, formuláři nebo stránce zobrazí obrázek v pozadí.
Image1.PictureSizeMode = fmPictureSizeModeStretch
Poznámka: Nejprve musí být nahrán nějaký obrázek.
Umožňuje uspořádat obrázek na formuláři nebo stránce jako dlaždice.
Image1.PictureTiling = True
Vrací nebo určuje speciální efekty objektu.
Image1.SpecialEffect = fmSpecialEffectFlat
Image1.SpecialEffect = 6
StavSpecialEfekt = Image1.SpecialEffect
Doplňkové informace o objektu.
Umístění objektu od horní okraje. Nebo zjištění jak je umístěn objekt.
umistenitop = Image1.Top
Image1.Top = 12
Nastavuje viditelnost objektu, nebo zobrazuje jaký stav má objekt. Nabývá hodnot TRUE (viditelný - výchozí nastavení), FALSE (neviditelný).
Image1.Visible = False
Image1.Visible = True
Vrací šířku objektu nebo jeho výšku nastaví.
Image1.Width = 110
Sirka = Image1.Width
Hotový příklad ke stažení: Formulář Image (Obrázek) - vlastnosti ukázky použití
Popis vlastnosti objektu Image (Obrázek) máme za sebou :)
Článek byl aktualizován: 19.09.2020 11:06
Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.
Přidáno: 12.02.12 11:47
Dobrý den, zajímalo by mě zda jde použít obrázek i jinak než pomocí načtení z nějakého konkrétního umístění např. LoadPicture("c:\Obrazek.jpg"). Chtěl bych mít pouze jeden excelovský soubor bez nějakých příloh a do formuláře chci načítat různé obrázky. Chtěl bych to použít nějak podobně jako v jednom s Vašich témat a to http://office.lasakovi.com/excel/vba-triky/vba-excel-graf-do-formulare/ Kde je graf umístěn na listu a jen se načítá do UserForm. Je to možné? Jak na to jít? Děkuji Kuba
Přidáno: 13.02.12 20:25
To Kuba: Lze. Pokud obrázky předem "načtete" při tvorbě formuláře, nemusí být v už příloze c:\Obrazek1.jpg. Pak jen zobrazovat/skrývat pomocí Image1.Visible = False, Image1.Visible = True. Případně přesouvat atd.
Poznámka na okraj: Když nastavíte Visible tak ve formuláři tento obrázek stále vidíte. Až když je formulář spuštěn objekt (obrázek) není vidět (pokud je správně nastvena vlastnost visible), ale to jen tak na okraj, jelikož včera jsem tento dotaz zodpovídal emailem.
Přidáno: 13.02.12 22:14
Ještě bych se pokusil uvést příklad jak jsem postupoval. Stále nemůžu přijít na to proč mi to nejde. Inspiraci sem hledal ve Vašem příspěvku ohledně vkládání grafu do formulářů. Na listu "ZATÍŽENÍ" mám obrázek s názvem "Picture" A potřeboval bych ho zobrazit po otevření formuláře. Dim Picture As ChartObjects Set Picture = Sheets("ZATÍŽENÍ").ChartObjects(1).Chart Dateiname = "Picture.gif" Picture.Export Filename:=Dateiname, FilterName:="GIF" Image1.Picture = LoadPicture(Dateiname) Používám tento lehce modifikovaný skript. Děkuji za radu. Kuba
Přidáno: 14.02.12 06:19
To Kuba: Tento kód musí být spuštěn. Zobrazit formulář nestačí. Můžete provést například při aktivaci formuláře. Kód vložit do VBA kódu pro daný formulář.
Sub UserForm_Activate()
... kod...
End Sub
PS: Nemá Váš graf něco společného s elektrickým strojem? :)
Přidáno: 15.02.12 17:14
To Kuba: viz email.
To ostatní: Jak importovat obrázek, který je nalistu do Image ve formuláři sepíšu v nějakém z dalších článků.
Přidáno: 26.06.12 10:56
Dobrý den, mám následující problém : pomocí el. tužky a tabletu vložím do tabulky obrázek (podpis) a potřeboval bych vědět rozmer tohoto obrázku, abych ho mohl upravit na velikost buňky. Jeto možné ( nevím totiž jak zjistím rozměry aktuálního obrázku, ten který je právě vybrán). Děkuji za odpověď.
Přidáno: 26.06.12 17:38
To Osi: Pro Excel 2010 - Klikneš na obrázek, zobrazí se dočasná karta Nástroje obrázku - Formát - velikost -> a tam jsou rozměry obrázku.
Přidáno: 27.06.12 07:21
To je jasný, ale já bych to potřeboval udělat jako makro ve VBA
Přidáno: 27.06.12 16:34
To Osi: Zjistím velikost pomocí vlastnosti Height a Width, pro obrázek Image1
Vyska = Image1.Height
Sirka = Image1.Width
Přidáno: 28.06.12 11:53
To funguje, když vím jméno obrázku, ale já po vložení podpisu vím pouze, že je aktivní obrázek u určité buňky
Přidáno: 28.06.12 16:21
To Osi: Teď úplně nerozumím. Pomocí VBA makra vložíš obrázek a potřebuješ znát jeho rozměry. Ty se zobrazí jako dialogový box nebo autoamticky zmenší obrázek?
Přidáno: 16.07.12 13:33
Ten obrázek se mi vloží k aktivní buňce poté co udělám podpis pomoci tužky. Ten podpis je jako obrázek, ale nevím jméno, vím pouze, že je aktivní ( dá se okamžitě upravovat). A právě ty úpravy bych chtěl dělat ve VBA.
Přidáno: 16.07.12 14:59
ješte přikládám macro, kde jsem si myslel že získám rozmery aktuálního obrázku ( podpisu) : Sub uprava_podpisu() Dim dObrazekSirka As Double Dim dObrazekVyska As Double Dim AktPodpis As Object Set AktPodpis = ActiveSheet.Pictures With AktPodpis dObrazekSirka = .Height dObrazekVyska = .Width End With MsgBox dObrazekSirka & " ; " & dObrazekVyska End Sub
Přidáno: 24.07.12 12:27
Už to mám vyřešený, ale potřebuji ještě pomoct s tímhle : Potřebuji zjistit je-li v určité oblasti ( třeba A3:N3 ), nějaký objekt (obrázek) a jestli jo tak tuto informaci předat proměnné. Děkuji
Přidáno: 24.07.12 16:01
To Osi: Gratuluji k vyřešení, nějak nestíhám. K druhému dotazu. Kód, zda existuji na listu obrázky
On Error Resume Next
Sheets("List1").Pictures.Select
If Err.Number <> 0 Then MsgBox "Bez obrazku."
On Error GoTo 0
Přidáno: 24.07.12 16:15
To Osi: Možná pomůže odkaz http://www.excelplus.net/forum/viewthread.php?thread_id=715&pid=3023#post_3023
Přidáno: 25.07.12 09:31
Moc děkuji, to je ono
Přidáno: 26.07.12 11:48
Tak se mi zdálo, že to funguje, ale Err.Number je pořád 0, ať tam obrázek je a nebo není.Kdýž tam obrázek je tak ho vybere ( to funguje ), ale Err.Number je pořád 0.
tady je kod :
Sub uprava_podpisu()
Dim Shp As Shape
Dim Shpk As Shape
Dim nazev As String
Dim RadekPodpisu As String
Dim AktImageSirka As Single
Dim AktImageVyska As Single
Dim AktBunkaVyska As Single
Dim AktBunkaSirka As Single
Dim ObrazekUpraveny As Object
Dim ObrazekPuvodni As Object
AktBunkaSirka = ActiveCell.ColumnWidth
AktBunkaVyska = ActiveCell.RowHeight
AktImageSirka = Selection.Width
AktImageVyska = Selection.Height
Stop
MsgBox Err.Number
On Error Resume Next
Sheets("hlášení").Pictures.Select
MsgBox Err.Number
If Err.Number <> 0 Then MsgBox "Bez podpisu"
GoTo konec
On Error GoTo 0
For Each Shp In ActiveSheet.Shapes
If Left(Shp.Name, 4) = "Pict" Then
Shp.LockAspectRatio = msoFalse ' odemknou uzamknuti pomeru stran
Shp.Width = AktBunkaSirka * 5.4
Shp.Height = AktBunkaVyska
Shp.LockAspectRatio = msoTrue
End If
Next Shp
Range(Range("Q8")).Select
RadekPodpisu = ActiveCell.Row
Range(Range("Q8")).Value = "podepsáno"
Range(Range("S3")).Select
Set Shp = Nothing
Call pr
konec:
End
End Sub
Mám ještě jednu prosbu, nedaří se mi ukončit externí aplikaci, kterou pouštím takto :
'spustí externí aplikaci na vložení obrázku (podpisu )z pera a tabletu
spust = "c:\Program Files\GENIUS TABLET\PenSign.exe"
kill = "TASKKILL /F /IM c:\Program Files\GENIUS TABLET\PenSign.exe"
Přidáno: 05.03.13 10:49
Jde měnit vložený obrázek na sheetu, změnou cesty v nějaké buňce? Děkuji
Přidáno: 12.03.13 11:19
Obrázek (resp. Cesta k obrázku, získaná třeba přes GetOpenFilename, nebo z buňky) lze vložit místo jiného obrázku takto: Shee = číslo sheetu (záložky), obr=název obrázku na sheetu
Sub Obrazek(shee, obr)
i = Sheets(shee).Pictures.Count
With Sheets(shee).Pictures(obr)
L = .Left
T = .Top
W = .Width
H = .Height
.Delete
Application.Sheets(shee).Shapes.AddPicture Cesta, True, True, L, T, W, H Sheets(shee).Pictures(i).Name = obr
Sheets(shee).Pictures(obr).OnAction = obr & "_click" ´makro při kliknutí
End With
End Sub
Nevím jak zjistit nebo nastavit jméno obrázku, které je ve VBA, když nevím jeho pořadí na sheetu. Dělám to nyní tak, že poprvé vím, že je to ten poslední na sheetu, takže místo „obr“ dám hodnotu „i“ a při dalším už má můj název a můžu jej najít a tedy třeba vyměnit.
Honza
Přidáno: 13.03.13 08:45
Je tam chyba, tohle:
Sheets(shee).Pictures(i).Name = obr
má být na dalším řádku
Přidáno: 11.11.13 08:40
Dobrý den,
čtu si Váš zajímavý článek a potřeboval bych poradit. Automatizuji jeden úkol v Excelu kdy po kliknutí na tlačítko proběhne vygenerování souboru v pdf určité oblasti v excelu do jedné složky, a zároveň se tento soubor v pdf přiloží jako příloha do mailu.
Vše funguje perfektně, jen jsem se zastavil na tom jak udělat elegantní podpis v Emailu. (Nějaký text + obrázek.
text je v části Body kde je to spojeno s obsahem několika buněk, s přeřádkováním. Na konci v části Body bych chtěl vložit logo firmy, ale tak aby obrázek byl použit z Excelu (chci se vyhnout nějakému mapování)
Může někdo ze zkušenějších poradit? Děkuji předem
použiji jen část kódu pro ukázku
With OutMail
MsgBox ("Soubor byl vygenerován, uložen a odeslán mailem.")
.To = Range("B9").Text 'propojení na adresu
.Subject = Range("Q40") ' předmět
.Body = Range("Q42") & Chr(13) & Range("Q43") & Chr(13) & Range("Q44") & Chr(13) & Range("Q45") & Chr(13) & Range("Q46") & Chr(13) & Range("Q47") & Chr(13) & Range("Q48") & Chr(13) & Range("Q49") & Chr(13) & Range("Q50") & Chr(13) & Range("Q51") & Chr(13) & Range("Q52") & Chr(13) & Range("Q53") & Chr(13) & Range("Q54")& Chr(13)
.Attachments.Add CelaCesta ' řeší přílohu
.Send 'odesílá
Přidáno: 30.01.14 10:43
Dobrý den. Zkoušel jsem přiložený soubor od Vás a funguje hezky. Zkusil jsem si vytvořit i nějaký svůj a zjistil jsem, že refresh obrázků funguje perfektně ,ale nesmí byt nové nahrání obrázku obsaženo ve funkci Image1_click (klik přímo na obrázek) v tomto případě se přestanou obrázky refreshovat. V paměti je uložený nový obrázek, ale je potřeba přes starý obrázek přesunout jiné okno (nebo podobná akce) a pak se zobrazí aktualní obrázek. Dokonce tento způsob přes klik na obrázek udělá nefunkční i ostatní nahrávání přes tlačítka která do té doby fungovala. V případě, že za load obrázku vložím třeba ještě Image1.BackColor tak se obrázek refresfne. Proč ten klik na obrázek pro změnu obráku dělá takový bordel? Neexistuje něco pro přidat za load obrázku aby se hned refreshnul v případě že chcu obrázky měnit pávě klikem na obrázek.
Přidáno: 02.04.14 23:56
Dobrý den všem, chtěl bych se zeptat, zda nekdo tusite, jak udelat nasledujici macro v excelu.... myslel jsem si, ze s tim nebude zas az takovy problem a vcelku je (aslespon pro me) Ve sloupci "A1" az treba "A100" mam vzdy jinou hodnotu (napr XB100, XB120, XB320, atd....) a ja bych potreboval na zaklade hodnot/nazvu ze sloupce "A" najit odpovidajici obrazek (ktery se jmenuje stejne jako hodnoty ve sloupci "A") ze slozky (treba C:\obrazky\) a vlozit jej vedle vedle hodnoty v sloupci "A" do sloupce "B" Snad je to srozumitelne, ale pro jistotu strucna rekapitulace >na zaklade hodnoty napr. v bunce "A1" > najit obrazek (.jpg) ve slozce (napr. C:\Obrazky\ ), ktery se jmenuje stejne jako hodnota v bunce "A1" > obrazek vlozit do vedlejsi bunky, tedy "B2" upravu velikosti davam, ale vyhledani a vlozeni na zaklade "Stringu" bunky proste prozatim nedavam :( Dekuji vsem za pripadne napady, rady, tipy! (S)mejte se ;-)
Přidáno: 01.02.15 16:56
Dobrý den,
mám problém s proměnnou u Image objektu. Mám ve formuláři 5 obrázků: Image1, Image2, ... ale chtěl bych je nahradit proměnnou.
obr = 1
While obr <= 5
Image & obr.Picture = LoadPicture(cesta_k_obrazku)
obr = obr + 1
Wend
Ale hlásí mi to chybu: Compile error: Expected Sub, Function, or Property - když použiji něco jako:
obr = 1
While
Image = "Image" & obr
Image.Picture = LoadPicture(cesta_k_obrazku)
obr = obr + 1
Wend
Tak je to chyba: '424' - Object required - jen když použiju přímý zápis
Image1 = LoadPicture(cesta_k_obrazku)
Image2 = LoadPicture(cesta_k_obrazku)
...
Tohle byl příklad, těch obrázků je mnohem víc a ještě mají spoustu proměnných, co mají zobrazovat a kdy a pak je to tímto způsobem prakticky neřešitený.
Děkuji za radu
Přidáno: 01.02.15 17:47
Doplnění: - jen když použiju přímý zápis, tak to funguje
Přidáno: 03.02.15 07:28
To Jakub: -- obr = 1
cesta_k_obrazku = "C:\Documents and Settings\All Users\Documents\My Pictures\Nový priečinok\"
While obr <= 2
Image = cesta_k_obrazku & "Image" & obr & ".jpg"
'
'atď.
Přidáno: 03.02.15 09:37
To Jojo:
Já spíš potřebuju něco jako:
' V UserForm mám objekty
' Image1, Inage2, Image3, ... Image50
' A ve složce obrázky
' 1.gif, 2.gif, .... 200.gif
' Gen. náh. čísel mi vyhodí 200 čísel v různém pořadí
A1 = 101
A2 = 24
A3 = 186
...
A200 = 48
i = 1
obr = 1
While obr <= 50
gen = Range("A" & i)
If gen > 10 And gen < 80 Then
obr.Picture = LoadPicture(gen".gif")
obr = obr + 1
i = i + 1
Else
i = i + 1
End If
Wend
To všechno by bylo v pohodě, jediný problém mám s tím obr. Jelikož název objektu nesmí začínat číslem, tak bych potřeboval, aby to vypadalo jako
Image&obr.Picture 'což také nefunguje
tzn. ve výsledku (postupně)
Image1.Picture
Image2.Picture
...
Image50.Picture
Jako proměnnou potřebuju to: OBR, ale to se mi nedaří zrealizovat. Díky
Přidáno: 06.02.15 06:16
Tak jsem svůj problém výše vyřešil takto:
i = 1
obr = 1
While obr <= 50
gen = Range("A" & i)
If gen > 10 And gen < 80 Then
Range("B" & obr) = gen
obr = obr + 1
i = i + 1
Else
i = i + 1
End If
Wend
Image1.Picture = LoadPicture(Range("B1") & ".gif")
Image2.Picture = LoadPicture(Range("B2") & ".gif")
Image3.Picture = LoadPicture(Range("B3") & ".gif")
...
Image50.Picture = LoadPicture(Range("B50") & ".gif")
Snad někdo ocení a využije ;)
Pokud by ale někdo věděl, jak nastavit 'Image1' resp. jméno objektu jako proměnnou, tak bych byl rád.
Přidáno: 06.02.15 07:22
Omlouvám se za ERROR, pokud to tento příspěvek neopraví, tak prosím správce o jeho smazání a úpravu předchozího příspěvku.
Přidáno: 06.02.15 07:24
Přidáno: 04.03.15 10:30
To Jakub. Podívej se výše na můj dotaz a řešení. Mělo by ti to pomoct.
Přidáno: 24.06.15 11:08
Dobrý den Potrebujem vložiť obrázok do vyhraničeného okna tak, aby vyplnil celé okno a nepresahoval, PictureSizeModeStretch mi nefunguje. Vopred ďakujem
Přidáno: 24.06.15 16:47
Vyriešené stačí odomknúť pomer strán .LockAspectRatio = msoFalse aj tak ďakujem
Přidáno: 02.10.15 08:51
Dobrý den, mám problém s tímto kodem: Sub Convert_Graf_Do_Obrazku() Dim Cht As Chart If ActiveChart Is Nothing Then Exit Sub Set Cht = ActiveChart Cht.CopyPicture xlPrinter, xlScreen, xlPicture ActiveWindow.RangeSelection.Select ActiveSheet.Paste With ActiveSheet .Height = 100 .Width = 100 End With End Sub Tento kod mi z grafu vytvoří obrázek, ale já nevím, jak nastavit jeho rozměry. Možná, že už to tady někdo dělal, ale jsem začátečník, tak se v tom ještě tolik nevyznám. Díky!!
Přidáno: 21.06.16 16:29
Dobrý den, je možné vkládat obrázky, které jsou součástí souboru .htm do těla emailové zprávy, která je generována automaticky? Obrázek se mi aktuálně do mailu vloží, ale zobrazen není. Respektive je zobrazena hláška: "Tento obrázek nyní nelze zobrazit"
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |