VBA Insert Picture Bug - Excel padomi

Man vajadzēja, lai Excel makro ievietotu attēlu programmā Excel. Es ieslēdzu makro reģistratoru, ievietoju attēlu. Bet, kad es izmantoju šo ierakstīto kodu, attēls neparādīsies nevienā citā datorā. Tā vietā es saņemu sarkanu X, kur jābūt attēlam.

Kods, kas darbojās programmā Excel 2007 vai agrāk. Bet programmā Excel 2010. kaut kas mainījās. Palaižot kodu uz ActiveSheet.Pictures.Ievietojiet, Excel * ne * ievieto attēlu. Tā vietā tā ievieto saiti uz attēlu.

Protams, palaižot kodu datorā, šķiet, ka viss ir izdevies. Parādās attēls.

Izskatās, ka makro darbojās.

Bet, kad kāds atver darbgrāmatu citā personālajā datorā, viņš saņem sarkanu X un ziņojumu, ka attēls, iespējams, ir pārvietots vai pārdēvēts.

Attēla vietā sarkans X

Protams, attēls, protams, nav mana menedžera datorā. Es neprasīju, lai Excel izveidotu saiti uz attēlu. Es lūdzu Excel ievietot attēlu. Bet ierakstītais kods ievieto saiti uz attēlu.

Risinājums ir pārslēgšanās uz citu kodu. Izmantojot Shapes.AddPicture, varat norādīt LinkToFile:=msoFalse. Izmantojams kods:

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

Skatīties video

Video atšifrējums

Uzziniet programmu Excel no Podcast, 2214. sērija: tiešām kaitinoša VBA kļūda, mēģinot ievietot attēlu.

Labi. Tātad, hei, tas sāka notikt programmā Excel 2010. Es nesen to atkal sadedzināju.

Tāpēc es ievietošu attēlu šajā darbgrāmatā, bet es vēlos ierakstīt šo darbību, lai es to varētu automātiski izdarīt. Skats, makro, ierakstītāja makro, HowToInsertAPicture. Lieliski. Un es šeit vienkārši ievietošu attēlu: ilustrācijas, attēli, izvēlēsimies vienu no mūsu raķešu fotoattēliem un ievietojiet. Labi, pārtrauciet ierakstīšanu. Skaists. Tagad es atbrīvojos no tā. Es gribu apskatīt makro, tāpēc Alt + F8, HowToInsertAPicture, Edit un ir teikts: ActiveSheet.Pictures.Ievietojiet attēlu un pēc tam ceļu. Labi. Jā, tas izklausās labi. Un patiesībā mums vajadzētu būt iespējai to vadīt. Tātad Alt + 8, HowToInsertAPicture un Run, un mēs iegūstam attēlu - tas ir skaisti. Līdz brīdim, kad es saglabāju šo darbgrāmatu un ļauju jums to lejupielādēt vai nosūtīt kādam citam, un tad attēls netiek rādīts.Es vispār neparādos - viss, ko es saņemu, ir sarkans X, sakot: Hei, mēs vairs nevaram atrast attēlu. Piemēram, ko jūs domājat, ka nevarat atrast attēlu? Es lūdzu jūs ievietot attēlu, nevis saiti uz attēlu. Bet, sākot ar programmu Excel 2010, šis ierakstītais kods faktiski ievieto saiti uz attēlu. Un, ja es atveru šo darbgrāmatu kaut kur datorā, kuram nav piekļuves šim diskam un attēlam: sarkans X. Ļoti kaitinošas.

Labi. Kādu iemeslu dēļ programmā Excel 2010 jaunā lieta, kas jādara, ir nevis ActiveSheet.Pictures. Ievietojiet ActiveSheet.Shapes.AddPicture. Labi. Un mēs joprojām varam norādīt faila nosaukumu, bet pēc tam šie papildu argumenti, kas mums ir: LinkToFile = msoFalse-- citiem vārdiem sakot, neveidojiet stulbo sarkano saiti - un pēc tam SaveWithDocument: = msoTrue-- kas nozīmē faktiski ielieciet tur nopelnīto attēlu, un viņi var norādīt, kur tam jābūt - kreisais, augšējais …

Kā tagad noskaidrot augstumu un platumu? Labi. Nu, mēs vēlamies to proporcionāli mainīt, vai ne? Tāpēc es turēšu nospiestu taustiņu Shift, piemēram, lai to atgrieztu mazāk nekā vienā ekrānā, kas ir pilns ar datiem, iespējams, tāpat kā tur. Tātad tas ir mans mērķis. Es vēlos ievietot attēlu un man ir tāda izmēra stars ar atlasīto. Es atgriezīšos pie VBA Alt + F11, Ctrl + G tūlītējam logam, un es prasīšu:? selection.width-- tātad tā ir jautājuma zīme, atstarpe, atlases punkta platums un jautājuma zīme, atlases punkta augstums (? Selection.height). Labi, un tas man stāsta par 140 un 195 - tātad, piemēram, platums, 140 un 195. Atbrīvojieties no tūlītējā loga, un tad šeit mēs to izdzēsīsim un palaidīsim kodu, un tas to faktiski ievietoja. Tas ir pareizā izmērā, tas varēs būt atvērts, kad to lejupielādēsit,vai arī es to lejupielādēju, ja jums nav piekļuves sākotnējam attēlam.

Es to saprotu, lietas mainās, viņiem bija jāmaina kods. Bet fakts, ka viņi neatjaunināja makro reģistratoru, un makro reģistrators mums iedeva sliktu kodu, tas nedarbojas. Tas ir ļoti kaitinoši.

Labi, lai uzzinātu vairāk par makro, apskatiet šo grāmatu, Excel 2016 VBA makro, ko izstrādājusi Treisija Sirstada un es. Mums faktiski ir šī versija katrai versijai, kas atgriežas līdz Excel 2003. Tātad, neatkarīgi no tā, kas jums ir, ar nosacījumu, ka tā ir Windows, jums ir pieejama versija.

Labi, šodien beidzies - tā ir mana problēma. Es ierakstīju kodu, lai ievietotu attēlu, un tas rada saiti uz attēlu, tāpēc visi citi, kuriem es sūtu darbgrāmatu, nevar redzēt attēlu. Tā vietā es izmantoju makro reģistratoru, kas veic ActiveSheets.Shape.Picture, izmantojiet šo jauno ActiveSheet.Shapes.AddPicture. Vai arī mēs varam norādīt LinkToFile, nē; saglabāt ar dokumentu, jā; un tev būs labi iet.

Nu, hei, paldies, ka skatījāties, es jūs redzēšu nākamreiz uz citu netcast no.

Lejupielādējiet Excel failu

Lai lejupielādētu Excel failu: vba-insert-picture-bug.xlsm

Daudzas reizes makro ierakstītājs programmā Excel ieraksta nepareizu kodu. Izmantojot iepriekš minēto labojumu, jūs varat veiksmīgi ievietot attēlus, izmantojot VBA.

Excel dienas doma

Esmu lūdzis saviem Excel Master draugiem padomu par Excel. Šodienas doma apdomāt:

"Excel ir rīks, kas kalpo cilvēkiem, kuriem jāsadzīvo ar sekām."

Oz du Soleil

Interesanti raksti...