Excel определить картинку в ячейке

 

ДЛД

Пользователь

Сообщений: 23
Регистрация: 13.09.2016

Добрый день! В ячейке xls есть рисунок. Как через vba узнать его Item чтобы потом обратиться к нему через Index, например ActiveSheet.Shapes(4)?.

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#2

09.05.2018 10:50:49

Цитата
ДЛД написал:
В ячейке xls есть рисунок

Не верное утверждение. В отличии от Word, в ячейке не размещаются рисунки. Они лежат поверх неё. Следовательно это у рисунка нужно спрашивать — над какой ячейкой он лежит. BottomRightCell и TopLeftCell в помощь.

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

Андрей VG, Андрей, приветвую, с Праздником. Опередили чуток.

ДЛД, по сути Вам придется сперва перебрать все объекты и проверить на то, что они находятся в области целевой ячейки, и если да, то получить , ID, имя …  и тогда с ним работать.

По вопросам из тем форума, личку не читаю.

 

ДЛД

Пользователь

Сообщений: 23
Регистрация: 13.09.2016

Андрей VG

, скажите чтобы узнать Item рисунка «лежащего над ячейкой» — правильным ли будет алгоритм:
— узнать Count рисунков на листе
— для КАЖДОГО рисунка проверить на совпадение TopLeftCell с адресом ячейки, примерно
If Cells(i, «B»).Address = ActiveSheet.Pictures(1).TopLeftCell.Address Then
— если совпало — это и будет нужный Item ?

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#5

09.05.2018 11:18:17

В принципе, видится такой алгоритм.
У Worksheet есть скрытая коллекция Pictures
Циклом For Each nextPict пробегаемся по этой коллекции и записываем в словарь адрес TopLeftCell и BottomRightCell ячеек как ключ словаря, а как значение nextPict.Index
Тогда уже в цикле по ячейкам просто проверяем, есть адрес очередной ячейки в словаре, если есть, то берём индекс рисунка в коллекции Pictures
Как то так. Тут смысл задачи нужен, чтобы понять — можно ли что-то упростить и ускорить.

Цитата
БМВ написал:
Опередили чуток.

Привет, Михаил.
Всех с Днём Победы, мирного неба!

 

ДЛД

Пользователь

Сообщений: 23
Регистрация: 13.09.2016

Андрей VG

, «смысл задачи» такой. На листе (только в одном столбце «B») в ячейках есть текст и рисунки, но имеются также пустые ячейки в этом столбце. Циклом For удаляются пустые строки, но только те, над которыми не «лежат» рисунки. Через Item я хотел узнать «габариты» рисунка (BottomRightCell.Row) чтобы под ним не удалять строки

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

Ну, тогда можно чуть по другому.
Формируете целочисленный массив с числом элементов равный числу строк в UsedRange. Удобнее всего индексацию в массиве сделать по номеру первой последней строки в UsedRange.
По умолчанию элементы массива будут равны 0.
Пробегаете по коллекции Worksheet.Pictures (так как у вас рисунки лежат строго над одной ячейкой, то из nextPict.TopLeftCell.Row получаете индекс строки ячейке в том массиве записываете 1.
После пробега по коллекции в массиве будут отмечены строки, содержащие рисунки. Начинаете удалять строки, индексы которых в массиве дают элементы, содержащие 0.
Как-то так.

 

ДЛД

Пользователь

Сообщений: 23
Регистрация: 13.09.2016

Андрей VG

, спасибо. Буду пытаться.

 

ДЛД

Пользователь

Сообщений: 23
Регистрация: 13.09.2016

Поставленную задачу (не ту что в заголовке) можно решить так: сначала удалить ВСЕ строки с пустыми ячейками в столбце «B», а потом добавить строки ТОЛЬКО «под» рисунками.

 

ДЛД

Пользователь

Сообщений: 23
Регистрация: 13.09.2016

Почему-то не загрузился файл
Sub Insert_Row()
Dim pCount%, i%, s&, t&
pCount = ActiveSheet.Pictures.Count
For i = pCount To 1 Step -1
   s = ActiveSheet.Shapes(i).TopLeftCell.Row
   t = ActiveSheet.Shapes(i).BottomRightCell.Row
   Rows(s & «:» & t).Insert
    ActiveSheet.Shapes(i).Cut
    ActiveSheet.Range(«B» & s).PasteSpecial
Next
Range(«A1»).Select
End Sub

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#11

10.05.2018 22:54:25

Цитата
ДЛД написал: Почему-то не загрузился файл

Размер какой?

Код в сообщении нужно оформлять с посмощью кнопки <…>. Попробуйте, не кусается.

0 / 0 / 0

Регистрация: 22.11.2011

Сообщений: 18

1

01.05.2012, 18:39. Показов 15828. Ответов 5


Студворк — интернет-сервис помощи студентам

Проблема такая. Программа (макрос) в EXCEL генерирует несколько документов, в которые автоматически вставляет подпись (ФИО выбирается в форме, в зависимости от этого на листе с образцами подписей в виде рисунков .GIF выбирается нужная подпись и вставляется в документ). Рисунок на листе с образцами меньше размера ячейки, поэтому получается делать так: в буфер просто копируется выбранная по Select ячейка, а затем выбирается на нужном листе нужная ячейка и делается ActiveSheet.Paste. Образцы подписей есть не для всех ФИО в списке, если ячейка не содержит образец подписи — так и не вставляется ничего, ошибка не генерируется.
Но: После вставки рисунок желательно обработать (слегка сместить, повернуть и т.д.), но нужно знать — есть ли он? Как это узнать? Функция IsEmpty ответа не дает (рисунок расположен в отдельном слое). Нужно обратиться к рисунку по его имени (Рисунок1 и т.д.), но непонятно — есть ли он?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

01.05.2012, 18:39

5

Watcher_1

356 / 162 / 27

Регистрация: 21.06.2011

Сообщений: 350

01.05.2012, 21:16

2

Наличие рисунка можно определить так

Visual Basic
1
if ActiveSheet.Pictures.Count>0 then Msgbox "Рисунок(ки) есть на листе" else Msgbox "Рисунок(ки) нет на листе



0



SlavaRus

1121 / 229 / 36

Регистрация: 15.03.2010

Сообщений: 698

02.05.2012, 09:25

3

Наверное самое простое в момент загрузки рисунка ячейке присвоить булево значение. True рисунок есть, False нет.
Как вариант можно пробежать по всем картинкам и проверить есть ли в нужной ячейке картинка.
Это может занять приличное время если много картинок.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Function TestPictCell(Cell As Range) As Boolean
Dim TmpShape As Shape
 
TestPictCell = False
    
    For Each TmpShape In Cell.Worksheet.Shapes
        If TmpShape.Type = msoPicture Then  ' Это картинка?
            If Cell.Address = TmpShape.TopLeftCell.Address Then TestPictCell = True 'адреса равны?
        End If
    Next
End Function



1



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

02.05.2012, 11:19

4

Цитата
Сообщение от BMF
Посмотреть сообщение

После вставки рисунок желательно обработать (слегка сместить, повернуть и т.д.), но нужно знать — есть ли он?

Обрабатывайте, как будто рисунок есть, но включите обработку ошибок (On Error …).



0



0 / 0 / 0

Регистрация: 22.11.2011

Сообщений: 18

06.05.2012, 18:20

 [ТС]

5

Всем большое спасибо!
1 совет( от Watcher) не очеь подходит. И так понятно, что рисунки на листе есть, вопрос- где они (в какой ячейке).
3-й совет (от Казанского) да, после вставки приходится так и делать.
Наиболее подходящий 2-й совет с определением адреса каждого рисунка. Но остались непонятки (я еще не очень в этом разбираюсь…):
Конструкция Cell.Worksheet.Shapes — это означает, что у объекта типа Range есть такой метод?
И вообще, в приведенном примере фунции если я передам ей как аргумент область Range (непример, одну ячейку), поиск рисунков будет вестись только в ней, а не во всем листе?



0



1121 / 229 / 36

Регистрация: 15.03.2010

Сообщений: 698

07.05.2012, 11:08

6

Конструкция Cell.Worksheet.Shapes — это означает, что у объекта типа Range есть такой метод?

Такого метода у Range нет. Объекты Shape лежат на листе, Cell.Worksheet — обращение к листу на котором находится ячейка и соответственно Shapes. В противном случае будет искать в рисунках на активном листе, а ячейка Cell может быть на другом листе.

И вообще, в приведенном примере фунции если я передам ей как аргумент область Range (непример, одну ячейку), поиск рисунков будет вестись только в ней, а не во всем листе?

Функция пробегает по всем объектам Shapes на листе и если это рисунок сравнивает адрес ячейки Cell в параметре фукции с адресом левого верхнего угла рисунка т.к.

Рисунок на листе с образцами меньше размера ячейки…

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



1



Excel’s lookup functions recently welcomed the addition of XLOOKUP and XMATCH. However, neither these new functions or the existing ones don’t support image lookup. In this guide, we’re going to show you how to make image lookup in Excel.

Download Workbook

Preparing the images

First, we need to place the images into corresponding cells. Make sure that each image is completely inside their cells — there shouldn’t be any overflow. Otherwise, you can only display the part of the image that fits inside of the cell area.

How to make image lookup in Excel 01

Setting up a user interface for image lookup

At this point, we are ready to build an interface for image lookup. In our example, we are going to update an image, based on a value from a dropdown selection.

To make the formulas and references easier to read we will using the names in the table, which were also used to generate named ranges.

  1. Select the cell containing the dropdown
  2. Activate the Data tab in the Ribbon
  3. Click on the Data Validation icon
  4. In the Data Validation dialog, set Allow to List
  5. Select the names in the table under Source
  6. Click OK

The dynamic image

This is the last and the most important step for doing image lookups in Excel. Although the lookup formulas do not support images, some of them can actually support this when the formula is used within an image.

Unfortunately, you can not simply click on an image and type in a formula. However, you can refer a named range, and that named range can contain a formula.

Start by opening the New Name dialog under Formulas > Defined Names.

Give a friendly name to the input, and move onto to the Refers to section to enter the lookup formula. You can use either XLOOKUP or INDEX-MATCH formulas. If your version of Excel doesn’t have support for these formulas, use the INDEX-MATCH combination instead — VLOOKUP won’t work with this method.

Choose one of the following based on your data:

=XLOOKUP(X!$C$2,Data!$B$3:$B$6,Data!$C$3:$C$6)=INDEX(Data!$C$3:$C$6,MATCH(IM!$C$2,Data!$B$3:$B$6,0))

How to make image lookup in Excel 03

Place an image where you want to display your dynamic content. The most important thing here is the size of the image: It needs to fit in the cell.

After placing the image, click on the image and activate the formula bar. Enter the name you created for the lookup formula.

Now, every time the Name dropdown is updated, the image will be updated as well. Excel simply returns an image of the cell into the image object.

На чтение 5 мин Опубликовано 07.01.2021

При составлении таблиц в Excel часто требуется поставить картинку в ту или иную ячейку. Существует несколько распространенных методов выполнения поставленной задачи. Основные из них будут рассмотрены в данной статье.

Содержание

  1. Особенности прикрепления изображений
  2. Как вставить картинку в Excel
  3. Как отредактировать рисунок
  4. Как прикрепляется картинка к ячейке
  5. Защита листа
  6. Установка рисунка в примечании
  7. Заключение

Особенности прикрепления изображений

Перед тем как размещать фото в Excеl, важно изучить несколько особенностей процедуры:

  1. Изображение, которое пользователь хочет вставить, должно размещаться на жестком диске или на съемном носителе, который подсоединен к PC.
  2. Рисунок, вставляемый в Эксель, сразу не привяжется к определенной ячейке, а будет располагаться на рабочем листе.
  3. Некоторые фотографии могут потерять в качестве после размещения в табличке.

Как вставить картинку в Excel

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

  1. Определиться с изображением и разместить его в любом месте своего ПК.
  2. Открыть MicrosoftOfficeExcel.
  3. Кликнуть ЛКМ по элементу, в котором надо разместить картинку.
  4. Перейти в раздел «Вставка» и щелкнуть по слову «Рисунок».

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

1
  1. Указывать путь к расположению картинки на компьютере, выбрав соответствующий раздел диска в открывшемся окне, а затем нажать на кнопку «Вставить».

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

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

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

3

Обратите внимание! На этом этапе рисунок еще не будет прикреплен к определенному элементу табличного массива.

Как отредактировать рисунок

Теперь необходимо отредактировать фото, вставленное в Excel, привести его к «надлежащему» виду. Действовать нужно так:

  1. Кликнуть ПКМ по любому месту, вставленной ранее картинки и в меню контекстного типа нажать по строке «Размер и свойства».
  2. В отобразившемся окошке возможно поменять параметры изображения, обрезать его, наложить различные эффекты и т.д. Здесь пользователь выполняет действия по личному усмотрению.

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

4
  1. Закрывать окошко «Размер и свойства» и кликнуть по надписи «Работа с рисунками» в верхней панели инструментов программы.
  2. Теперь важно уменьшать параметры картинки так, чтобы она разместилась в выбранной ячейке табличного массива. Для этой цели границы фотографии можно сдвинуть ЛКМ.

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

5

Как прикрепляется картинка к ячейке

После уменьшения размеров изображение все еще не будет прикреплено к элементу табличного массива. Для закрепления рисунка придется сделать ряд дополнительных манипуляций. Далее будут рассмотрены самые распространенные способы прикрепления фото к ячейке в Microsoft Office Excel.

Важно! Каждый способ актуален для любой версии программы.

Защита листа

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

  1. Передвинуть отредактированное фото в табличный элемент с помощью ЛКМ.

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

6
  1. Кликнуть ПКМ по фото и нажать по строчке «Размер и свойства».
  2. В меню «Размер» проверить выставленные параметры. Их значения не должны превышать размеров ячейки. Также надо поставить галочки напротив строк «Сохранить пропорции» и «Относительно исходного размера».

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

7
  1. Войти во вкладку «Свойства». Здесь необходимо поставить тумблер рядом со строкой «Перемещать и изменять объект вместе с ячейками». Напротив параметров «Защищаемый объект» и «Выводить объект на печать» надо также поставить галочки.

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

8
  1. Закрыть окно, выделить рабочее пространство целиком сочетанием кнопок «Ctrl+A» и перейти в раздел «Формат ячеек», нажав по любому месту листа ПКМ.

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

9
  1. В новом окошке в разделе «Защита» снять галку с пунктика «Защищаемая ячейка», затем выделить ячейку с размещенной картинкой и опять поставить эту галочку.

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

10

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

Установка рисунка в примечании

Картинка, размещенная в примечании Excel, автоматически будет закреплена в ячейке. Способ реализуется следующим образом:

  1. Щелкнуть ПКМ по нужному объекту и в меню указывать на вариант «Вставить примечание».
  2. В окне записи примечания еще раз нажать ПКМ и указать на строчку «Формат примечания».

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

11
  1. В появившемся окошке перейти в раздел «Цвета и линии», затем развернуть вкладку «Цвет» и нажать по кнопке «Способы заливки».

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

12
  1. Откроется еще одно окно, в котором надо кликнуть по последней вкладке в списке инструментов сверху и щелкнуть по слову «Рисунок».

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

13
  1. Указать путь к расположению рисунка на ПК и нажать по слову «Вставить».

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

14
  1. Теперь фото добавится в окошко «Способы заливки». Пользователю останется поставить галочку рядом с пунктом «Сохранять пропорции рисунка» и нажать «ОК».

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

15
  1. Вернуться в окно «Формат примечания» и в разделе «Защита» снять галочку со строчки «Примечаемый объект».

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

16
  1. В этом же окне переместиться во вкладку «Свойства» и поставить тумблер в поле «Перемещать и изменять объект вместе с ячейками», после чего кликнуть «ОК».

kak-privyazat-kartinku-k-yachejke-v-tablice-excel

17

Обратите внимание! Рассмотренный метод привязывает картинку к примечанию конкретной ячейки, но накладывает ряд ограничений на элемент табличного массива.

Заключение

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

Оцените качество статьи. Нам важно ваше мнение:

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

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


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

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

1. Откройте рабочий лист, в котором необходимо проверить, существует ли изображение в указанной ячейке, затем нажмите кнопку другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем скопируйте и вставьте код VBA в окно кода.

Код VBA: проверьте, содержит ли ячейка изображение в Excel

Sub CellHasPicture()
    Dim xRg As Range
    Dim xShape As Shape
    Dim xFlag As Boolean
    On Error Resume Next
    Set xRg = Application.InputBox("Please enter the cell address:", "KuTools For Excel", Selection.Address, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    xFlag = False
    For Each xShape In ActiveSheet.Shapes
        If xShape.TopLeftCell.Address = xRg.Address Then
            xFlag = True
        End If
    Next
    If xFlag Then
        MsgBox "Image exists!"
    Else
        MsgBox "Image does not exist"
    End If
End Sub

3. Press the F5 key to run the code. In the popping up Kutools for Excel dialog box, please enter the cell which you want to check if it contains a picture, and then click the OK button. See screenshot:

4. Then a dialog box will pop up as below screenshot shown if a picture exists or not in the specified cell.


Related Articles:

  • How to automatically change all pictures to move and size with cells in Excel?
  • How to center a picture in an Excel cell?
  • How to insert image or picture dynamically in cell based on cell value in Excel?
  • How to enlarge image when click on it in Excel?

The Best Office Productivity Tools

Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%

  • Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails…
  • Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range
  • Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns… Prevent Duplicate Cells; Compare Ranges
  • Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select…
  • Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more…
  • Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments
  • Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic…
  • Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF
  • More than 300 powerful features. Supports Office / Excel 2007-2021 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial. 60-day money back guarantee.

kte tab 201905

Read More… Free Download… Purchase… 


Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier

  • Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
  • Open and create multiple documents in new tabs of the same window, rather than in new windows.
  • Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!

officetab bottom

Read More… Free Download… Purchase… 

Comments (0)


No ratings yet. Be the first to rate!

Like this post? Please share to your friends:
  • Excel определить значение по диапазону значений
  • Excel определить женщина или мужчина
  • Excel определить если ошибка
  • Excel определить длину текста в ячейке excel
  • Excel определить диапазон ячеек с определенным значением