ВБА Уметните грешку у слику - Екцел савети

Морао сам да Екцел макро убаци слику у Екцел. Укључио сам макро снимач, убацио слику. Али када сам користио тај снимљени код, слика се неће појавити ни на једном другом рачунару. Уместо тога, добијам црвени Кс тамо где би слика требала бити.

Код који је радио у програму Екцел 2007 или старијој верзији. Али нешто се променило у програму Екцел 2010. Када покренете код на АцтивеСхеет.Пицтурес.Инсерт, Екцел * не * убацује слику. Уместо тога, он убацује везу до слике.

Наравно, када покренете код на рачунару, чини се да је све функционисало. Појави се слика.

Изгледа да је макро радио.

Али када неко отвори радну свеску на другом рачунару, добија црвени Кс и поруку да је слика можда премештена или преименована.

Црвени Кс уместо слике

Па, наравно да слика није на рачунару мог менаџера. Нисам тражио да Екцел створи везу до слике. Тражио сам Екцел да убаци слику. Али забележени код убацује везу до слике.

Решење је прелазак на другачији код. Коришћењем Схапес.АддПицтуре можете одредити LinkToFile:=msoFalse. Ево кода који треба користити:

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

Погледајте видео

Видео транскрипт

Научите Екцел из Подцаста, епизода 2214: Стварно досадна ВБА грешка када покушавате да убаците слику.

У реду. Па, хеј, ово се почело догађати у програму Екцел 2010. Недавно сам се опет опекао.

Зато ћу уметнути слику у ову радну свеску, али желим да снимим ту радњу како бих то могао аутоматски да урадим. Виев, Мацрос, Рецордер Мацро, ХовТоИнсертАПицтуре. Савршено. И управо ћу овде уметнути слику: Илустрације, слике, хајде да одаберемо једну од наших ракетних фотографија и Инсерт. У реду, зауставите снимање. Лепа. Сада ћу се тога решити. Желим да погледам макронаредбе, па Алт + Ф8, ХовТоИнсертАПицтуре, Едит, и каже се следеће: АцтивеСхеет.Пицтурес.Инсерт, а затим пут до слике. У реду. Да, то звучи добро. И, у ствари, требали бисмо бити у могућности да ово покренемо. Дакле, Алт + 8, ХовТоИнсертАПицтуре и Рун, и добили смо слику - то је прелепо. Док не сачувам ову радну свеску и не дозволим вам да је преузмете или пошаљете неком другом, а онда слика нећеуопште се не појављујем-- све што добијем је црвени Кс који каже: Хеј, не можемо више да пронађемо слику. На пример, како то мислите, не можете да пронађете слику? Замолио сам вас да убаците слику, а не везу до слике. Али почев од програма Екцел 2010, овај забележени код заправо убацује везу до слике. А ако отворим ову радну свеску негде на рачунару који нема приступ овом погону и тој слици: црвени Кс. Супер досадно.

У реду. Из неког разлога, у програму Екцел 2010, ново што треба урадити је уместо АцтивеСхеет.Пицтурес.Инсерт и АцтивеСхеет.Схапес.АддПицтуре. У реду. И даље можемо одредити име датотеке, али онда ови додатни аргументи које имамо: ЛинкТоФиле = мсоФалсе - другим речима, немојте стварати глупу црвену везу - а затим СавеВитхДоцумент: = мсоТруе - што значи, заправо стави ту проклету слику и они могу да одреде где би требало да буде - лева, горња …

Сад, како да схватимо висину и ширину? У реду. Па, желимо да пропорционално променимо величину, зар не? Тако да ћу задржати тастер Схифт, на пример, вратити ово на мање од једног екрана пуног података, можда баш тамо. То је мој циљ. Желим да убацим слику и имам сноп те величине са изабраним. Вратићу се на ВБА Алт + Ф11, Цтрл + Г за непосредни прозор и тражићу:? селецтион.видтх - дакле, то је знак питања, размак, ширина тачке избора и знак питања, висина тачке избора (? Селецтион.хеигхт). У реду, и то ми говори о 140 и 195-- па ширина, 140 и 195, таква. Решите се тренутног прозора, а онда ћемо овде избрисати и покренути код, а он га је заправо убацио. Праве је величине, моћи ће да буде отворен када ово преузмете,или преузмем ово ако немате приступ оригиналној слици.

Схватам, ствари се мењају, морали су да промене код. Али чињеница да нису ажурирали макро снимач, а макро снимач нам је давао лош код, то не функционише. То је супер досадно.

Па, хеј, да сазнаш више о макроима, погледајте ову књигу, Екцел 2016 ВБА Мацрос, Траци Сирстад и ја. Заправо имамо верзију ове верзије за сваку верзију која сеже до екцела 2003. Дакле, шта год да имате, под условом да је Виндовс, постоји верзија за вас.

У реду, завршетак данас-- то је мој проблем. Снимио сам код за уметање слике и он ствара везу до слике, тако да било ко други коме пошаљем радну свеску не може да је види. Уместо тога, користим Макро снимач који ради АцтивеСхеетс.Схапе.Пицтуре, користим овај нови АцтивеСхеет.Схапес.АддПицтуре. Или можемо одредити ЛинкТоФиле, не; сачувај са документом, да; и бићеш добар за полазак.

Па, хеј, хвала на гледању, видимо се следећи пут за још један пренос од.

Преузмите Екцел датотеку

Да бисте преузели екцел датотеку: вба-инсерт-пицтуре-буг.клсм

Макро снимач у програму Екцел често снима погрешан код. Помоћу горњег поправка можете успешно да уметнете слике помоћу ВБА.

Екцел мисао дана

Питао сам своје пријатеље из програма Екцел Мастер за савет о програму Екцел. Данашња мисао за размишљање:

„Екцел је алат који служи људима који морају да живе са последицама.“

Оз ду Солеил

Занимљиви Чланци...