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 по-разному, поэтому невозможно написать пост, который удовлетворит потребности всех. Потратив время на изучение методов и принципов, изложенных в этом посте (и в других местах на этом сайте), вы сможете адаптировать его к своим потребностям.
- Читайте другие блоги или смотрите видео на YouTube по той же теме. Вы получите гораздо больше пользы, найдя собственные решения.
- Спросите «Excel Ninja» в вашем офисе. Удивительно, какие вещи знают другие люди.
- Задайте вопрос на форуме, таком как Mr Excel, или в сообществе Microsoft Answers. Помните, что люди на этих форумах обычно отдают свое время бесплатно. Поэтому постарайтесь сформулировать свой вопрос, убедитесь, что он четкий и лаконичный. Перечислите все, что вы пробовали, и предоставьте скриншоты, сегменты кода и примеры книг.
- Используйте 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.
Читайте также: