Изначально возможность копирования картинки из примечания появилась в надстройке MulTEx - Копирование картинки из примечания. Но впоследствии я стал все чаще встречать на форумах просьбы выложить подобный код. Поэтому решил поделиться таким кодом в этой статье, т.к. возможно это поможет кому-то в решении подобной проблемы. О каких картинках вообще речь. После создания стандартного примечания(вкладка Рецензирование -Создать примечание) ему можно назначить отдельный фон, в том числе в виде картинки:

  • правая кнопка мыши на ячейке с примечанием -Изменить примечание, навести курсор мыши на границу примечания (чтобы курсор принял вид крестика с разнонаправленными стрелочками на концах) -правая кнопка мыши -Формат примечания:
    Формат примечания
  • На вкладке Цвета и линии раскрыть список цвет и выбрать Способы заливки:
    Способы заливки
  • в появившемся окне перейти на вкладку Рисунок и нажать кнопку Рисунок:
    Вставить рисунок
  • Выбрать нужную картинку и нажать Ок

Код ниже как раз "вытаскивает" назначенные примечаниям таким образом картинки. Для чего это вообще может понадобиться? Часто таким образом назначают изображения товара в ячейках с названием или артикулом товара. Однако извлекать потом изображения из примечаний куда сложнее, чем их туда затащить. А код ниже сделает это буквально за несколько секунд.
Для того, чтобы получить картинку, "зашитую" в примечание в качестве фона, необходимо выделить одну или несколько ячейки запустить приведенный далее код. После работы кода в ячейке, расположенной правее ячейки с примечанием, будет картинка из этого примечания. Выделять можно так же и ячейки, в которых нет примечаний, если они вдруг идут не подряд. В таком случае картинки будут скопированы только из ячеек с примечаниями, ошибок это не вызовет.

Sub Copy_Picture_From_comment()
    If TypeName(Selection) <> "Range" Then MsgBox "Выделенная область не является диапазоном!", vbCritical, "Ошибка": Exit Sub
    Dim rRange As Range, rCell As Range, oComment As Comment
    Dim bVisible As Boolean
 
    On Error Resume Next
    Set rRange = Selection.SpecialCells(xlCellTypeComments)
    If rRange Is Nothing Then Exit Sub
    Application.ScreenUpdating = 0
 
    For Each rCell In rRange
        Set oComment = rCell.Comment
        If Not oComment Is Nothing Then
            bVisible = oComment.Visible
            With rCell
                .Comment.Visible = True
                .Comment.Shape.CopyPicture xlScreen, xlBitmap
                .Offset(, 1).PasteSpecial
                .Comment.Visible = bVisible
            End With
        End If
    Next rCell
    Application.ScreenUpdating = 1
    Set rRange = Nothing: Set rCell = Nothing: Set oComment = Nothing
End Sub

Код необходимо поместить в стандартный модуль. Выполнить же код можно нажав сочетание клавиш Alt+F8 и выбрав Copy_Picture_From_comment.
Если вдруг данные картинки надо сохранить не на лист Excel, а на диск, то можно сначала применить код выше, а затем код, выложенный в этой статье для сохранения на диск. Ну а тем, кто хоть немного разбирается в кодах, не составит труда при необходимости совместить коды из этих двух статей в один.

Скачать пример:

  Tips_Macro_Copy_Picture_from_Comments.xls (52,0 КиБ, 3 013 скачиваний)

Также см.:
Копирование картинки из примечания
Как сохранить картинки из листа Excel в картинки JPG

Loading

4 комментария

  1. Вы файл скачали? если да - то надо лишь выделить ячейки с примечаниями и нажать на кнопку. Если ничего не происходит - читайте эту статью: http://www.excel-vba.ru/chto-umeet-excel/pochemu-ne-rabotaet-makros/

    Если проблема другого рода - то опишите, как и откуда Вы код пытаетесь запустить.

  2. Добрый день. Сразу прошу прощение за, возможно пересекающийся вопрос, не один день сижу. Но это не оправдывает меня, как дилетанта в этой области.
    Может есть ссылка на тему. где четко и простым языком объяснено — что за чем делать, что бы скопировать картинки из EXEL с названием артикула слева (или справа ) находящихся от них в колонке? Пока меня интересует только этот вопрос. Пробную версию установил. она работает.
    Код в ЭтаКнига вставлял и сохранился результат в с/ temp — По пути ни чего не нашел.
    Голова уже кругом, что. да где ставить. Буду очень признателен. если кто-нибудь запишет видео урок по моему вопросу. Спасибо автору за столь важную инфо.
    Первый раз прочитал, что у людей есть такая возможность и получается. Но сам понимаю. что не справлюсь.
    Смог воспользоваться только примитивным способом пересохранения файла в Веб-страницу. А как с помощью представленной программы и кодов сохранить фото из ячеек EXEL в Папку с фото под номером артикула соответствующего оной — :( не могу понять. Заранее спасибо за помощь. Всех Благ.

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.