Вмъкване на картини и изображения в клетки на листа на Excel, макроси на Excel

Имате нужда от макрос, за да поставите изображение (картина) на лист в Excel?

Използвайте функциятаInsertImage, която ще ви позволи да вмъкнете изображение в избраната клетка (или диапазон от клетки).

При извикване на функцията можете да зададете допълнителни допълнителни параметри, указващи дали изображението (или клетката) трябва да се коригира по височина и ширина.

Ако трябва да вмъкнете много изображения в лист на Excel, тогава ще ви помогне добавка, която ви позволява да търсите изображения в дадена папка и да вмъквате снимки в клетки или бележки

Този пример демонстрира възможните употреби на функцията за вмъкване на картини:

А ето и самата функция (копирайте този код в стандартния модул, за да можете да вмъквате картинки в един ред код от всеки макрос):

Коментари

Най-лесният вариант е да копирате цялата клетка (картинката също ще бъде копирана)

Ако имате нужда от „правилния“ начин, трябва да преминете през всички картини на листа в цикъл, като проверявате всяка от тях, за да видите дали е над клетка B2 (чрез анализиране на свойството TopLeftCell, размерите на картините и размерите на клетките) и след това, след като намерите една или повече подходящи картини, да ги копирате и след това да позиционирате копието над клетка E5

Усещате ли разликата в сложността?) затова просто копирайте клетката с картината

Моля, кажете ми как мога да копирам снимка от една клетка в друга. Например, конкретно от клетка B2 до клетка E5?

Благодаря, много полезно!

има код, който вмъква картина "нормално" (не връзка към файла с картина)

Можете да го направите - дори само под поръчка Не съм много приятелски настроен към PowerPoint - поръчките за него са изключително редки. НоМожете да го разберете, ако сте готови да платите.

Здравейте, възможно ли е тази реализация за изтегляне на диаграми от excel в презентация на powerpoint? Опитах се да го разработя сам, излезе следното:

Всичко работи добре, но бих искал да подобря автоматичния избор на размера на диаграмата, например, ако диаграмата е малка, тогава няколко диаграми бяха вмъкнати в един слайд, ако е възможно. Ще се радвам на съвети и ще съм благодарен за помощта + може и да е полезно на някого.

Здравейте, моля за помощ!. използва вашия продукт, за да намери файлове в папка и подпапки. много полезен при решаването на проблеми. Възможно ли е да вмъкнете изображения в списъка с файлове, които вашия макрос намира в продължението на функционалността. тези. Искам да го направя автоматично чрез потребителска форма. с обяснение ако може. Благодаря ти!

Здравей, Иван Специално за тези, които не разбират кода, Направих добавка за вмъкване на картинки в Excel Връзка за изтегляне има в началото на статията.

Благодаря много! ще опитам

Ако не разбирате достатъчно макроси, тогава е много по-трудно да компресирате изображения, има смисъл да използвате готово решение.

Компресиране (преоразмеряване на файла с изображение преди вмъкване на изображение): http://excelvba.ru/code/ResizeImages

PS: можете да зададете бързи клавиши на макроси от моята добавка (PastePictures). Засега това не може да се постигне с обикновени инструменти за добавки, но, ако е необходимо, мога да го внедря в бъдещи версии.

Благодаря много! За съжаление нямам специални познания да променям и настройвам команди. Вече използвам вашата програма за добавки успешно, но все пак искам да опростя процеса, като натискам клавишни комбинации. Бихте ли ми дали ощепредложи команда за компресиране на вмъкната снимка?

Excel 2010 се нуждае от различен начин за вмъкване на картини, по-сложен: не Pictures.Insert, а Shapes.AddPicture

Добър ден! Моля, помогнете ми с макроса. Този макрос работи добре в Excel 2003, но в Excel 2010 всичко е различно, когато прехвърляте файл, връзките излитат в клетките. Моля, помогнете да адаптирате този код за 2010 Excel

Здравей Марина Самите изображения няма да се смалят, без значение какъв метод на вмъкване изберете. Excel има вградена възможност за компресиране на картини, но това е може би единственото действие, което не може да бъде извършено програмно (чрез VBA).

Моята програма използва функциите на WinAPI, за да създава миниатюри, преди да ги вмъкне в работен лист. Има много взаимосвързан код (тъй като програмата е универсална и съдържа куп настройки) Следователно простото копиране на този код от добавката няма да работи. Освен това пиша макроси само за Excel и нямам представа как ще се държи този код в 1C. Затова няма да се ангажирам да ви помогна.

