|
Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
Jak na vložení obrázku do Excel využitím VBA kódu. Aneb jak umístit do Excel brázek ze souboru, který máte na disku. Často loga, obrázky telefonu atd, kdy potřebujete vylepšit své dokumenty a nechcete provádět ručně.
Vkládaní obrázku z disku je možné provádět dvěma způsoby.
V tomto článku se podívám na obě. Opět pro přehlednost je článek rozdělen na kapiloty ať v budoucnu mohu vylepšit a přidávat další tipy a triky pro umísťování obrázků do Excel využitím VBA:
Předpokládám, že na disku máte nějaký obrázek (logo). Např.:
Než začneme vkládat obrázky trocha teorie (pokud vám nestačí dporučuji Googlit).
Excel zvládne zpracovat a zobrazit tyto obrázkové formáty:
Vkládat lze dvěmi metodami:
Na první pohled může vypadat stejně, na ten druhý je obrázek vložen jako specifický typ (vlastnost .Type), naproti tomu vlastnost TypeName u obou bude vracet Picture:
S obrázkem lze provádět i spousta uprav (zvětšovat / zmenšovat, natářet, posouvat, smazat).
Článek si neklade za cíl býct kompletní příručkou. Jde o ukázky jak je možno provést. Přizpůsobit a doplnit kódy o kontroly (existuje požadovaný obrázek, jde opravdu o obrázek), deklarace, cykly, podmínky již budete muset sami.
Začnu tím nejrychlejším. Mám obrázek na disku v patřičné složce. Potřebuji jej vložit do Excel, kde se vloží neřeším, stejně tak jsem si jistý, že jde o obrázek který v dané složce pod daným jménem existuje:
ActiveSheet.Pictures.Insert ("d:\smaz\logo.png")
Doplním o kontorlu a pozici včetně rozměru (opět neřeším, že se obrázek může výškou a šířkou rozhodit). Nastavím, zda se má (nebo nemá tisknout) při tisku listu.
On Error GoTo 0
Dim fd As String
fd = "d:\smaz\logo.png"
With ActiveSheet.Pictures.Insert(fd)
.Left = 20
.Top = 30
.PrintObject = True
.ShapeRange.LockAspectRatio = msoFalse
.ShapeRange.Width = 123
.ShapeRange.Height = 123
Vložený objekt si mohu pojmenovat a pak se na něj jednoduše odkazovat a upravovat. Třeba mazat atd.
fd = "d:\smaz\logo.png"
With ActiveSheet.Pictures.Insert(fd)
.Name = "Obrazek_01"
End With
Případně si fo proměnné fd můžete načíst vzbraný obrázek z disku
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Filters.Clear
.Filters.Add "Picture Files", "*.bmp;*.jpg;*.gif;*.png"
.ButtonName = "Select"
.AllowMultiSelect = False
.Title = "Muj obrazek"
.InitialView = msoFileDialogViewDetails
.Show
End With
Vloží se jako samostatný objekt v Shapes:
ActiveSheet.Shapes.AddPicture Filename:="d:\smaz\logo.png", _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoCTrue, _
Left:=20, _
Top:=30, _
Width:=123, _
Height:=134
Tip pokud načítate přes FileDialog a někdo vybere více souborů (proto si zde uložím na později), jak vybrat první soubor:
ActiveSheet.Shapes.AddPicture Filename:=fd.SelectedItems(1), _
Jelikož umíte vložot obrázek, tak ještě předvedu, jak vložený obrázek smazat (zde se bude hodit ono jméno obrázku, ať smažete ten správný). Jednoduše název a metoda Delete.
ActiveSheet.Shapes("Obrázek 6").Delete
Nebo deklaruji, nasetuji a pak smáznu.
Dim MujObrazek As Shape
Set MujObrazek = ActiveSheet.Shapes("Obrázek 3")
MujObrazek.Delete
' netestuji zda objekt existuje
Kód jde doplnit o kontrolu, zda obrázek opravdu existuje, zda opravdu jde o obrázek a ne jen název tlačítka atd.
Pár tipů a triků, která se dají využít při práci s obrázky
Kód pro otestování:
' kdde začíná buňka:
MsgBox (Range("B5").Top)
MsgBox (Range("B5").Left)
V kódu obrázku:
Dim fd As String
On Error GoTo 0
fd = "d:\smaz\logo.png"
With ActiveSheet.Pictures.Insert(fd)
.Left = Range("B5").Left
.Top = Range("B5").Top
End With
Zjistit výšku a šířku buňky
MsgBox (Range("B5:D7").Width)
MsgBox (Range("B5:D7").Height)
Zbytek si jistě již doplníte sami
Nejste si jisti, jak na kontrolu. V samostatném článku jsem sepsal jak na kontorlu souborů:
Načítat obrázek přes FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Filters.Clear
.Filters.Add "Picture Files", "*.bmp;*.jpg;*.gif;*.png"
.ButtonName = "Select"
.AllowMultiSelect = False
.Title = "Choose Photo"
.InitialView = msoFileDialogViewDetails
.Show
End With
Bude samostatný článek, jen si opět odložím, nebo-li námět co hledat pokud potřebujete řešení:
ActiveSheet.Shapes.AddShape(msoShapeRightArrow, 140, 80, 99.9, 72).Select
Pokud vás téma zaujalo můžete se dozvědět více:
Soubor ke stažení zdarma v přípravě. Soubor využívá makra.
Máte nějaký trik pro vkládaní obrázku do listu v sešitě Excel? Můžete zmínit v komentářích.
Článek byl aktualizován: 19.09.2020 11:07
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ů.
Můžete být prvními co zanechají smysluplný komentář.
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 - 2021 |