Извлечение изображения из документа Microsoft Excel

Извлечение изображения из документа Microsoft Excel

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

Извлечение картинок

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

Способ 1: копирование

Но, прежде всего, давайте все-таки рассмотрим, как произвести извлечение изображения из файла методом копирования.

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

Можно также после выделения изображения перейти во вкладку «Главная». Там на ленте в блоке инструментов «Буфер обмена» щелкаем по пиктограмме «Копировать».

Существует и третий вариант, при котором после выделения нужно нажать на комбинацию клавиш Ctrl+C.
После этого запускаем любой редактор изображений. Можно, например, воспользоваться стандартной программой Paint, которая встроена в Windows. Производим вставку в эту программу любым из тех способов, которые в ней доступен. В большинстве вариантов можно воспользоваться универсальным способом и набрать комбинацию клавиш Ctrl+V. В Paint, кроме этого, можно нажать на кнопку «Вставить», расположенную на ленте в блоке инструментов «Буфер обмена».

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

    Способ 2: массовое извлечение изображений

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

      Открываем документ Excel, содержащий изображения. Переходим во вкладку «Файл».

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

    После этого действия запускается окно сохранения документа. Нам следует перейти в ту директорию на жестком диске, в которой желаем, чтобы разместилась папка с картинками. Поле «Имя файла» можно оставить без изменения, так как для наших целей это не важно. А вот в поле «Тип файла» следует выбрать значение «Веб-страница (*.htm; *.html)». После того, как вышеуказанные настройки произведены, щелкаем по кнопке «Сохранить».

    Возможно, при этом появится диалоговое окно, в котором будет сообщаться, что файл может иметь возможности, несовместимые с форматом «Веб-страница», и при конвертации они будут утеряны. Нам следует согласиться, нажав на кнопку «OK», так как единственной целью является извлечение картинок.

    После этого открываем Проводник Windows или любой другой файловый менеджер и переходим в директорию, в которой сохранили документ. В этой директории должна образоваться папка, которая содержит наименование документа. Именно в этой папке и содержатся изображения. Переходим в неё.

  • Как видим, картинки, которые были в документе Excel, представлены в этой папке в виде отдельных файлов. Теперь с ними можно выполнять те же манипуляции, что и с обычными изображениями.
  • Вытащить картинки из файла Excel не так уж сложно, как могло показаться на первый взгляд. Это можно сделать либо путем простого копирования изображения, либо путем сохранения документа, как веб-страницы, встроенными инструментами Эксель.

    Как сохранить картинки из листа Excel в картинки JPG

    Получили по почте файл-прайс с изображениями товара и эти картинки нужны в отдельной папки, а не на листе? Например для загрузки на сайт. Или для других целей. Подобной команды в Excel нет. Вставить картинки можно, а вот обратно к сожалению никак. Хорошо, если картинок штук 10, а если 100? А если таких книг много? И из всех надо сохранить картинки? Решил поделиться кодами, которые могут сохранять картинки из листа Excel в папку.
    Если не знаете как применять коды Visual Basic for Applications, то настоятельно рекомендую к прочтению эти статьи:
    Что такое макрос и где его искать?
    Что такое модуль? Какие бывают модули?
    Если хотите использовать один из нижеприведенных кодов, то следует создать стандартный модуль, скопировать нужные код и вставить его в этот модуль.

    Сохранение выделенной картинки в файл
    Все, что потребуется это выделить объект/картинку и выполнить нижеприведенный код:

    Sub Save_Sel_Object_As_Picture() Dim sName As String, oObj As Object, wsTmpSh As Worksheet If VarType(Selection) <> vbObject Then MsgBox «Выделенная область не является объектом!», vbCritical, «www.excel-vba.ru» Exit Sub End If Application.ScreenUpdating = False Application.DisplayAlerts = False Set oObj = Selection: oObj.Copy Set wsTmpSh = ThisWorkbook.Sheets.Add sName = ActiveWorkbook.FullName & «_» & ActiveSheet.Name & «_» & oObj.Name With wsTmpSh.ChartObjects.Add(0, 0, oObj.W .Parent.Delete End With wsTmpSh.Delete Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub

    Если необходимо сохранить не только картинки, но и другие объекты, то необходимо в коде в строке: If oObj.Type = 13 Then изменить цифру. В коде комментариями указано, какая цифра какой тип обозначает. Так же можно изменить и расширение итогового файла с «.gif» на «.jpg». Достаточно найти расширение gif в коде(в двух местах) и заменить их на jpg. Если ни один объект не выделен, то ничего не произойдет.

    Сохранение всех картинок из всех выбранных файлов Excel в папку

    Sub Save_Object_As_Picture() Dim avFiles, li As Long, oObj As Object, wsSh As Worksheet, wsTmpSh As Worksheet Dim sImagesPath As String, sBookName As String, sName As String Dim wbAct As Workbook Dim IsForEachWbFolder As Boolean avFiles = Application.GetOpenFilename(«Excel Files(*.xls*),*.xls*», , «Выбрать файлы», , True) If VarType(avFiles) = vbBoolean Then Exit Sub IsForEachWbFolder = (MsgBox(«Сохранять картинки каждой книги в отдельную папку?», vbQuestion + vbYesNo, «www.excel-vba.ru») = vbYes) If Not IsForEachWbFolder Then sImagesPath = Environ(«userprofile») & «desktopimages» ‘» If Dir(sImagesPath, 16) = «» Then MkDir sImagesPath End If End If On Error Resume Next Application.ScreenUpdating = False Application.DisplayAlerts = False Set wsTmpSh = ThisWorkbook.Sheets.Add For li = LBound(avFiles) To UBound(avFiles) Set wbAct = Workbooks.Open(avFiles(li), False) ‘создаем папку для сохранения картинок If IsForEachWbFolder Then sImagesPath = wbAct.Path & «» & wbAct.Name & «_images» If Dir(sImagesPath, 16) = «» Then MkDir sImagesPath End If End If sBookName = wbAct.Name For Each wsSh In Sheets For Each oObj In wsSh.Shapes If oObj.Type = 13 Then ’13 — картинки ‘1 — автофигуры ‘3 — диаграммы oObj.Copy sName = ActiveWorkbook.Name & «_» & wsSh.Name & «_» & oObj.Name With wsTmpSh.ChartObjects.Add(0, 0, oObj.W End Sub

    Код позволяет выбрать одну или несколько книг Excel и сохраняет все картинки со всех листов выбранных книг. При запуске кода предлагается выбрать файлы Excel, картинки из которых надо сохранить. После этого появится запрос: «Сохранять картинки каждой книги в отдельную папку?»

    • Да — для каждой книги будет создана своя папка images, в которую будут сохранены картинки с именами вида: ИмяКниги_ИмяЛиста_ИмяФигуры
    • Нет — на рабочем столе пользователя будет создана папка images, в которую будут сохранены картинки с именами вида: ИмяКниги_ИмяЛиста_ИмяФигуры

    Если необходимо сохранить не только картинки, но и другие объекты, то необходимо в коде в строке: If oObj.Type = 13 Then изменить цифру. В коде комментариями указано, какая цифра какой тип обозначает. Так же можно изменить и расширение итогового файла с «.jpg» на «.gif». Достаточно найти расширение jpg в коде(в двух местах) и заменить их на gif. В данном коде я намеренно сделал сохранение в формат jpg, чтобы можно было сравнить с предыдущим кодом и увидеть как правильно менять расширение(формат) файла.

    Сохранить выделенный диапазон в картинку
    Данные код сохраняет выделенный на листе диапазон в картинку.

    Sub Range_to_Picture() Dim sName As String, wsTmpSh As Worksheet If TypeName(Selection) <> «Range» Then MsgBox «Выделенная область не является диапазоном!», vbCritical, «www.excel-vba.ru» Exit Sub End If Application.ScreenUpdating = False Application.DisplayAlerts = False With Selection .CopyPicture Set wsTmpSh = ThisWorkbook.Sheets.Add sName = ActiveWorkbook.FullName & «_» & ActiveSheet.Name & «_Range» With wsTmpSh.ChartObjects.Add(0, 0, .W .Parent.Delete End With End With wsTmpSh.Delete Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub

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

    СОХРАНЯЕМ ВСЕ КАРТИНКИ С ЛИСТА В ПАПКУ С ЗАПИСЬЮ В ЯЧЕЙКИ ИМЕН КАРТИНОК

    Код ниже сохраняет все картинки на активном листе в папку images , которая создается в папке с книгой Excel, картинки из которой сохраняются. Если папки images нет — она будет создана. Картинкам даются имена «img1», «img2», «img3» и т.д. Картинки из ячеек удаляются, а на их место записывается имя картинки. Актуально, наверное, для тех, кто из таких файлов делает потом выгрузки в интернет-магазины и пр.

    Sub Save_Object_As_Picture() Dim li As Long, oObj As Shape, wsSh As Worksheet, wsTmpSh As Worksheet Dim sImagesPath As String, sName As String sImagesPath = ActiveWorkbook.Path & «images» ‘» If Dir(sImagesPath, 16) = «» Then MkDir sImagesPath End If On Error Resume Next Application.ScreenUpdating = False Application.DisplayAlerts = False Set wsSh = ActiveSheet Set wsTmpSh = ActiveWorkbook.Sheets.Add For Each oObj In wsSh.Shapes If oObj.Type = 13 Then li = li + 1 oObj.Copy sName = «img» & li With wsTmpSh.ChartObjects.Add(0, 0, oObj.W End Sub

    В коде все так же, как в кодах выше(можно сохранять другие объекты, можно изменить формат сохраняемых картинок). Только при этом в ячейку, в которой была картинка записывается имя, с которым эта картинка была сохранена в папку на компьютере. Сама картинка при этом удаляется. Если удалять не надо, то необходимо просто удалить строку:
    oObj.Delete ‘удаляем картинку с листа
    Если необходимо записать в ячейку не только имя картинки, но и полный путь(включая путь к папке и расширение картинки), то надо вместо строки:
    oObj.TopLeftCell.Value = sName
    записать такую:
    oObj.TopLeftCell.Value = sImagesPath & sName & «.jpg»

    Читайте также  Защита ячеек от редактирования в Microsoft Excel

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

    Sub Save_Object_As_Picture_NamesFromCells() Dim li As Long, oObj As Shape, wsSh As Worksheet, wsTmpSh As Worksheet Dim sImagesPath As String, sName As String Dim lNamesCol As Long, s As String s = InputBox(«Укажите номер столбца с именами для картинок» & vbNewLine & _ «(0 — столбец в котором сама картинка)», «www.excel-vba.ru», «») If StrPtr(s) = 0 Then Exit Sub lNamesCol = Val(s) sImagesPath = ActiveWorkbook.Path & «images» ‘» If Dir(sImagesPath, 16) = «» Then MkDir sImagesPath End If ‘ On Error Resume Next Application.ScreenUpdating = False Application.DisplayAlerts = False Set wsSh = ActiveSheet Set wsTmpSh = ActiveWorkbook.Sheets.Add For Each oObj In wsSh.Shapes If oObj.Type = 13 Then oObj.Copy If lNamesCol = 0 Then sName = oObj.TopLeftCell.Value Else sName = wsSh.Cells(oObj.TopLeftCell.Row, lNamesCol).Value End If ‘если в ячейке были символы, запрещенные ‘для использования в качестве имен для файлов — удаляем sName = CheckName(sName) ‘если sName в результате пусто — даем имя unnamed_ с порядковым номером If sName = «» Then li = li + 1 sName = «unnamed_» & li End If With wsTmpSh.ChartObjects.Add(0, 0, oObj.W [:,\,/. *, ,’,|,»»»»]» s = objRegExp.Replace(sName, «») CheckName = s End Function

    Укажите номер столбца с именами для картинок — указывается порядковый номер столбца на листе, из которого брать имя для сохраняемой картинки. Например, сами картинки в столбце H, а имена для них записаны в столбце B. Надо указать 2. Тогда для картинки в ячейке H3 будет использовано имя, записанное в ячейке В3. Расширение для картинки указывать не надо(например — image1, image2, image_product_sell1 и т.п.).
    Если номер не указывать или указать 0 — то имя для картинок будет взято из тех ячеек, в которых находятся эти картинки.
    Так же проверяется корректность значений в ячейках, т.к. они могут содержать символы, недопустимые в именах файлов(слеши и пр.). В этом случаи эти символы будут удалены. И если после удаления этих символов значение будет пустым — имена картинкам будут даваться с префиксом «unnamed_» и порядковым номером таких картинок.

    Tips_Macro_Save_Object_As_Picture.xls (76,0 KiB, 14 139 скачиваний)

    Статья помогла? Поделись ссылкой с друзьями!

    Поиск по меткам

    Уважаемый автор! есть ли возмодность адаптировать «последний код для вытаскивания картинок с присвоением им имен ячеек» к Mac версии Office 365?
    Сам я только начал интересоваться VBA и подобный марос был бы очень полезен.

    Maxim, к сожалению, у меня нет возможности адаптировать код под MAC, т.к. у меня нет MACbook-а, да и разработкой под MAC не занимаюсь.

    Как легко экспортировать таблицы Excel в виде изображений

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

    Экспорт диаграмм Excel в виде изображений

    Извлечение таблиц Excel в другие приложения Office

    Как обсуждалось ранее, одним из вариантов использования было использование диаграмм Excel в любых других приложениях Office, таких как Microsoft Word или Microsoft PowerPoint.

    Обычно мы щелкаем правой кнопкой мыши в конце графика и выбираем «Копировать». Щелчок по краю гарантирует, что будет выбран весь график, а не только его часть. Теперь диаграмма копируется в ваш буфер обмена.

    Теперь допустим, что вы хотите вставить его в Microsoft Word. Затем мы открываем документ Word, нажимаем «Вставить», а затем нажимаем «Изображение» в разделе «Параметры вставки». Вы могли видеть, что диаграмма Excel была вставлена ​​как обычное изображение в документ Word, и вы можете изменить ее размер, как вам нужно.

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

    Также читайте . Советы и рекомендации по Excel для пользователей Windows

    Используйте Paint для сохранения диаграмм Excel как изображений

    Если вы хотите извлечь диаграмму Excel как изображение напрямую, не используя ее в каком-либо другом приложении Office, лучше всего подойдет Paint. Вы можете выбрать любое приложение для редактирования изображений, но так как Paint легко доступен, давайте использовать его.

    Скопируйте диаграмму из Excel, как описано выше, запустите Paint и нажмите « CTRL + V» , чтобы вставить скопированную диаграмму в Paint и обрезать ее по своему усмотрению. Теперь нажмите

    Теперь нажмите Файл> Сохранить как и выберите подходящий формат изображения. Дайте ему имя и сохраните его как изображение. Теперь вы можете поделиться этим изображением и использовать его где угодно. Но это также не выглядит простым, если вы хотите извлечь

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

    Преобразуйте таблицу Excel в изображения, сохранив книгу в виде веб-страницы

    Обсуждаемые ранее два метода не помогут, если вы хотите экспортировать все диаграммы Excel в виде изображений. Самый простой способ сделать это — сохранить всю книгу в виде веб-страницы. Таким образом, Excel будет экспортировать все диаграммы в книге в виде изображений, и вы сможете сразу их использовать.

    Для этого перейдите в Файл> Сохранить как . В окне «Сохранить как» выберите место, где вы хотите сохранить книгу, и дайте ей имя. Теперь

    Теперь важная часть: выберите « Веб-страница (* .htm, *. Html)» в разделе « Сохранить как тип» и убедитесь, что вы выбрали « Вся книга » в разделе« Сохранить ». Нажмите кнопку «Сохранить», чтобы сохранить книгу как веб-страницу и игнорировать любые сообщения о совместимости.

    Нажмите кнопку «Сохранить», чтобы сохранить книгу как веб-страницу и игнорировать любые сообщения о совместимости.

    Перейдите в каталог, в котором вы сохранили этот архив веб-страницы. Вы увидите файл «.htm» и папку с тем же именем, к которой будет добавлена ​​«_files».

    Откройте эту папку, и вы увидите HTML, CSS и файлы изображений. Эти файлы изображений — не что иное, как диаграммы, используемые во всех листах Excel в сохраненной книге. Вы увидите копию каждого изображения — одно с полным разрешением, а другое с уменьшенным разрешением, чтобы вы могли использовать его в любом сообщении в блоге.

    Этот способ сохранения рабочей книги в виде веб-страницы позволяет простым способом экспортировать все диаграммы Excel в виде изображений.

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

    Хотите узнать, как поделиться книгой Excel с несколькими пользователями в Интернете?

    Импорт и экспорт картинок в Excel

    Очень часто в рабочем документе пользователь может столкнуться с необходимостью вставить картинку или же, наоборот, сохранить её на свой компьютер. Например, вам поступил прайс или каталог, и иллюстрации, содержащиеся в нём, необходимы вам для наполнения интернет-магазина. Может показаться, что всё довольно легко, однако, многие сталкиваются с проблемами в попытках вытащить их из документа в формате Excel. Давайте выясним, какие действия следует предпринять, чтобы быстро и без проблем вставить или вытащить изображение из Excel.

    Добавить или скачать картинки в Эксель можно штатными средствами редактора

    Вставка фото или рисунка

    Чтобы поместить рисунок на листе, перейдите во вкладку «Вставка», там вы найдёте область «Иллюстрации». Выделите ячейку, в которую вы хотите его вставить, нажмите на кнопку «Рисунок» или «Картинка» и в появившемся меню выберите необходимое изображение. По умолчанию открывается папка «Изображения», в которую, как правило, сохраняются все файлы, загруженные из интернета. Если же необходимое изображение находится в другом месте, после перехода в меню «Рисунок», обратите внимание на окно, появившееся слева. Это корневая структура всех носителей и папок, находящихся на компьютере. Благодаря ей вы можете найти именно ту папку, в которую вы сохранили рисунок.

    Открытое изображение можно подвергнуть всяческим изменениям, например, увеличению, уменьшению или развороту. Кликнув на рисунок, и таким образом, выделив его, вы заметите, что он будет заключён в рамку с кружками и квадратами. Перетаскивая их, вы будете увеличивать или уменьшать размер картинки, а зелёный кружочек сверху позволит развернуть его как вам угодно. Также рисунок можно подвергнуть более серьёзным настройкам, выделив и кликнув правой кнопкой мыши, а в появившемся контекстном меню выбрать пункт «Размер и положение». В появившемся окне предоставлена информация об исходном размере изображения, есть возможность задать точные параметры высоты, ширины и поворота. Если желательно сохранить пропорции изображения, поставьте галочку напротив пунктов «Сохранить пропорции» и «Относительно исходного размера». Эти настройки предназначены в основном для изменения размера и формы, однако, вы также можете изменить сам рисунок, придав ему, например, конкретный оттенок или, вообще, перекрасить. Выделив его, в самом низу вы увидите пункт «Формат рисунка». Здесь вам доступны функции наделения изображения тенью, настройка её цвета и угла падения. Кроме того, вы можете настроить его отражение, настроив сторону, куда он будет отражаться, размер, прозрачность, расстояние и т. д. На самом деле, там множество разнообразных параметров, регулировка которых в конечном счёте сможет изменить изображение до неузнаваемости.

    Сохранение картинки, фото и т. д.

    Итак, мы разобрались, как можно копировать рисунок и вставить его в документ, а кроме этого, выяснили, где и каким именно изменениям можно его подвергнуть. Однако иногда встаёт вопрос, как же «вытянуть» или сохранить изображения, которые размещены в скачанном с интернета документе формата Excel? Существует несколько вариантов.

    1. Сохраните документ в формате интернет-страницы, то есть html. Выберите пункт «Меню», а там «Сохранить как». В выпадающем списке пункта «Типа файла» выберите веб-страница. Там их несколько и вы можете выбрать любую. Перейдите в ту директорию, где был сохранен ваш документ и откройте его с помощью браузера. В нём вы увидите сам текст и все изображения, которые будет легко скачать просто кликнув на них правой кнопкой мыши и выбрав команду «Сохранить картинку как». Название самой команды может варьироваться, в зависимости от установленного браузера.
    2. Если изображение изначально имеет хорошее разрешение и качество, вы можете растянуть его, скопировать, используя комбинацию клавиш «Ctrl+C», а затем открыть стандартную программу Paint и вставить. Затем сохраняем и получаем файл в формате PNG.
    3. Кроме вышеуказанных простых операций, популярность программы Excel обеспечила её дополнительным софтом, который предназначен для решения разнообразных специфических и конкретных задач. Именно с этой целью была создана надстройка именуемая PastePictures. Благодаря ей, программа производит поиск картинок в указанной папке, основываясь на содержимом ячеек таблицы, а затем вставляет их в соседние ячейки или примечания к ним. Помимо этого, её функциональность позволяет скачивать изображения по ссылкам и сохранять их в конкретные папки, а затем вставлять в примечания к ячейкам. Скачав надстройку и открыв её, вам будет предоставлена возможность тестового прогона, во время которого вы увидите её основные возможности на примере специально созданного документа, куда затем будут добавлены картинки и изменён формат таблицы. Кроме этого, в ней есть множество других параметров, которые позволят вам с удобством работать над таблицами, вставлять и сохранять изображения. Выше был описан процесс вставки картинок в документ. Чтобы сохранить их, выберите установленную надстройку и в левом верхнем углу кликните на команду «Изображения». В ней вы увидите пункт «Сохранить картинки с листа в файлы», благодаря которому вы и перенесёте изображения в память вашего компьютера. Скачать надстройку можно, перейдя по этой ссылке – http://excelvba.ru/programmes/PastePictures.
    Читайте также  Скрытие столбцов в Microsoft Excel

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

    Как сохранить картинки из листа Excel в картинки JPG

    Получили по почте файл-прайс с изображениями товара и эти картинки нужны в отдельной папки, а не на листе? Например для загрузки на сайт. Или для других целей. Подобной команды в Excel нет. Вставить картинки можно, а вот обратно к сожалению никак. Хорошо, если картинок штук 10, а если 100? А если таких книг много? И из всех надо сохранить картинки? Решил поделиться кодами, которые могут сохранять картинки из листа Excel в папку.
    Если не знаете как применять коды Visual Basic for Applications, то настоятельно рекомендую к прочтению эти статьи:
    Что такое макрос и где его искать?
    Что такое модуль? Какие бывают модули?
    Если хотите использовать один из нижеприведенных кодов, то следует создать стандартный модуль, скопировать нужные код и вставить его в этот модуль.

    Сохранение выделенной картинки в файл
    Все, что потребуется это выделить объект/картинку и выполнить нижеприведенный код:

    Sub Save_Sel_Object_As_Picture() Dim sName As String, oObj As Object, wsTmpSh As Worksheet If VarType(Selection) <> vbObject Then MsgBox «Выделенная область не является объектом!», vbCritical, «www.excel-vba.ru» Exit Sub End If Application.ScreenUpdating = False Application.DisplayAlerts = False Set oObj = Selection: oObj.Copy Set wsTmpSh = ThisWorkbook.Sheets.Add sName = ActiveWorkbook.FullName & «_» & ActiveSheet.Name & «_» & oObj.Name With wsTmpSh.ChartObjects.Add(0, 0, oObj.W .Parent.Delete End With wsTmpSh.Delete Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub

    Если необходимо сохранить не только картинки, но и другие объекты, то необходимо в коде в строке: If oObj.Type = 13 Then изменить цифру. В коде комментариями указано, какая цифра какой тип обозначает. Так же можно изменить и расширение итогового файла с «.gif» на «.jpg». Достаточно найти расширение gif в коде(в двух местах) и заменить их на jpg. Если ни один объект не выделен, то ничего не произойдет.

    Сохранение всех картинок из всех выбранных файлов Excel в папку

    Sub Save_Object_As_Picture() Dim avFiles, li As Long, oObj As Object, wsSh As Worksheet, wsTmpSh As Worksheet Dim sImagesPath As String, sBookName As String, sName As String Dim wbAct As Workbook Dim IsForEachWbFolder As Boolean avFiles = Application.GetOpenFilename(«Excel Files(*.xls*),*.xls*», , «Выбрать файлы», , True) If VarType(avFiles) = vbBoolean Then Exit Sub IsForEachWbFolder = (MsgBox(«Сохранять картинки каждой книги в отдельную папку?», vbQuestion + vbYesNo, «www.excel-vba.ru») = vbYes) If Not IsForEachWbFolder Then sImagesPath = Environ(«userprofile») & «desktopimages» ‘» If Dir(sImagesPath, 16) = «» Then MkDir sImagesPath End If End If On Error Resume Next Application.ScreenUpdating = False Application.DisplayAlerts = False Set wsTmpSh = ThisWorkbook.Sheets.Add For li = LBound(avFiles) To UBound(avFiles) Set wbAct = Workbooks.Open(avFiles(li), False) ‘создаем папку для сохранения картинок If IsForEachWbFolder Then sImagesPath = wbAct.Path & «» & wbAct.Name & «_images» If Dir(sImagesPath, 16) = «» Then MkDir sImagesPath End If End If sBookName = wbAct.Name For Each wsSh In Sheets For Each oObj In wsSh.Shapes If oObj.Type = 13 Then ’13 — картинки ‘1 — автофигуры ‘3 — диаграммы oObj.Copy sName = ActiveWorkbook.Name & «_» & wsSh.Name & «_» & oObj.Name With wsTmpSh.ChartObjects.Add(0, 0, oObj.W End Sub

    Код позволяет выбрать одну или несколько книг Excel и сохраняет все картинки со всех листов выбранных книг. При запуске кода предлагается выбрать файлы Excel, картинки из которых надо сохранить. После этого появится запрос: «Сохранять картинки каждой книги в отдельную папку?»

    • Да — для каждой книги будет создана своя папка images, в которую будут сохранены картинки с именами вида: ИмяКниги_ИмяЛиста_ИмяФигуры
    • Нет — на рабочем столе пользователя будет создана папка images, в которую будут сохранены картинки с именами вида: ИмяКниги_ИмяЛиста_ИмяФигуры

    Если необходимо сохранить не только картинки, но и другие объекты, то необходимо в коде в строке: If oObj.Type = 13 Then изменить цифру. В коде комментариями указано, какая цифра какой тип обозначает. Так же можно изменить и расширение итогового файла с «.jpg» на «.gif». Достаточно найти расширение jpg в коде(в двух местах) и заменить их на gif. В данном коде я намеренно сделал сохранение в формат jpg, чтобы можно было сравнить с предыдущим кодом и увидеть как правильно менять расширение(формат) файла.

    Сохранить выделенный диапазон в картинку
    Данные код сохраняет выделенный на листе диапазон в картинку.

    Sub Range_to_Picture() Dim sName As String, wsTmpSh As Worksheet If TypeName(Selection) <> «Range» Then MsgBox «Выделенная область не является диапазоном!», vbCritical, «www.excel-vba.ru» Exit Sub End If Application.ScreenUpdating = False Application.DisplayAlerts = False With Selection .CopyPicture Set wsTmpSh = ThisWorkbook.Sheets.Add sName = ActiveWorkbook.FullName & «_» & ActiveSheet.Name & «_Range» With wsTmpSh.ChartObjects.Add(0, 0, .W .Parent.Delete End With End With wsTmpSh.Delete Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub

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

    СОХРАНЯЕМ ВСЕ КАРТИНКИ С ЛИСТА В ПАПКУ С ЗАПИСЬЮ В ЯЧЕЙКИ ИМЕН КАРТИНОК

    Код ниже сохраняет все картинки на активном листе в папку images , которая создается в папке с книгой Excel, картинки из которой сохраняются. Если папки images нет — она будет создана. Картинкам даются имена «img1», «img2», «img3» и т.д. Картинки из ячеек удаляются, а на их место записывается имя картинки. Актуально, наверное, для тех, кто из таких файлов делает потом выгрузки в интернет-магазины и пр.

    Sub Save_Object_As_Picture() Dim li As Long, oObj As Shape, wsSh As Worksheet, wsTmpSh As Worksheet Dim sImagesPath As String, sName As String sImagesPath = ActiveWorkbook.Path & «images» ‘» If Dir(sImagesPath, 16) = «» Then MkDir sImagesPath End If On Error Resume Next Application.ScreenUpdating = False Application.DisplayAlerts = False Set wsSh = ActiveSheet Set wsTmpSh = ActiveWorkbook.Sheets.Add For Each oObj In wsSh.Shapes If oObj.Type = 13 Then li = li + 1 oObj.Copy sName = «img» & li With wsTmpSh.ChartObjects.Add(0, 0, oObj.W End Sub

    В коде все так же, как в кодах выше(можно сохранять другие объекты, можно изменить формат сохраняемых картинок). Только при этом в ячейку, в которой была картинка записывается имя, с которым эта картинка была сохранена в папку на компьютере. Сама картинка при этом удаляется. Если удалять не надо, то необходимо просто удалить строку:
    oObj.Delete ‘удаляем картинку с листа
    Если необходимо записать в ячейку не только имя картинки, но и полный путь(включая путь к папке и расширение картинки), то надо вместо строки:
    oObj.TopLeftCell.Value = sName
    записать такую:
    oObj.TopLeftCell.Value = sImagesPath & sName & «.jpg»

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

    Sub Save_Object_As_Picture_NamesFromCells() Dim li As Long, oObj As Shape, wsSh As Worksheet, wsTmpSh As Worksheet Dim sImagesPath As String, sName As String Dim lNamesCol As Long, s As String s = InputBox(«Укажите номер столбца с именами для картинок» & vbNewLine & _ «(0 — столбец в котором сама картинка)», «www.excel-vba.ru», «») If StrPtr(s) = 0 Then Exit Sub lNamesCol = Val(s) sImagesPath = ActiveWorkbook.Path & «images» ‘» If Dir(sImagesPath, 16) = «» Then MkDir sImagesPath End If ‘ On Error Resume Next Application.ScreenUpdating = False Application.DisplayAlerts = False Set wsSh = ActiveSheet Set wsTmpSh = ActiveWorkbook.Sheets.Add For Each oObj In wsSh.Shapes If oObj.Type = 13 Then oObj.Copy If lNamesCol = 0 Then sName = oObj.TopLeftCell.Value Else sName = wsSh.Cells(oObj.TopLeftCell.Row, lNamesCol).Value End If ‘если в ячейке были символы, запрещенные ‘для использования в качестве имен для файлов — удаляем sName = CheckName(sName) ‘если sName в результате пусто — даем имя unnamed_ с порядковым номером If sName = «» Then li = li + 1 sName = «unnamed_» & li End If With wsTmpSh.ChartObjects.Add(0, 0, oObj.W [:,\,/. *, ,’,|,»»»»]» s = objRegExp.Replace(sName, «») CheckName = s End Function

    Укажите номер столбца с именами для картинок — указывается порядковый номер столбца на листе, из которого брать имя для сохраняемой картинки. Например, сами картинки в столбце H, а имена для них записаны в столбце B. Надо указать 2. Тогда для картинки в ячейке H3 будет использовано имя, записанное в ячейке В3. Расширение для картинки указывать не надо(например — image1, image2, image_product_sell1 и т.п.).
    Если номер не указывать или указать 0 — то имя для картинок будет взято из тех ячеек, в которых находятся эти картинки.
    Так же проверяется корректность значений в ячейках, т.к. они могут содержать символы, недопустимые в именах файлов(слеши и пр.). В этом случаи эти символы будут удалены. И если после удаления этих символов значение будет пустым — имена картинкам будут даваться с префиксом «unnamed_» и порядковым номером таких картинок.

    Читайте также  Подсчет суммы в строке таблицы в Microsoft Excel

    Tips_Macro_Save_Object_As_Picture.xls (76,0 KiB, 14 139 скачиваний)

    Статья помогла? Поделись ссылкой с друзьями!

    Поиск по меткам

    Уважаемый автор! есть ли возмодность адаптировать «последний код для вытаскивания картинок с присвоением им имен ячеек» к Mac версии Office 365?
    Сам я только начал интересоваться VBA и подобный марос был бы очень полезен.

    Maxim, к сожалению, у меня нет возможности адаптировать код под MAC, т.к. у меня нет MACbook-а, да и разработкой под MAC не занимаюсь.

    Сохранить изображения с листа Excel в файлы

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

    Доступен выбор типа создаваемых файлов (поддерживаются форматы JPG, GIF и PNG)

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

    Если нужно сохранять картинки под именами из заданного столбца, либо производить другие действия с картинками (вставку на лист, вставку по ссылкам, поиск картинок в интернете), то воспользуйтесь универсальной надстройкой PastePictures.
    Функция выгрузки изображений в файлы там присутствует в меню Изображения — Сохранить картинки с листа

    В имени папки можно указать кодовое слово $filename — оно будет заменено на название текущего (обрабатываемого) файла Excel.

    Для запуска экспорта картинок в файлы нажмите комбинацию клавиш Ctrl + Shift + P

    На форме выберите формат сохраняемых изображений, и название папки для экспорта:

    По завершении сохранения изображений макрос выдаст уведомление:

    Результат экспорта изображений в созданной папке:

    Ознакомьтесь также со способом сохранения в графические файлы
    всех диаграмм на листе Excel

    Вложение Размер Загрузки Последняя загрузка
    Надстройка ExportPictures.xla 37 КБ 64 3 года 12 недель назад
    Книга Excel с картинками для тестирования надстройки ExportPictures 361.5 КБ 246 2 года 7 недель назад
    • 64037 просмотров

    Комментарии

    Здравствуйте, Виталий
    Выгрузить полноразмерные картинки легко очень (достаточно файл Excel сохранить как веб-страницу, и появится папка с картинками)
    Гораздо сложнее разобраться, какая картинка к какой строке относилась, чтобы присвоить картинкам имена из столбца (в описанном выше способе, картинки получают произвольные имена)

    Добрый день Игорь!
    Тема уже поднималось по размеру картинки. Разве нельзя выгрузить картинку оригинального размера а не размера вставленного изображения! Просто когда я отправляю через почтовый клиент и данные вставляю в тело письма, получатель получает все фото в оригинальном размере без каких либо зажатий (во вложении).
    Заранее Большое спасибо!

    Спасибо за отличную программу. В 2016 версии экспортирует первые 23 изображения, остальные идут просто белым фоном. После первого экспорта удаляете уже готовые изображения из документа и повторяете заново))

    Ох! Пардон, перечитал комментарии и нашёл ответ на свой вопрос.
    Ещё раз спасибо за отличную программку! 🙂

    Добрый день!
    Спасибо за прекрасную программку. Возможно, вам нужна на сайте кнопка «Дать денег за просто так» 🙂
    Если по делу, то вопрос такой:
    Можно ли без изменения кода в название файлов передать данные из этой же строки, что и картинка. А вообще кроме названия файла что-то можно передать в имя файла?
    Спасибо.

    Попробуйте универсальную программу для сохранения картинок в файлы
    http://excelvba.ru/programmes/PastePictures
    Там другой механизм выгрузки, — он должен работать на любой версии.

    Пытаюсь экспортировать картинки из документа. Всё работает, вот только вместо картинок в папке просто файлы с белым фоном и всё.Как поступить? У меня офис 2016. До этого на 2010 всё работало, а теперь на новом офисе получается такая ерунда.

    Спасибо за программу. Просто и удобно.

    vet, такая возможность есть.
    Читайте мой предыдущий комментарий.

    есть ли возможность присваивать файлам имена заданные в соседней с картинкой ячейке?
    спасибо

    не пойму почему, но не работает на 2010 excel

    Здравствуйте, Александр
    В расширенной версии этой надстройки есть возможность задать номер столбца
    (и экспорт картинок там реализован качественнее)
    http://excelvba.ru/programmes/PastePictures

    В меню надстройки есть пункт «Изображения — Сохранить картинки в файлы. »

    Спасибо большое! Работает! 🙂
    Я так понял сам код VBA запаролен. Можно как то договориться на посмотреть, «что там внутри».
    Работает все как надо. Задача была выгрузить картинку и присвоить ей имя .jpg пришлось изменить прайслист и просто разместить имена артикулов слева. Все получилось. Но было бы удобнее указывать индекс столбца, где надо искать имя, что бы не править сам лист Excel.

    Автору большое Спасибо.

    Да, выгружаются без белых полос, но все очень маленькие. НЕ смотря на то что я их предварительно увеличила:-( Почему в 2003 Exsel фотки вытаскиваются без изменения свойств в реальном размере, а из моего, только такие как они вставлены в лист? Уже просто не знаю что делать.

    Здравствуйте, Елена.
    C белой полосой, — да, есть такая проблема.
    Дело в том, в 3 разных версиях Excel (2003, 2007, 2010) этот макрос работает по-разному (в одной версии — без полос, в других — есть полосы, причем с разных сторон)
    Это недостаток используемого способа экспорта изображений (через вставку в диаграмму, у которой, в Excel 2007-2010, края закруглены, — из-за этого картинку не удается поместить точно в угол диаграммы, и получаются белые полосы)

    Используйте для экспорта картинок в файлы эту надстройку:
    http://excelvba.ru/programmes/PastePictures
    Там используется другой, более сложный, алгоритм экспорта, — и картинки выгружаются нормально (без белых полос)

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

    Добрый день. Работает все отлично, быстро, проблем с переименованием нет. НО есть другая проблема. У каждого фото в эксель файле есть свой определенный размер (когда заходишь в свойства рисунка есть исходные размеры), а при скачивании через макрос они становятся все одинаковымми, маленькими по размеру. Если в свойствах рисунка нажать сброс (размеры станут исходные), то при вытаскивании через макрос размер остается такой какой нужен. Только заходить в каждое фото, это очень тяжко, по другому никак этого не сделать?

    Нет, для этого надо другой макрос делать.

    Здравствуйте! Может ли данная надстройка помочь в том случае, если я хочу ячейку (пустую или с текстовыми данными)сделать изображением?

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

    Вот в ту программу можно будет добавить опцию выбора масштаба.

    Подскажите всё таки, если можно, как увеличивать картинки, а то приходится их сначала руками все увеличивать. А вообще было бы не плохо в форму добавить поле, для введения масштаба увеличения (по умолчанию =1). И каждый мог бы увеличить во столько, во сколько ему нужно, в 2 или в 5 или в 3,748 раза.

    Очень помогло, большое спасибо автору.

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

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

    Здравствуйте, Дмитрий.
    Дело в том, что Excel не знает, каких размеров та картинка была изначально, и не может оценить её качество.
    Потому я даже не знаю, как картинки выгрузить увеличенными, — увеличить-то их перед выгрузкой несложно (и то не всегда, — если картинка огромная, — то это проблематично), — вот только как определить, во сколько раз её увеличивать.
    Некоторые картинки надо увеличить в 2 раза, некоторые — в 5 раз, а есть и такие картинки, в которых при увеличении в несколько раз заметно потеряют в качестве.
    К тому же, заранее неизвестно, было ли применено к этим картинкам (или некоторым из них) сжатие.
    Потому получить заведомо корректный результат проблематично.

    PS: Сейчас картинки выгружаются в том размере, в каком они отображаются в Excel.

    Столкнулся с тем, что выгружаемые файлы меньше по размеру и хуже по качеству, чем картинки к экселе. Например, если картинка хорошего качества ужата по размеру в экселе, но при этом ее можно всегда развернуть, то она такая маленькая (в ужатом виде) и выгружается. Можно это как-то побороть? Заранее спасибо!

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

    Добрый вечер. Пишит после запуска программа не отвечает и выдает что загружено 0 файлов. Вы не могли бы, пожалуйста помочь? Заранее спасибо

    Если при нажатии комбинации клавиш, макрос не запускается, — на то могут быть 2 причины:
    1) файл надстройки не запущен
    2) не включены макросы в Excel

    Как запустить? По комбинации Ctrl + Shift + P открывается окно Формат ячеек.

    Очень своевременно помогло сохранить большое количество картинок из файла.
    Спасибо!

    Дмитрий, а какая разница, сохранять картинки из XLSX, или из другого формата файлов Excel (XLS и т.д.)
    Для программы (макроса) разницы нет.

    Спасибо за программу, если-бы она еще сохраняла оригиналы из xlsx, было-бы совсем отлично.

    Здравствуйте, Сергей.
    Возможно, в вашем файле картинки вставлены как-то по-особенному,
    или вы задали название папки, содержащее недопустимые символы для имени папки.

    В файле-примере ведь всё работает.
    Можете выслать мне на почту свой файл Excel с картинками — тогда я подскажу, в чем проблема.

    После нажатия «экспортировать изображения в файлы»
    выдает
    «экспортированно 0 из . ( кол-во найденных ) изображений»