VBA Umetni slikovnu pogrešku - Excel savjeti

Morao sam da Excel makronaredba ubaci sliku u Excel. Uključio sam makro snimač, ubacio sliku. Ali kad sam upotrijebio taj zabilježeni kod, slika se neće pojaviti ni na jednom drugom računalu. Umjesto toga, dobivam crveni X tamo gdje bi slika trebala biti.

Kôd koji je radio u programu Excel 2007 ili starijoj verziji. Ali nešto se promijenilo u programu Excel 2010. Kada pokrenete kôd na ActiveSheet.Pictures.Insert, Excel * ne * ubacuje sliku. Umjesto toga, ubacuje vezu na sliku.

Naravno, kad pokrenete kod na računalu, čini se da je sve funkcioniralo. Pojavi se slika.

Izgleda da je makronaredba uspjela.

Ali kad netko otvori radnu knjižicu na drugom računalu, dobiva crveni X i poruku da je slika možda premještena ili preimenovana.

Crveni X umjesto slike

Pa, naravno da slika nije na računalu mog upravitelja. Nisam tražio da Excel stvori vezu do slike. Tražio sam Excel da ubaci sliku. No, zabilježeni kod ubacuje vezu do slike.

Rješenje je prelazak na drugačiji kod. Korištenjem Shapes.AddPicture možete odrediti LinkToFile:=msoFalse. Evo koda za upotrebu:

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

Gledaj video

Prijepis videozapisa

Naučite Excel iz Podcasta, epizoda 2214: Stvarno neugodna VBA greška kada pokušavate umetnuti sliku.

U redu. Pa, hej, ovo se počelo događati u programu Excel 2010. Nedavno sam se opet opekao.

Stoga ću umetnuti sliku u ovu radnu knjigu, ali želim snimiti tu radnju kako bih je mogao automatski napraviti. Pogled, Makronaredbe, Makro snimač, HowToInsertAPicture. Savršen. A ja ću ovdje umetnuti samo sliku: Ilustracije, Slike, odaberite jednu od naših raketnih fotografija i Umetni. U redu, prestanite snimati. Lijep. Sad ću se toga riješiti. Želim pogledati makronaredbe, tako da Alt + F8, HowToInsertAPicture, Edit, i kaže da je ovo: ActiveSheet.Pictures.Insert, a zatim put do slike. U redu. Da, to zvuči dobro. I zapravo, ovo bismo trebali moći pokrenuti. Dakle, Alt + 8, HowToInsertAPicture i Run, i dobivamo sliku - to je prekrasno. Dok ovu radnu knjigu ne spremim i dopustim vam da je preuzmete ili pošaljete nekome drugome, a onda slika ne 'uopće se ne pojavljuje-- sve što dobijem je crveni X koji govori: Hej, ne možemo više pronaći sliku. Kao što mislite kako ne možete pronaći sliku? Zamolio sam vas da umetnete sliku, a ne vezu na sliku. No, počevši od programa Excel 2010, ovaj zabilježeni kôd zapravo ubacuje vezu do slike. A ako otvorim ovu radnu knjigu negdje na računalu koje nema pristup ovom pogonu i toj slici: crveni X. Super dosadno.

U redu. Iz nekog razloga, u programu Excel 2010, novo što treba učiniti je ActiveSheet.Pictures.Insert i ActiveSheet.Shapes.AddPicture. U redu. I dalje možemo odrediti naziv datoteke, ali onda ovi dodatni argumenti koje imamo: LinkToFile = msoFalse - drugim riječima, ne stvarajte glupu crvenu vezu - a zatim SaveWithDocument: = msoTrue - što znači, zapravo stavi tu prokletu sliku i mogu odrediti gdje bi trebala biti - lijeva, gornja …

Sada, kako ćemo izračunati visinu i širinu? U redu. Pa, želimo ovo proporcionalno promijeniti, zar ne? Dakle, držat ću tipku Shift, vratiti je na manje od jednog zaslona punog podataka, možda baš tamo. To mi je dakle cilj. Želim umetnuti sliku i imati snop te veličine s odabranim. Vratit ću se na VBA Alt + F11, Ctrl + G za neposredni prozor i tražit ću:? selection.width - dakle, to je upitnik, razmak, širina selekcijske točke i upitnik, visina selekcijske točke (? Selection.height). U redu, i to mi govori o 140 i 195-- pa širina, 140 i 195, takva. Riješite se neposrednog prozora, a onda ćemo ovdje izbrisati i pokrenuti kôd, a on ga je zapravo ubacio. Točne je veličine, moći će biti otvoren kad ovo preuzmete,ili ovo preuzmem ako nemate pristup izvornoj slici.

Shvaćam, stvari se mijenjaju, morali su promijeniti kod. Ali činjenica da nisu ažurirali makro snimač, a makro snimač nam je davao loš kod, to ne funkcionira. To je super dosadno.

Pa, hej, ako želite saznati više o makronaredbama, pogledajte ovu knjigu, Excel 2016 VBA Macros, Tracy Syrstad i ja. Zapravo imamo verziju ove verzije za svaku verziju koja seže do izvrsnosti 2003. Dakle, što god da imate, pod uvjetom da je Windows, postoji verzija za vas.

U redu, završetak danas-- to je moj problem. Snimio sam kôd za umetanje slike i on stvara vezu do slike, tako da bilo tko drugi kome pošaljem radnu knjigu ne može vidjeti sliku. Umjesto toga koristim snimač makronaredbi koji radi ActiveSheets.Shape.Picture, upotrijebite ovaj novi ActiveSheet.Shapes.AddPicture. Ili možemo odrediti LinkToFile, ne; spremiti s dokumentom, da; i bit ćeš dobar za polazak.

Pa, hej, hvala na gledanju, vidimo se sljedeći put za još jedan prijenos od.

Preuzmite datoteku Excel

Da biste preuzeli excel datoteku: vba-insert-picture-bug.xlsm

Makro snimač u Excelu mnogo puta snima pogrešan kôd. Pomoću gornjeg popravka možete uspješno umetnuti slike pomoću VBA-a.

Excel misao dana

Pitao sam svoje prijatelje Excel Master za savjet o Excelu. Današnja misao za razmišljanje:

"Excel je alat koji služi ljudima koji moraju živjeti s posljedicama."

Oz du Soleil

Zanimljivi članci...