Vba excel вставить картинку в ячейку

Обновлено: 04.07.2024

Я добавляю файлы ".jpg" в свой лист Excel с помощью следующего кода:

Я не знаю, что делаю неправильно, но он не вставляется в нужную ячейку, так что мне делать, чтобы поместить это изображение в указанную ячейку в Excel?

Лучше ничего не выделять в Excel, обычно в этом нет необходимости и это замедляет ваш код.

Во-первых, я рекомендую, чтобы изображения находились в той же папке, что и книга. Вам необходимо ввести некоторые коды в процедуру Worksheet_Change рабочего листа. Например, мы можем ввести следующие коды, чтобы добавить изображение с тем же именем, что и значение ячейки в столбце A, в ячейку в столбце D:

С помощью приведенных выше кодов размер изображения изменяется в соответствии с ячейкой, в которую оно добавлено.

Подробная информация и образец файла здесь: Vba Вставить изображение в ячейку

Я тестировал как решение @SWa, так и @Teamothy. Я не нашел метода Pictures.Insert в документации Microsoft и опасался некоторых проблем с совместимостью. Так что я полагаю, что старый метод Shapes.AddPicture должен работать во всех версиях. Но это медленно!

Я работал над системой, работающей на ПК и Mac, и пытался найти код, который работал бы для вставки изображений как на ПК, так и на Mac. Это сработало для меня, поэтому, надеюсь, кто-то еще сможет им воспользоваться!

Примечание. Для переменных strPictureFilePath и strPictureFileName необходимо указать допустимые пути для ПК и Mac. Например,

Для ПК: strPictureFilePath = "E: \ Dropbox \" и strPictureFileName = "TestImage.jpg", а для Mac: strPictureFilePath = "Macintosh HD: Dropbox:" и strPictureFileName = "TestImage.jpg"

Код, как следует:

Если речь идет просто о вставке и изменении размера изображения, попробуйте приведенный ниже код.

Для конкретного вопроса, который вы задали, свойство TopLeftCell возвращает объект диапазона, связанный с ячейкой, в которой припаркован верхний левый угол. Чтобы разместить новое изображение в определенном месте, я рекомендую создать изображение в «правом» месте и зарегистрировать его верхнее и левое значения свойств фиктивного элемента в переменных типа double.

Вставьте свой Pic, назначенный переменной, чтобы легко изменить ее имя. Объект формы будет иметь то же имя, что и объект изображения.

Глядя на опубликованные ответы, я думаю, что этот код также будет для кого-то альтернативой. Никто выше не использовал .Shapes.AddPicture в своем коде, только .Pictures.Insert()

Я работаю в Excel 2013. Также понял, что Вам нужно заполнить все параметры в .AddPicture из-за ошибки «Аргумент не является необязательным». Глядя на это, вы можете спросить, почему я установил Height и Width как -1, но это не имеет значения, потому что эти параметры установлены ниже между скобками With .

Одним из революционных нововведений в крайней версии Microsoft Excel 2010 стали инфокривые sparklines - миниграфики, помещающиеся внутри ячеек и наглядно отображающие динамику числовых данных:

Чтобы создать подобные миниграфики, нужно выделить ячейки, куда мы хотим их поместить и воспользоваться кнопками группы Спарклайны (Sparklines) с вкладки Вставка (Insert) :

В открывшемся диалоговом окне нужно задать диапазон исходных данных и диапазон вывода:

Созданные миниграфики можно всячески форматировать и настраивать с помощью динамической вкладки Конструктор (Design) :

В частности, можно легко поменять цвет линий и столбцов спарклайна и выделить особыми цветами минимальные и максимальные значения:

Поскольку спарклайн не является отдельным графическим объектом, а выступает, по сути, в роли фона ячейки, то он нисколько не помешает ввести в ячейку текст, числа или другую информацию. Это открывает простор для фантазии - если немного пошаманить с выравниванием введенного текста, шириной и высотой ячейки, то можно достичь интересных результатов:

Что делать, если у вас пока старая версия Excel? Или нужен тип графика, которого нет в наборе спарклайнов? Переходим к следующим способам!

Способ 2. Дополнительные надстройки для микрографиков

На самом деле, идея подобных графиков витала в воздухе уже достаточно давно. Еще для 2003 версии Excel существовало несколько надстроек с подобным функционалом, самым известными из которых были замечательная бесплатная Sparklines Эдварда Тафта и и платные BonaVista microcharts (169$) и Bissantz SparkMaker (200$). Да и я в свое время тоже пытался сделать что-то подобное в надстройке PLEX.

Если брать в качестве примера бесплатную надстройку Sparklines, то после ее подключения мы получим новую вкладку (или панель инструментов) примерно такого вида:

2010-sparklines-addin.jpg

Как легко заметить, эта надстройка умеет строить заметно больше трех типов диаграмм :)

Единственный минус - надстройку нужно будет установить на всех компьютерах, где вы планируете работать с файлом, содержащим такие диаграммы.

Способ 3. Повтор символов N-раз

"Бюджетным вариантом" одномерных микрографиков являются повторяющиеся однотипные символы, имитирующие линейчатую диаграмму. Для этого можно воспользоваться текстовой функцией ПОВТОР (REPT) , которая умеет выводить в ячейку любой заданный символ нужное количество раз. Для вывода нестандартных символов (зная их код) можно использовать функцию СИМВОЛ (CHAR) . В общем и целом это выглядит так:

