Vba Excel вставить изображение в ячейку

Обновлено: 21.11.2024

Можно перейти к файлу, получить изображение и вернуть это изображение в Excel при изменении ячейки. В этом руководстве вы узнаете, как вставить изображение в Excel с помощью события при изменении.

В этой статье объясняется, как автоматически вставить изображение с помощью Excel VBA. В Top 10 Dashboard вы можете увидеть, как вставить изображение без VBA. Картинки хранятся в файле Excel. Это не всегда возможно, возможно, у вас есть сотни изображений, которые вы хотите сохранить. Через некоторое время размер может стать проблемой в Excel. В следующей статье основное внимание будет уделено тому, как вы можете иметь список изображений в специальной папке, и когда вы вводите имя этого изображения в Excel, изображение появляется в электронной таблице. Это довольно крутой трюк Excel с VBA, и он может быть весьма полезен для отображения описательной информации. Мне потребовалось значительное время, чтобы решить эту проблему в первый раз, когда я попытался это сделать. По памяти кто-то разместил вопрос на Ozgrid, и я дал ответ. По памяти человек не мог видеть картинки, и я предполагаю, что это произойдет, когда вы откроете файл Excel в основании страницы. Потерпи. Изображения и диск должны быть точными, а имена изображений в вашем файле должны точно совпадать с именами в Excel. Я предлагаю вам создать список всех изображений, которые вы хотите включить, чтобы их имена точно совпадали с именами изображений в папке.

Я настроил эту процедуру таким образом, что при вводе значений в ячейки с A10 по A20 изображение будет удалено из столбца B, а новое изображение будет вставлено и изменено в размере.

Из приведенного выше видно, что у меня есть 3 изображения, на которые я ссылаюсь, точные названия этих изображений;

  • Ученый
  • Панель управления
  • Отчет

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

Новое изображение будет импортировано по мере ввода имени в столбце А. Вы можете создать свою собственную папку и иметь собственные имена изображений. Как я уже говорил ранее, когда вы открываете папку, вы не увидите вышеуказанные изображения, так как вы не можете получить доступ к моему диску C, но я обещаю вам, что если вы создадите точное имя диска с некоторыми случайными изображениями с тем же именем, они появятся в файл.

Отформатируйте изображение с помощью VBA

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

Ниже приведен код события изменения рабочего листа для запуска процедуры.

Private Sub Worksheet_Change(ByVal Target As Range) 'Процедура Excel VBA для включения изображений из папки.

Затемнить кольцо как диапазон

Установите rng = Application.Intersect(Range("A10:A20"), Target.Cells(1, 1))
Если rng ничего не значит, выйдите из подпрограммы
GetPicture rng

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

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

Скачать файл примера

Я рекомендую вам загрузить файл примера для этого поста. Затем вы сможете работать с примерами и увидеть решение в действии, а файл будет полезен для дальнейшего использования.


Скачать файл: 0042 VBA копировать вставить, переместить, удалить images.zip

Адаптация кода под ваши нужды

Маловероятно, что какой-либо из кодов будет точно соответствовать вашим требованиям. Каждый фрагмент кода использует переменные для хранения изображения, рабочего листа, диапазона или объекта. Изменяя эти переменные, код можно легко изменить и объединить с другими фрагментами кода в соответствии с вашими конкретными требованиями.

Вставить изображение на лист

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

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

Имена изображений

В приведенном ниже коде отображается имя последнего вставленного изображения.

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

Приведенный ниже код переименовывает существующее изображение.

Получить свойства изображения

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

Удалить изображение

Следующий код удалит изображение с именем Picture 1 из активного рабочего листа.

Сделать изображения невидимыми

Изображения можно сделать невидимыми. Они по-прежнему существуют и являются частью книги, но не видны пользователю.

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

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

Удалить изображение

Приведенный ниже код удалит изображение с определенным названием.

Подтвердить, является ли выбранный объект изображением

Приведенный ниже код проверяет, является ли конкретный объект изображением.

Связанные изображения

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

Параметры размещения и блокировки изображения

Поведением изображения можно управлять с помощью параметра размещения.

Поворот изображений

Следующий код поворачивает изображение на определенную величину

Следующий код поворачивает изображение на определенную величину.

Установить положение изображения в центре ячейки

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

Переворот изображения по горизонтали или вертикали

