Здраво! Покушавам да померам контролну таблу са значајним сликама. Или само покушавате да уметнете слику у ћелију Екцел ВБА. Па, не можете уметнути слике у Екцел ћелије, али можете им променити величину да се уклопе у Екцел ћелију. Ручно извођење ће одузети много времена и досадно је. Па шта је решење? Погодили сте добро, ВБА макро. Сада ћемо кодирати.
Испод је Екцел вба код за уметање слике из фасцикле у ћелију или одређени опсег. Притисните Алт+Ф11, уметните модул и копирајте овај код.
Не брините, доле сам вам објаснио тако да га можете изменити према својим потребама.
Уметните слику у Екцел ћелију са ВБА у ћелију или дати опсег
Под ТестИнсертПицтуреИнРанге () ИнсертПицтуреИнРанге "Ц: \ Име фасцикле \ ПицтуреФилеНаме.гиф", _Ранге ("Б5: Д10")
Енд Суб 'убацује слику и мења јој величину тако да одговара опсегу ТаргетЦеллс Дим п Као Објецт, т Ас Доубле, л Ас Доубле, в Ас Доубле, х Ас Доубле Ако ТипеНаме (АцтивеСхеет) "Ворксхеет", тада изађите из Суб Ако Дир (ПицтуреФилеНаме) = "" Затим изађите из подм 'увези слику Поставите п = АцтивеСхеет.Пицтурес.Инсерт (ПицтуреФилеНаме) 'одредити позиције Са ТаргетЦеллс т = .Највише л = .лево в = .Оффсет (0, .Цолумнс.Цоунт) .Лефт - .Лефт х = .Оффсет (.Ровс.Цоунт, 0) .Топ - .Топ Завршити 'слика положаја Са стр .Топ = т .Лево = л .Ширина = в .Висина = х Завршити Поставите п = Ништа Енд Суб |
Објашњење:
Део 1:
Под ТестИнсертПицтуреИнРанге () ИнсертПицтуреИнРанге "Ц: \ Име фасцикле \ ПицтуреФилеНаме.гиф", _Ранге ("Б5: Д10")
Енд Суб |
Горња потпрограм само позива нашу главну потпрограм ИнсертПицтуреИнРанге која узима само два аргумента. Прво адреса сликовне датотеке са њеним именом и други опсег у који желите да уметнете слику у Екцел.
Део 2:
Суб ИнсертПицтуреИнРанге (ПицтуреФилеНаме Ас Стринг, ТаргетЦеллс Ас Ранге) 'убацује слику и мења јој величину тако да одговара опсегу ТаргетЦеллсДим п Као објект, т Као двоструко, л Као двоструко, в Као двоструко, х Као двоструко
Ако ТипеНаме (АцтивеСхеет) "Ворксхеет" Затим изађите из Суб Ако Дир (ПицтуреФилеНаме) = "" Затим изађите из подм 'увези слику Поставите п = АцтивеСхеет.Пицтурес.Инсерт (ПицтуреФилеНаме) 'одредити позиције Са ТаргетЦеллс т = .Највише л = .лево в = .Оффсет (0, .Цолумнс.Цоунт) .Лефт - .Лефт х = .Оффсет (.Ровс.Цоунт, 0) .Топ - .Топ Завршити 'слика положаја Са стр .Топ = т .Лево = л .Ширина = в .Висина = х Завршити Поставите п = Ништа Енд Суб |
Ово је главна потпрограм која убацује и мења величину слике како би одговарала датом опсегу. Копајмо у то.
Дим п Као Објецт, т Ас Доубле, л Ас Доубле, в Ас Доубле, х Ас Доубле
Ова линија је само променљива декларација која ће нам требати. Напомена п Као променљива објекта. Ова варијабла ће задржати нашу слику.
Ако ТипеНаме (АцтивеСхеет) "Ворксхеет" Затим изађите из Суб
Он проверава да ли је активни лист радни лист или не. Ако то не учини, одмах ће изаћи из кода и ништа се неће догодити.
Ако Дир (ПицтуреФилеНаме) = "" Затим изађите из подм
Проверите да ли сте унели адресу слике за уметање фотографије у Екцел ћелију. Ако га нисте доставили, одмах ће изаћи и ништа се неће догодити.
Поставите п = АцтивеСхеет.Пицтурес.Инсерт (ПицтуреФилеНаме)
Ово је најважнија линија. У овој линији користимо функцију Уметање активног листа. Слике приговарају и стављају га у објекат п који смо раније декларисали. Сада помоћу п можемо лако подесити ширину и дужину слике.
Са ТаргетЦеллс т = .Топ л = .Лефт в = .Оффсет (0, .Цолумнс.Цоунт) .Лефт - .Лефт х = .Оффсет (.Ровс.Цоунт, 0) .Топ - .Топ Енд Витх
Овај сегмент само добија дужину, ширину, врх и лево из датог опсега.
Са п .Топ = т. Лево = л. Ширина = в Висина = х Заврши са
Овај део прилагођава слику датом опсегу. И готово је. На крају, ослободили смо га постављањем на ништа.
Поставите п = Ништа
Ова линија ослобађа меморију.
Овај код ће радити у програмима Екцел 2016, Екцел 2013, Екцел 2010 и Екцел 2007.
Овде сам хтео да уметнем слику у опсег А1: Ц10. Да бих то урадио, доле сам изменио свој код
Суб ТестИнсертПицтуреИнРанге () ИнсертПицтуреИнРанге "Ц: \ Усерс \ Манисх Сингх \ Довнлоадс \ бикер.јпг", _Домет("А1: Ц10")
Енд Суб |
И ово сам добио. Управо оно што сам желео.
Тако да. Помоћу овог кода уметните слику у Екцел ћелију или опсег. Играјте се око кода. Покушајте да убаците различите формате, чудне опсеге и видите шта ће се догодити. Ако имате било каквих питања или се суочавате са изазовом, користите доњи одељак коментара да бисте ме питали.
Скини докуменат
Популарни чланци:
50 Екцел пречица за повећање продуктивности
Како се користи функција ВЛООКУП у програму Екцел
Како се користи функција ЦОУНТИФ у програму Екцел
Како се користи функција СУМИФ у програму Екцел