Chyba vkládání obrázků VBA - tipy pro Excel

Potřeboval jsem, aby makro aplikace Excel vložilo obrázek do aplikace Excel. Zapnul jsem záznam makra a vložil obrázek. Ale když jsem použil tento zaznamenaný kód, obrázek se neobjeví na žádném jiném počítači. Místo toho dostanu červené X, kde by měl být obrázek.

Kód používaný k práci v aplikaci Excel 2007 nebo dřívější. V aplikaci Excel 2010 se ale něco změnilo. Když spustíte kód do ActiveSheet.Pictures.Insert, Excel * ne * vkládá obrázek. Místo toho vkládá odkaz na obrázek.

Samozřejmě, když spustíte kód v počítači, vypadá to, že vše fungovalo. Zobrazí se obrázek.

Vypadá to, že makro fungovalo.

Když ale někdo otevře sešit na jiném PC, dostane červené X a zprávu, že obrázek mohl být přesunut nebo přejmenován.

Červené X místo obrázku

Obrázek samozřejmě není v počítači mého manažera. Nežádal jsem, aby Excel vytvořil odkaz na obrázek. Požádal jsem, aby Excel vložil obrázek. Zaznamenaný kód však vkládá odkaz na obrázek.

Řešením je přepnout na jiný kód. Pomocí Shapes.AddPicture můžete určit LinkToFile:=msoFalse. Zde je kód, který se má použít:

Sub HowToInsertPicture() ' This code fails in 2010 or newer ' ActiveSheet.Pictures.Insert( _ ' "C:UsersBillDesktopPhotoPrintAll RocketaWalg180422-3.jpg.webp").Select NewFN = "C:UsersBillDesktopPhotoPrintAll RocketaWalg180422-3.jpg.webp" ActiveSheet.Shapes.AddPicture(Filename:=NewFN, _ LinkToFile:=msoFalse, _ SaveWithDocument:=msoTrue, _ Left:=1, Top:=1, Width:=140, Height:=195).Select End Sub

Sledovat video

Přepis videa

Naučte se Excel z Podcastu, epizoda 2214: Opravdu otravná chyba VBA, když se pokoušíte vložit obrázek.

V pořádku. Takže hej, toto se začalo dít v Excelu 2010. Nedávno jsem se tím znovu spálil.

Vložím tedy obrázek do tohoto sešitu, ale chci tuto akci zaznamenat, abych ji mohl automaticky provést. Zobrazit, Makra, Záznamové makro, HowToInsertAPicture. Perfektní. A právě sem vložím obrázek: Ilustrace, Obrázky, pojďme si vybrat jednu z našich raketových fotografií a Vložit. Dobře, přestaň nahrávat. Krásná. Teď se toho zbavím. Chci se podívat na makra, takže Alt + F8, HowToInsertAPicture, Edit, a říká se, že je toto: ActiveSheet.Pictures.Insert a pak cesta k obrázku. V pořádku. Jo, to zní dobře. A ve skutečnosti bychom měli být schopni to spustit. Takže Alt + 8, HowToInsertAPicture a Run, a dostaneme obrázek - to je krásné. Dokud tento sešit neuložím a nechám ho stáhnout nebo poslat někomu jinému, a pak obrázek nebudeVůbec se neobjevím - vše, co dostanu, je červené X, které říká: Hej, už nemůžeme najít obrázek. Například, co tím myslíš, že nemůžeš najít obrázek? Požádal jsem vás o vložení obrázku, nikoli odkazu na obrázek. Ale počínaje Excelem 2010 tento zaznamenaný kód ve skutečnosti vkládá odkaz na obrázek. A pokud tento sešit otevřu někde na počítači, který nemá přístup k této jednotce a tomuto obrázku: červená X. Super otravné.

V pořádku. Takže z nějakého důvodu je v aplikaci Excel 2010 novou věcí namísto ActiveSheet.Pictures.Insert uděláte ActiveSheet.Shapes.AddPicture. V pořádku. A stále můžeme určit název souboru, ale pak tyto další argumenty, které máme: LinkToFile = msoFalse - jinými slovy, nevytvářejte hloupý červený odkaz - a pak SaveWithDocument: = msoTrue - což ve skutečnosti znamená vložte tam zatraceně obrázek a oni mohou určit, kde to má být - vlevo, nahoře …

Jak zjistíme výšku a šířku? V pořádku. Chceme to proporcionálně změnit, že? Takže budu držet stisknutou klávesu Shift, jako, dostat to zpět na méně než jednu obrazovku plnou dat, možná právě tam. To je tedy můj cíl. Chci vložit obrázek a vybrat paprsek této velikosti. Okamžitě se vrátím k VBA Alt + F11, Ctrl + G a požádám o:? selection.width-- tak to je otazník, mezera, šířka výběrového bodu a otazník, výška výběrového bodu (? Selection.height). Dobře, a to mi říká o 140 a 195 - takže šířka, 140 a 195, takhle. Zbavte se okamžitého okna a pak zde toto smažeme a spustíme kód, který jej skutečně vložil. Má správnou velikost, bude možné ji otevřít, když si ji stáhnete,nebo si to stáhnu, pokud nemáte přístup k původnímu obrázku.

Chápu to, věci se mění, museli změnit kód. Ale skutečnost, že neaktualizovali záznam makra a záznam makra nám dával špatný kód, to nefunguje. To je super nepříjemné.

Ahoj, dozvědět se více o makrech, podívejte se na tuto knihu, Excel 2016 VBA Macros, Tracy Syrstad a já. Ve skutečnosti máme tuto verzi pro každou verzi, která sahá až do aplikace Excel 2003. Takže, ať už máte cokoli, za předpokladu, že jde o Windows, existuje pro vás verze.

Dobře, dnes to zabalím - to je můj problém. Zaznamenal jsem kód pro vložení obrázku a vytváří odkaz na obrázek, takže kdokoli jiný, kterému pošlu sešit, obrázek nevidí. Místo toho používám záznamník maker, který dělá ActiveSheets.Shape.Picture, použijte tento nový ActiveSheet.Shapes.AddPicture. Nebo můžeme zadat LinkToFile, no; uložit s dokumentem, ano; a bude dobré jít.

No, hej, díky za sledování, uvidíme se příště na dalším netcastu z.

Stáhněte si soubor Excel

Postup stažení souboru aplikace Excel: vba-insert-picture-bug.xlsm

Záznamník maker v aplikaci Excel mnohokrát zaznamená nesprávný kód. Oprava výše umožňuje úspěšně vkládat obrázky pomocí VBA.

Excel myšlenka dne

Požádal jsem své přátele Excel Master o radu ohledně Excelu. Dnešní myšlenka k zamyšlení:

„Excel je nástroj ve službě lidem, kteří musí žít s následky.“

Oz du Soleil

Zajímavé články...