Отразить изображение по горизонтали:

Отразить изображение по вертикали:

Изменить размер изображения

Приведенный ниже код фиксирует соотношение сторон; поэтому изменение ширины или высоты сохранит пропорции изображения.

Если для соотношения сторон задано значение msoFalse, высота и ширина работают независимо.

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

Обрезка

Приведенный ниже код обрезает изображение в зависимости от расстояния от верхнего, левого, нижнего или правого края.

Изменение Z-порядка

Изображение можно перемещать вперед или назад в стеке объектов (так называемый Z-порядок).

Позиция Z-Order не может быть установлена ​​напрямую. Сначала отправьте изображение назад, затем переместите изображение вперед с помощью петли. Продолжайте цикл, пока изображение не достигнет правильной позиции Z-порядка.

Установите фоновое изображение

Фоновое изображение отображается за ячейками электронной таблицы.
Получите БЕСПЛАТНУЮ электронную книгу VBA с 30 наиболее полезными макросами Excel VBA.

Автоматизируйте Excel, чтобы сэкономить время и перестать выполнять работу, которую могла бы выполнять обученная обезьяна.

Не забывайте:

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

Вам нужна помощь в адаптации этого к вашим потребностям?

Я предполагаю, что примеры в этом посте не совсем соответствуют вашей ситуации. Мы все используем Excel по-разному, поэтому невозможно написать пост, который удовлетворит потребности всех. Потратив время на изучение методов и принципов, изложенных в этом посте (и в других местах на этом сайте), вы сможете адаптировать его к своим потребностям.

  1. Читайте другие блоги или смотрите видео на YouTube по той же теме. Вы получите гораздо больше пользы, найдя собственные решения.
  2. Спросите «Excel Ninja» в вашем офисе. Удивительно, какие вещи знают другие люди.
  3. Задайте вопрос на форуме, таком как Mr Excel, или в сообществе Microsoft Answers. Помните, что люди на этих форумах обычно отдают свое время бесплатно. Поэтому постарайтесь сформулировать свой вопрос, убедитесь, что он четкий и лаконичный. Перечислите все, что вы пробовали, и предоставьте скриншоты, сегменты кода и примеры книг.
  4. Используйте Excel Rescue, моего партнера-консультанта. Они помогают решить небольшие проблемы с Excel.

Что дальше?
Пока не уходите, в Excel Off The Grid есть чему поучиться. Ознакомьтесь с последними сообщениями:

Блог Excel, PowerPoint и MS Word, содержащий удобные и креативные фрагменты кода VBA. Эти коды макросов хорошо прокомментированы и полностью функциональны при копировании в модуль.

Что делает этот код VBA

Использование снимков экрана в поле для комментариев к ячейке — это небольшой изящный трюк, который мне нравится использовать для хранения документации (т. е. сообщения электронной почты, в котором указывается, почему я должен делать прогнозы определенным образом). Это позволяет не загромождать мои модели электронных таблиц, а также позволяет мне включать документацию о том, почему я мог изменить прогноз.

Этапы ручной вставки изображения в поле комментария к ячейке могут быть немного неприятными, поэтому я написал код VBA, чтобы автоматически делать это после выбора целевой ячейки. Наслаждайтесь!

Это решение позволит разместить изображение в поле комментария нужного размера с помощью команды "Масштаб" (ScaleWidth или ScaleHeight).

Затемнить PicturePath как строку
Затемнить CommentBox как комментарий

'[ВАРИАНТ 1] Явно указать путь к файлу изображения
'PicturePath = "C:\Users\chris\Desktop\Image1.jpg"

'[ВАРИАНТ 2] Выберите файл для добавления через диалоговое окно (PNG или JPG)
С помощью Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Title = "Выбрать изображение комментария "
.ButtonName = "Вставить изображение"
.Фильтры.Очистить
.Фильтры.Добавить "Изображения", "*.jpg; *.jpg"
.Показать

'Сохранить выбранный путь к файлу
При ошибке GoTo UserCancelled
PicturePath = .SelectedItems(1)
При ошибке GoTo 0
End With

'Удалить любой существующий комментарий
Application.ActiveCell.ClearComments

'Создать комментарий к новой ячейке
Set CommentBox = Application.ActiveCell.AddComment

