VBA Képhiba beszúrása - Excel tippek

Tartalomjegyzék

Szükségem volt arra, hogy egy Excel makró illesszen be egy képet az Excelbe. Bekapcsoltam a makró felvevőt, betettem a képet. De amikor ezt a rögzített kódot használtam, a kép nem jelenik meg más számítógépeken. Ehelyett kapok egy piros X-et, ahol a képnek lennie kell.

Az Excel 2007 vagy korábbi verzióiban használt kód. De valami megváltozott az Excel 2010-ben. Amikor futtatja a kódot az ActiveSheet.Pictures.Isert fájlba, az Excel * nem * illeszti be a képet. Ehelyett egy linket illeszt be a képhez.

Természetesen, amikor futtatja a kódot a számítógépén, úgy tűnik, hogy minden működött. Megjelenik a kép.

Úgy néz ki, hogy a makró működött.

De amikor valaki megnyitja a munkafüzetet egy másik számítógépen, piros X-et kap, és üzenetet kap arról, hogy a képet áthelyezték vagy átnevezték.

Piros X a kép helyett

Nos, természetesen a kép nem a Kezelőm számítógépén található. Nem kértem, hogy az Excel hozzon létre egy linket a képhez. Az Excel-t kértem a kép beszúrásához. De a rögzített kód linket helyez a képre.

A megoldás az, ha más kódra váltunk. A Shapes.AddPicture használatával megadhatja LinkToFile:=msoFalse. Itt van a használni kívánt kód:

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

Videót nézni

Videó átirat

Ismerje meg az Excel programot a Podcast 2214-es epizódjából: Nagyon idegesítő VBA-hiba, amikor képet próbál beilleszteni.

Rendben. Szóval, hé, ez az Excel 2010-ben kezdődött. Nemrégiben megint megégtem tőle.

Tehát be fogok illeszteni egy képet ebbe a munkafüzetbe, de szeretném rögzíteni ezt a műveletet, hogy automatikusan meg tudjam csinálni. Nézet, Makrók, Rögzítő makró, HowToInsertAPicture. Tökéletes. És csak beillesztek egy képet ide: Illusztrációk, Képek, válasszuk ki az egyik rakétafotónkat és az Insert-et. Rendben, állítsa le a felvételt. Gyönyörű. Most meg fogok szabadulni ettől. Szeretnék egy pillantást vetni a makrókra, így az Alt + F8, a HowToInsertAPicture, az Edit gombra, és ezt mondja: ActiveSheet.Pictures.Isert, majd a kép elérési útját. Rendben. Igen, ez jól hangzik. És valójában ezt képesnek kell lennünk futtatni. Tehát Alt + 8, HowToInsertAPicture és Run, és megkapjuk a képet - ez gyönyörű. Amíg nem mentem el ezt a munkafüzetet, és hagyom, hogy letöltse vagy elküldje másnak, addig a kép nem jelenik meg.Egyáltalán nem jelenik meg … csak egy piros X-et kapok, amely azt mondja: Hé, már nem találjuk a képet. Hogy érted, hogy nem találod a képet? Arra kértem, hogy tegyen be képet, ne egy linket a képhez. De az Excel 2010-től kezdődően ez a rögzített kód valójában egy linket illeszt a képhez. És ha megnyitom ezt a munkafüzetet valahol egy számítógépen, amely nem fér hozzá ehhez a meghajtóhoz és ahhoz a képhez: piros X. Szuper bosszantó.

Rendben. Tehát valamilyen oknál fogva az Excel 2010-ben az új dolog az ActiveSheet.Pictures helyett. Helyezze be az ActiveSheet.Shapes.AddPicture parancsot. Rendben. És még mindig megadhatunk egy fájlnevet, de akkor ezek a további argumentumok, amelyek vannak: LinkToFile = msoFalse-- más szavakkal, ne hozza létre a hülye piros linket - majd a SaveWithDocument: = msoTrue-- ami azt jelenti, valójában tedd oda az átkozott képet, és megadhatják, hogy hol legyen - a bal, a felső …

Most hogyan lehet kitalálni a magasságot és a szélességet? Rendben. Nos, ezt arányosan át akarjuk méretezni, igaz? Tehát lenyomva tartom a Shift billentyűt, és visszajuttatom ezt kevesebb, mint egy képernyőre, amely tele van adattal, talán ott. Tehát ez a célom. Be akarom illeszteni a képet, és akkora fénysugarat akarok választani. Visszatérek a VBA Alt + F11, Ctrl + G oldalra az azonnali ablakhoz, és megkérdezem:? választás.szélesség - tehát kérdőjel, szóköz, kiválasztási pont szélessége és kérdőjel, kiválasztási pont magassága (? Kiválasztás.magasság). Rendben, és ez nekem 140-ről és 195-ről szól - tehát a szélesség, 140 és 195, így. Szabaduljon meg az azonnali ablakból, majd itt ezt töröljük, és futtatjuk a kódot, és valóban beillesztette. Megfelelő méretű, nyitott lehet, ha letölti ezt,vagy letöltöm ezt, ha nincs hozzáférése az eredeti képhez.

Értem, a dolgok változnak, meg kellett változtatniuk a kódot. De az a tény, hogy nem frissítették a makrórögzítőt, és a makrórögzítő rossz kódot adott nekünk, ez nem működik. Ez nagyon bosszantó.

Nos, hé, ha többet szeretne megtudni a makrókról, nézze meg ezt a könyvet, az Excel 2016 VBA makrókat, Tracy Syrstad és jómagam. Valójában rendelkezünk ennek verziójával minden verzióhoz, amely visszavezethető az Excel 2003-ra. Tehát bármi is van, feltéve, hogy Windows, van egy verzió az Ön számára.

Rendben, ma összezárva - ez az én problémám. Kódot rögzítettem egy kép beszúrásához, és ez létrehoz egy linket a képre, így bárki más, akinek elküldöm a munkafüzetet, nem látja a képet. Ehelyett azt a makrórögzítőt használom, amely az ActiveSheets.Shape.Picture programot használja, használja ezt az új ActiveSheet.Shapes.AddPicture fájlt. Vagy megadhatjuk a LinkToFile-t, no; mentse dokumentummal, igen; és jó lesz menni.

Nos, hé, köszönöm, hogy megnézted, legközelebb találkozunk egy másik netcast-től.

Töltse le az Excel fájlt

Az Excel fájl letöltése: vba-insert-picture-bug.xlsm

Sokszor az Excel makrofelvevője rossz kódot rögzít. A fenti javítással sikeresen beilleszthet képeket a VBA segítségével.

Excel gondolata a napnak

Az Excel Master barátaimtól kértem tanácsokat az Excel-mel kapcsolatban. Mai gondolat, hogy elgondolkodjak:

"Az Excel olyan emberek szolgálatában álló eszköz, akiknek meg kell élniük a következményeket."

Oz du Soleil

érdekes cikkek...