Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba-listy-sheet » Jak-vkladat-obrazky-do-Excel-pomoci-VBA
Microsoft Excel logo

Jak vkládat obrázky do Excel pomocí VBA

Videokurzy Excel

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ě.

Úvodem

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ř.:

Logo Pavel Lasák - Excel VBA

Trocha teorie

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:

  • jpg
  • gif
  • png
  • bmp

Vkládat lze dvěmi metodami:

  • Insert
  • AddPicture

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:

  • msoPicture - pokud se vkládá přes Insert
  • msoLinkedPicture - pokud se vkládá přes AddPicture

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.

Vložit využitím Insert

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žit využitím AddPicture

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), _

Smazat obrázek

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.

Tipy Triky

Pár tipů a triků, která se dají využít při práci s obrázky

Pozice

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

Výška, šířka

Zjistit výšku a šířku buňky

MsgBox (Range("B5:D7").Width) MsgBox (Range("B5:D7").Height)

Zbytek si jistě již doplníte sami

Kontrola existence souboru

Nejste si jisti, jak na kontrolu. V samostatném článku jsem sepsal jak na kontorlu souborů:

Načitání využitím FileDialog

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

Vkládání obrazců

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

Související články

Pokud vás téma zaujalo můžete se dozvědět více:

Microsoft Excel VBA - stahuj logo

Ke stažení

Soubor ke stažení zdarma v přípravě. Soubor využívá makra.


Závěrem

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

Odměna

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.


Pavel Lasák - autor webu

Pavel Lasák

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ů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře zatím nejsou

Můžete být prvními co zanechají smysluplný komentář.






Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

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 |