'Удалить любой текст комментария по умолчанию
CommentBox.Text Text:=""

'Убедитесь, что комментарий скрыт (установите значение TRUE, если хотите, чтобы он отображался)
CommentBox.Visible = False

'ОБРАБОТЧИКИ ОШИБОК
UserCancelled:

Приведенный ниже код VBA блокирует соотношение сторон изображения и позволяет увеличить его размер на коэффициент с помощью переменной ScaleValue.

Затемнить PicturePath как строку
Затемнить CommentBox как комментарий
Затемнить ScaleValue как целое число


'Масштаб изображения комментария с коэффициентом.
ScaleValue = 4 '4x размер

'[ВАРИАНТ 1] Явно указать путь к файлу изображения
'PicturePath = "C:\Users\chris\Desktop\Image1.jpg"

'[ВАРИАНТ 2] Выберите файл для добавления через диалоговое окно (PNG или JPG)
С помощью Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Title = "Выбрать изображение комментария "
.ButtonName = "Вставить изображение"
.Фильтры.Очистить
.Фильтры.Добавить "Изображения", "*.jpg; *.jpg"
.Показать

'Сохранить выбранный путь к файлу
При ошибке GoTo UserCancelled
PicturePath = .SelectedItems(1)
При ошибке GoTo 0
End With

'Удалить любой существующий комментарий
Application.ActiveCell.ClearComments

'Создать комментарий к новой ячейке
Set CommentBox = Application.ActiveCell.AddComment

'Удалить любой текст комментария по умолчанию
CommentBox.Text Text:=""

'Убедитесь, что комментарий скрыт (установите значение TRUE, если хотите, чтобы он отображался)
CommentBox.Visible = False

'ОБРАБОТЧИКИ ОШИБОК
UserCancelled:

Как изменить это в соответствии со своими потребностями?

Возможно, это сообщение не дало вам точного ответа, который вы искали. У всех нас разные ситуации, и невозможно учесть каждую конкретную потребность, которая может возникнуть. Вот почему я хочу поделиться с вами: Мое руководство по быстрому решению ваших проблем! В этой статье я рассказываю о лучших стратегиях, которые я придумал за эти годы, чтобы получить быстрые ответы на сложные проблемы в Excel, PowerPoint, VBA, вы называете это!

Я настоятельно рекомендую вам ознакомиться с этим руководством, прежде чем просить меня или кого-либо еще в разделе комментариев решить вашу конкретную проблему. Я могу гарантировать, что в 9 случаях из 10 одна из моих стратегий даст вам ответы, которые вам нужны, быстрее, чем мне потребуется, чтобы вернуться к вам с возможным решением. Я изо всех сил стараюсь помочь всем, но иногда у меня нет времени ответить на все вопросы (кажется, часов в сутках никогда не бывает достаточно!).

Желаю вам удачи и надеюсь, что это руководство направит вас в правильном направлении!

Несколько дней назад я работал с набором данных, который включал список компаний в Excel вместе с их логотипами.

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

Я также хотел, чтобы логотипы отфильтровывались при фильтрации названий компаний.

Принятие желаемого за действительное? Не совсем.

Вы можете легко вставить изображение в ячейку Excel таким образом, что при перемещении, изменении размера и/или фильтрации ячейки изображение также перемещается/изменяется/фильтруется.

Ниже приведен пример, в котором логотипы некоторых популярных компаний вставлены в соседний столбец, и при фильтрации ячеек логотипы также фильтруются вместе с ячейками.

Это также может быть полезно, если вы работаете с товарами/артикулами и их изображениями.

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

В этом уроке я покажу вам, как:

  • Вставьте изображение в ячейку в Excel.
  • Заблокируйте изображение в ячейке, чтобы оно перемещалось, изменяло размер и фильтровалось вместе с ячейками.

Вставить изображение в ячейку в Excel

Вот шаги, чтобы вставить изображение в ячейку в Excel:

Если у вас есть несколько изображений, вы можете выбрать и вставить все изображения сразу (как показано на шаге 4).

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

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

Для этого необходимо выполнить дополнительные действия, как показано в разделе ниже.

Закрепить картинку с ячейкой в ​​Excel

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

Вот шаги, чтобы заблокировать изображение в ячейке:

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

Попробуйте сами. Загрузите файл примера
создания информационных панелей Excel.

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