Решение на проблема с макрос от 1C: 1) стартирайте Excel в скрит режим 2) в него отворете създадения файл на Excel и моята добавка 3) стартирайте програмно макроса за вмъкване на картини (можете програмно да промените настройките за вмъкване преди това) 4) затворете Excel

PS: Можете да опитате да напишете кода сами. Всичко, от което се нуждаете за него, е тук: http://excelvba.ru/code/ResizeImages (това е само кодът от моята добавка. Имате нужда от макроса „ResizeImages“)

Да, правя всичко от 1C. Когато показах цената с помощта на AddPicture, получих файл от 6 метра, когато попълних снимките на същия файл с вашата добавка - 3метра. По принцип използвах AddPicture с параметрите, зададени веднага, ще опитам с нули. Благодаря много за отговорите! В никакъв случай не съм VBA програмист.

Пускате ли макрос от 1C? Тези. вмъкване на снимки и изпращане - всичко от 1C? (ако сте в Excel, тогава можете програмно да управлявате моята добавка, като изпълните командата за вмъкване на картини от нея. но това е само когато работите с макрос от Excel)

Да, трябва да използвате AddPicture с параметри 0,0,0,0 и след това да позиционирате картината върху листа и да зададете необходимите размери.

Що се отнася до размера на картините, - AddPicture вмъква точно същите картини, като Така че размерът на създадения Excel файл не зависи от метода на вмъкване на картини.

Да, програмата се вмъква добре) Но трябва да генерирам файл и да го изпратя на клиенти с бутон, така че потребителите дори да не отиват в Excel. Пробвах и метода AddPicture, но файлът е голям, явно не компресира картината при поставяне. Тези. не съдба, или мога да опитам нещо друго?

Да, има такъв проблем - по подразбиране в Excel 2010 се вмъкват картини, свързани с файлове (ако използвате метода за вмъкванеPictures.Insert )

Има и други начини за вмъкване на картини - но е по-трудно да позиционирате картината спрямо клетката.

В универсалната програма за вмъкване на картинки в Excel този проблем е решен -картините, вмъкнати с нейна помощ, се записват заедно с файла и можете спокойно да изпратите файл с картинки. В допълнение, тази програма има опция за компресиране на изображения, което също е важно.

Здравейте! Използвах вашия макрос, за да покажа снимки от 1s в Excel. Но при изтриване на каталог със снимки, вместо снимки, се показва съобщението "Не може да се покаже свързаната снимка". И имам нужда от файл за клиентиизпрати. какво правя грешно Моля те кажи ми!

Моля те кажи ми. Ако файлът на Excel е споделен, как мога да вмъкна картина? Тази функция не поставя.

Александър, какво общо има въпросът ти с темата на статията (за вмъкване на картинки на Excel лист)? Разгледайте форумите на Excel за помощ.

как да свиете текст в excel и да го копирате в word

Здравейте, можете ли да ми кажете с какви макро команди може да се промени позицията на жълтия ромб спрямо вмъкнатия куб? (msoShapeCube)

Картината се променя - кодът изглежда правилен. Но докато макросът не приключи работата си, Excel може да не актуализира картината на елемента Image1 (изглежда, че някак си срещнах нещо подобно) Т.е. само когато цикълът приключи, Excel си спомня да преначертае картината в Image1. Не знам как да се справя с това. Честно казано, изобщо не разбирам какъв е смисълът от промяна на картината в цикъла. Опитвате ли се да пуснете филм по този начин? )

ПС: Какво общо има въпросът ти с темата на статията?

Здравейте, Исках картината да се промени в цикъла, но се оказа, че само в края на цикъла картината показва последния път и не се променя по време на цикъла

x = 0 Докато x "" Тогава Sheet7.Image1.Picture = LoadPicture(p) Else: Sheet7.Image1.Picture = LoadPicture(p2) End If

Sheet7.Cells(5 + x, 1).Value = Dir(p, vbDirectory) x = x + 1 Application.Wait Now() + TimeValue("00:00:01") Wend

Проверката как е поставена снимката едва ли ще успее. Вмъкнати от макрос и добавени ръчно, снимките не могат да бъдат по-различни.

Много е лесно да проверите дали файлът съществува, ако е известен пълният път до файла с изображението:if Dir("пълен път дофайл")<>"" след това msgbox "Файлът съществува"

Честно казано, не разбрах как са свързани тези 2 въпроса.

Моля, кажете ми, възможно ли е да се провери дали картината е вмъкната чрез метода ActiveSheet.Pictures.Insert или не? Може би е по-лесно да проверите дали файлът със снимка съществува, преди да го поставите? Методът също ми е непознат. Просветете моля.