Символ с кодом 103 - черный прямоугольник шрифта Webdings, поэтому не забудьте установить этот шрифт для ячеек C2:C12. Также можно поиграться с символами других шрифтов, например в столбце Е использован символ с кодом 110 из шрифта Wingdings.

Способ 4. Макросы

Способ представляет собой улучшенный предыдущий вариант, где набор повторяющихся символов (используется знак "|") создает не формула, а простая пользовательская функция на VBA. Причем для каждой ячейки создается отдельный столбец, т.к. функция использует символ переноса строки после каждого числа - выглядит это примерно так:

Чтобы использовать этот трюк у себя в файле, открываем редактор VBA (Alt+F11), добавляем новый модуль в книгу (меню Insert - Module) и копируем туда код функции NanoChart:

Затем вставляем функцию NanoChart в нужные ячейки, указывая в качестве аргументов числовые данные, как на рисунке выше. Для получившихся ячеек с микрографиками необходимо включить перенос по словам и поворот на 90 градусов через меню Формат - Ячейки - Выравнивание (Format - Cells - Alignment) . Константа MaxSymbols задает длину максимально высокого столбца в минигистограмме.

Теперь в мастере функций в категории Определенные пользователем появилась новая функция LineChart c двумя аргументами - диапазоном и кодом цвета графика. Если ее вставить в пустую ячейку, например, справа от числовой строки и скопировать затем, как обычно, на весь столбец, то получим весьма симпатичное отображение числовых данных в виде миниграфиков:

При необходимости вы можете скопировать данные, диаграммы или объекты на лист диаграммы. Вы также можете вкопировать данные, скопированные из другой программы, и в качестве рисунка в Microsoft Office Excel.

Копирование данных в виде рисунка в Excel

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

На вкладке Главная в группе Буфер обмена щелкните стрелку рядом с кнопкой Копировать ивыберите Копировать как рисунок.


В диалоговом окне Копирование рисунка сделайте следующее:

В области Внешнийвид выберите нужный вариант.

В областиФормат выберите нужный параметр.

Для лучшего качества изображения убедитесь, что выбраны параметры Как на экране и Рисунок. Однако для сохранения качества рисунка элементы, скопируйте их с помощью параметров Как, показанных на экране и Рисунок, и всегда в сохраняются на 100 % от исходного размера. Например, при масштабе 75 %, скопированные с него объекты могут отображаться больше, так как они вкоплены в реальный размер.

Если вы выбрали диапазон ячеек, но не хотите, чтобы линии сетки отображались при вклеии, сначала перейдите к представлению > Показать > отобразить параметр Сетка.

Щелкните на этом или другом документе место в документе, куда вы хотите вировать рисунок.

На вкладке Главная в группе Буфер обмена нажмите кнопку Вироватьили нажмите CTRL+V.

При необходимости вы можете изменить это изображение. Дополнительные сведения см. в разделе Формат рисунков статьи Вставка рисунков.

Скопируйте данные из другой программы и в виде изображения в Excel

В другой программе, например Word, используйте команду Копировать для копирования данных, которые вы хотите вкопировать как рисунок в Excel.

В Excel щелкните в любом месте таблицы или диаграммы, куда вы хотите вкопировать скопированные данные в качестве рисунка.

На вкладке Главная в группе Буфер обмена щелкните стрелку под кнопкой В таблицу ивыберите специальную ветвь.

В диалоговом окне Специальная вставка выберите В виде рисунка или В виде ссылки в зависимости от того, как вы хотите вировать рисунок, а затем в поле Как выберите Рисунок (расширенный метафил) и нажмите кнопку ОК.

На вкладке Формат внести необходимые изменения.

При необходимости вы можете изменить это изображение. Дополнительные сведения см. в разделе Формат рисунков статьи Вставка рисунков.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Создает изображение из существующего файла. Возвращает объект Shape, который представляет новую картину.

Синтаксис

выражения. AddPicture (FileName, LinkToFile, SaveWithDocument, Left, Top, Width, Height)

выражение: переменная, представляющая объект Shapes.

Параметры

Имя Обязательный или необязательный Тип данных Описание
FileName Обязательный String Файл, из которого должно быть создано изображение.
LinkToFile Обязательный MsoTriState Файл для ссылки. Используйте msoFalse, чтобы сделать изображение независимой копией файла. Используйте msoTrue для привязки изображения к файлу, из которого он был создан.
SaveWithDocument Обязательный MsoTriState Сохранение изображения с помощью документа. Используйте msoFalse для хранения только сведений о ссылках в документе. Используйте msoTrue для сохранения связанной картинки с документом, в который она вставлена. Этот аргумент должен иметь значение msoTrue, если LinkToFile имеет значение msoFalse.
Left Обязательный Single Положение (в точках)верхнего левого угла изображения относительно верхнего левого угла документа.
Top Обязательный Single Положение (в точках) верхнего левого угла изображения относительно верхней части документа.
Width Обязательный Single Ширина изображения в точках (введите -1, чтобы сохранить ширину существующего файла).
Height Обязательный Single Высота изображения в точках (введите -1, чтобы сохранить высоту существующего файла).

Возвращаемое значение

Shape

Пример

В этом примере добавляется изображение, созданное из файла Music.bmp в myDocument. Вставленная картинка связана с файлом, из которого он был создан и сохранен с помощью myDocument.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Читайте также: