Chyba vloženia obrázka VBA - tipy pre Excel

Potreboval som, aby makro programu Excel vložilo obrázok do programu Excel. Zapol som makro rekordér, vložil obrázok. Ale keď som použil tento zaznamenaný kód, obraz sa nezobrazí na žiadnom inom počítači. Namiesto toho dostanem červené X, kde by mal byť obrázok.

Kód fungoval v programe Excel 2007 alebo staršom. V programe Excel 2010 sa však niečo zmenilo. Keď spustíte kód do aplikácie ActiveSheet.Pictures.Insert, program Excel * nevkladá obrázok. Namiesto toho vkladá odkaz na obrázok.

Samozrejme, keď spustíte kód na počítači, zdá sa, že všetko fungovalo. Zobrazí sa obrázok.

Vyzerá to, že makro fungovalo.

Keď ale niekto otvorí zošit na inom počítači, dostane červené X a správu, že obrázok mohol byť presunutý alebo premenovaný.

Červené X namiesto obrázka

Obrázok samozrejme nie je v počítači môjho manažéra. Nežiadal som, aby Excel vytvoril odkaz na obrázok. Požiadal som program Excel, aby vložil obrázok. Ale zaznamenaný kód vkladá odkaz na obrázok.

Riešením je prechod na iný kód. Pomocou nástroja Shapes.AddPicture môžete určiť LinkToFile:=msoFalse. Tu je kód, ktorý sa má použiť:

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

Pozeraj video

Prepis videa

Naučte sa Excel z Podcastu, epizóda 2214: Skutočne nepríjemná chyba VBA, keď sa pokúšate vložiť obrázok.

Dobre. Takže, hej, toto sa začalo diať v programe Excel 2010. Nedávno som sa tým znova spálil.

Idem teda vložiť obrázok do tohto zošita, ale chcem zaznamenať túto akciu, aby som to mohol urobiť automaticky. Zobraziť, Makrá, Makro zapisovača, HowToInsertAPicture. Perfektné. A ja sem len vložím obrázok: Ilustrácie, Obrázky, vyberieme si jednu z našich raketových fotografií a Vložiť. Dobre, zastavte nahrávanie. Nádhera. Teraz sa toho zbavím. Chcem sa pozrieť na makrá, takže Alt + F8, HowToInsertAPicture, Edit a povie sa toto: ActiveSheet.Pictures.Insert a potom cesta k obrázku. Dobre. Áno, to znie dobre. A v skutočnosti by sme mali byť schopní to spustiť. Takže Alt + 8, HowToInsertAPicture a Run, a dostaneme obrázok - to je nádherné. Kým tento zošit neuložím a nedovolím vám ho stiahnuť alebo poslať niekomu inému, obrázok potom nebudeVôbec sa neobjavujem - jediné, čo dostanem, je červené X, ktoré hovorí: „Hej, už nemôžeme nájsť ten obrázok. Čo napríklad znamená, že nemôžete nájsť obrázok? Požiadal som vás, aby ste vložili obrázok, nie odkaz na obrázok. Ale počnúc programom Excel 2010 tento zaznamenaný kód v skutočnosti vkladá odkaz na obrázok. A ak otvorím tento zošit niekde na počítači, ktorý nemá prístup k tejto jednotke a tomuto obrázku: červená X. Super nepríjemné.

Dobre. Takže z nejakého dôvodu je v programe Excel 2010 novou vecou namiesto aplikácie ActiveSheet.Pictures. Vložte ju a urobte ActiveSheet.Shapes.AddPicture. Dobre. A stále môžeme určiť názov súboru, ale potom máme ďalšie argumenty, ktoré máme: LinkToFile = msoFalse - inými slovami, nevytvárajte hlúpy červený odkaz - a potom SaveWithDocument: = msoTrue - čo v skutočnosti znamená vložte tam prekliate obrázok a oni môžu určiť, kde to má byť - ľavá, horná …

Ako teraz zistíme výšku a šírku? Dobre. Chceme to primerane zmeniť, nie? Takže podržím stlačený kláves Shift, akoby som to vrátil na menej ako jednu obrazovku plnú dát, možno práve tam. To je teda môj cieľ. Chcem vložiť obrázok a mať vybratý lúč takej veľkosti. Okamžité okno sa vrátim k VBA Alt + F11, Ctrl + G a požiadam o:? selection.width-- takže to je otáznik, medzera, šírka výberového bodu a otáznik, výška výberového bodu (? Selection.height). Dobre, a to mi hovorí o 140 a 195 - takže šírka, 140 a 195, takhle. Zbavte sa okamžitého okna a potom tu toto vymažeme a spustíme kód, ktorý ho vlastne vložil. Má správnu veľkosť, bude sa dať otvoriť, keď si ju stiahnete,alebo si ho stiahnem, ak nemáte prístup k pôvodnému obrázku.

Rozumiem, veci sa menia, museli zmeniť kód. Ale skutočnosť, že neaktualizovali záznam makra a záznamník makier nám dával zlý kód, to nefunguje. To je super nepríjemné.

No, hej, aby som sa dozvedel viac o makrách, pozri si túto knihu, Excel 2016 VBA Macros, od Tracy Syrstad a mňa. V skutočnosti máme túto verziu pre každú verziu, ktorá siaha do programu Excel 2003. Takže nech už máte čokoľvek, ak je to Windows, je tu verzia pre vás.

Dobre, dnes to zabalím - je to môj problém. Zaznamenal som kód na vloženie obrázka a vytvára odkaz na obrázok, takže ktokoľvek iný, komu pošlem zošit, tento obrázok nevidí. Namiesto toho používam záznam makra, ktorý robí ActiveSheets.Shape.Picture, použite tento nový ActiveSheet.Shapes.AddPicture. Alebo môžeme určiť LinkToFile, no; uložiť s dokumentom, áno; a bude dobré ísť.

Hej, ďakujem za sledovanie, uvidíme sa nabudúce pri ďalšom netcaste z.

Stiahnite si súbor Excel

Stiahnutie súboru programu Excel: vba-insert-picture-bug.xlsm

Makro záznamník v programe Excel mnohokrát zaznamená nesprávny kód. Pomocou opravy vyššie môžete úspešne vkladať obrázky pomocou VBA.

Excel myslel dňa

Požiadal som svojich priateľov programu Excel Master o radu o programe Excel. Dnešná myšlienka na zamyslenie:

„Excel je nástroj v službe ľuďom, ktorí musia žiť s následkami.“

Oz du Soleil

Zaujímavé články...