VBA Vstavi slikovno napako - nasveti za Excel

V Excel sem moral vstaviti sliko v makro Excel. Vklopil sem makro snemalnik, vstavil sliko. Ko pa sem uporabil to posneto kodo, se slika ne bo pojavila v nobenem drugem računalniku. Namesto tega dobim rdeč X tam, kjer bi morala biti slika.

Koda, ki se je uporabljala v Excelu 2007 ali starejši. Toda nekaj se je spremenilo v Excelu 2010. Ko zaženete kodo v ActiveSheet.Pictures.Insert, Excel * ne * vstavi slike. Namesto tega vstavlja povezavo do slike.

Ko zaženete kodo v računalniku, se zdi, da je vse delovalo. Prikaže se slika.

Videti je, da je makro deloval.

Ko pa nekdo odpre delovni zvezek v drugem računalniku, dobi rdeči X in sporočilo, da je bila slika morda premaknjena ali preimenovana.

Rdeči X namesto slike

No, slike seveda ni v računalniku mojega upravitelja. Nisem zahteval, da Excel ustvari povezavo do slike. Prosil sem za Excel, da vstavi sliko. Toda posneta koda vstavlja povezavo do slike.

Rešitev je preklop na drugo kodo. Z uporabo Shapes.AddPicture lahko določite LinkToFile:=msoFalse. Tu je koda, ki jo je treba uporabiti:

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

Oglejte si video

Video zapis

Naučite se Excela iz podcasta, epizoda 2214: resnično moteča napaka VBA, ko poskušate vstaviti sliko.

Vredu. Torej, hej, to se je začelo dogajati v Excelu 2010. Pred kratkim sem se spet opekel.

Torej bom v ta delovni zvezek vstavil sliko, vendar želim to dejanje posneti, da bom lahko samodejno to storil. Pogled, makri, makro snemalnika, HowToInsertAPicture. Odlično. In tukaj bom samo vstavil sliko: Ilustracije, slike, izberemo eno izmed naših raketnih fotografij in Vstavi. V redu, nehaj snemati. Čudovito. Zdaj se bom tega znebil. Želim si ogledati makre, torej Alt + F8, HowToInsertAPicture, Edit in piše: ActiveSheet.Pictures.Insert in nato pot do slike. Vredu. Ja, to se sliši dobro. In pravzaprav bi to morali imeti možnost voditi. Torej Alt + 8, HowToInsertAPicture in Run, in dobili smo sliko - to je čudovito. Dokler ne shranim te delovne knjige in vam dovolim, da jo prenesete ali pošljete nekomu drugemu, potem pa slika nesploh se ne prikaže-- vse kar dobim je rdeči X, ki pravi: Hej, slike ne moremo več najti. Na primer, kaj misliš, da ne najdeš slike? Prosil sem vas, da vstavite sliko in ne povezave do slike. Toda v Excelu 2010 ta posneta koda dejansko vstavlja povezavo do slike. In če odprem ta delovni zvezek nekje v računalniku, ki nima dostopa do tega pogona in te slike: rdeča X. Super nadležno.

Vredu. Iz nekega razloga je v Excelu 2010 namesto ActiveSheet.Pictures.Insert naredil ActiveSheet.Shapes.AddPicture. Vredu. In še vedno lahko določimo ime datoteke, potem pa te dodatne argumente, ki jih imamo: LinkToFile = msoFalse - z drugimi besedami, ne ustvarjajte neumne rdeče povezave - in nato SaveWithDocument: = msoTrue - kar v resnici pomeni daj tam prekleto sliko in lahko določijo, kje naj bi bila - leva, zgornja …

Zdaj, kako najdemo višino in širino? Vredu. No, to želimo spremeniti sorazmerno, kajne? Torej bom držal tipko Shift, na primer, vrnil to na manj kot en zaslon, poln podatkov, morda tam tako. To je torej moj cilj. Želim vstaviti sliko in imeti žarek takšne velikosti s to izbrano. Vrnil se bom na VBA Alt + F11, Ctrl + G za neposredno okno in prosil za:? selection.width - torej to je vprašaj, presledek, širina izbirne pike in vprašaj, višina izbirne pike (? Selection.height). V redu, in to mi govori o 140 in 195 - torej širina, 140 in 195, takšna. Znebite se neposrednega okna, nato pa bomo to izbrisali in zagnali kodo, ki jo je dejansko vstavila. Je prave velikosti, lahko bo odprt, ko to prenesete,ali prenesem to, če nimate dostopa do izvirne slike.

Razumem, stvari se spremenijo, morali so spremeniti kodo. Toda dejstvo, da makro snemalnika niso posodobili in nam je snemalnik makrov dal slabo kodo, ne deluje. To je zelo nadležno.

No, hej, če želite izvedeti več o makrih, si oglejte to knjigo, Excel 2016 VBA Macros, avtorja Tracy Syrstad in mene. Pravzaprav imamo različico te različice za vsako različico, ki sega do leta 2003. Torej, kar koli že imate, pod pogojem, da gre za Windows, obstaja različica za vas.

V redu, zaključek danes-- to je moj problem. Posnel sem kodo, da sem vstavil sliko, in ustvarja povezavo do slike, zato vsi, ki jim pošljem delovni zvezek, ne morejo videti slike. Namesto tega uporabljam snemalnik makrov, ki izvaja ActiveSheets.Shape.Picture, uporabite ta novi ActiveSheet.Shapes.AddPicture. Lahko pa določimo LinkToFile, ne; shrani z dokumentom, da; in dobro boš šel.

No, hej, hvala za ogled, se vidimo naslednjič za še eno oddajo.

Prenesite datoteko Excel

Če želite prenesti datoteko excel: vba-insert-picture-bug.xlsm

Snemalnik makrov v Excelu velikokrat zabeleži napačno kodo. Z zgornjim popravkom lahko slike uspešno vstavljate s pomočjo VBA.

Excel Misel dneva

Za nasvet glede Excela sem prosil prijatelje Excel Excel. Današnja misel o premišljevanju:

"Excel je orodje, ki služi ljudem, ki morajo živeti s posledicami."

Oz du Soleil

Zanimive Članki...