Благодаря ви много админ за помощта. Но все пак имам малък въпрос: Имам следния код (вижте по-долу), който взема стойността на пътя до изображението от клетка D3 (пътят до изображението се задава от външна програма) и вмъква изображението в клетка E3. При това, което се вмъква в левия горен ъгъл.

1) От тази статия не разбрах съвсем как да накарам клетката да вземе размера на картината в моя код, но така че картини, по-големи от 100 на 50 пиксела, да бъдат компресирани до този размер и едва след това клетката да може да вземе размера на картината.

2) Как мога да оптимизирам този код, така че макросът да определя кои клетки в колона D са запълнени (например от 3 до 15 или от 3 до 26) и да запълни колона E със снимки от 3 до 15 или от 3 до 26, съответно?

С ActiveSheet.Pictures.Insert([D3]) .Top = [E3].Top .Left = [E3].Left .Name = [E3] End With

Току-що ви изпратих проект на ТЗ за витрини и щандове. Към TOR прикачен файл "ID.Showcase. ". Той има динамично променящи се падащи списъци, променящо се изображение на витрина (направено в пълно съответствие с вашите препоръки), условно форматиране и съвети за "доказателство за грешки". Над оразмерителните линии трябва да поставите размерите от таблицата, но клетките под снимката не се виждат (картината не е прозрачна) и текстовото поле НЕ МОЖЕ да се постави НАД НЕГО. Защо? - Не разбирам. (В крайна сметка, ако действатечрез менюто Вмъкване/Картина можете да поставите текстовото поле върху картината).

Забележка: В Showcase ID падащите списъци и условното форматиране се управляват от скрит лист.

Що се отнася до размера на файла - проблемът може лесно да бъде решен чрез обработка на всичките ви снимки със специална програма (която ще обработва всички изображения в пакетен режим, намалявайки теглото на снимките до 20-80kB - просто намалете размера на снимките или дълбочината на цвета)

Показване на текст на Excel лист в текстово поле - защо, когато има клетки за това? Но ако наистина имате нужда от текстово поле, не е проблем да го направите. Пробвах - текстовото поле беше начертано върху картината без никакви проблеми:

картини

PS: Има форуми на Excel за такива въпроси На този сайт обикновено помагам не безплатно)

Действах, както е посочено в Отговор №26. Файлът ми стана 10 пъти по-дебел (от 506KB на 61000KB). Не трябва да е така. Забележка: Изображението, вмъкнато в Image2, е 3900KB.

Наистина „всичко гениално е просто“. Благодаря ви. Жалко, но няма накъде, ще се изчервя още. Възникна друг проблем: Исках да сложа променящи се надписи - общи размери (текстово поле) върху Image1 (променящи се изображения на витрина в зависимост от избраното в падащия списък), като ги свързвам със стойностите в клетките. Не е възможно обаче да поставите тези текстови полета върху Imege1. От менюто под десния бутон на мишката не може да се изпълни нито „Изпращане отпред“, нито „Изпращане отзад“. Какво трябва да направя?

Програмирането, разбира се, е творческа дейност, но не до такава степен, че да измисляте произволни имена на вградените процедури и да се надявате, че всичко работи.

Когато променяте клетки на лист, манипулаторът Worksheet_Change ще работи и този, който сте измислилиWorksheet_Ch няма да работи при никакви обстоятелства.

Заменете тези 2 манипулатора на събития с един:

Благодаря отново! Макросът и процедурата работят страхотно! Но. По аналогия исках да закрепя променящите се снимки към друг падащ списък и прекъснах. Не разбирам защо. Кажете ми - къде е грешката?

Sub UpdatePictureShowcase() При грешка Възобновяване Следващ Задайте [Image1].Object.Picture = Нищо Задайте [Image1].Object.Picture = LoadPicture([Showcase_Picture_Storage]) End Sub

Sub UpdateRackPicture() При грешка Възобновяване Следващ Задаване [Image2].Object.Picture = Нищо Задаване [Image2].Object.Picture = LoadPicture([Rack_Picture_Storage Location]) End Sub

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [AE22:AE23]) Is Nothing Then UpdateImageShowcase End Sub

Private Sub Worksheet_Ch(ByVal Target As Range) If Not Intersect(Target, [AE26:AE26]) Is Nothing Then UpdatePictureRacks End Sub

Макросът „Актуализиране на изображение на стелажи“ работи, но процедурата, свързана с промяната в клетка AE26, не стартира. Защо?

СУПЕРРР! Много ви благодаря! Кажете ми, къде мога да науча VBA за Excel в Санкт Петербург?