Страницы: 1
RSS
Сохранение фото из xls
 
Добрый день.
Подскажите пожалуйста, стоит такая задача...
Есть файл xls вида "№ п/п", "Артикул", "Размер, см", "Кол-во, шт", "Цена за ед., EURO", "Стоимость, EURO", "Фото", "Примечание", "Штрих-код". Задача стоит не просто сохранить все фотографии с листа Excel, но чтобы в самом файле xls фотографии заменились на названия соответствующих файлов.
Постараюсь пояснить. В ячейке H1 у нас есть фотография. Мне нужно ее сохранить как рисунок JPG с именем img1.jpg и чтобы в ячейке H1, соответственно, тоже появилось название img1.jpg (Задача выгрузить базу данных в одну мобильную программу.  Программа понимает только файлы csv с прописанными именами фотографий + отдельная папка с фотографиями).
Сохранение в html, надстройки по сохранению фото из Excel пробовал. Все они коверкают имена файлов, придется проставлять новые имена в файл xls руками, а счет позиций идет на тысячи...
Пример прикрепил.
Спасибо.
 
 "В ячейке H1 у нас есть фотография" - не а , нету. Она не имеет отношения к ячейке. Это просто объект на листе.... :D
 
Les555, да, прошу прощения за неточность. Хорошо пример скинул.  :)

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

Спасибо.
 
Владислав это не неточность , это корень проблемы. Если решите как связать картинку и ячейку, то  остальное просто и неинтересно.
Изменено: Les555 - 20.02.2016 11:24:23
 
karkarkar@bk.ru, ознакомьтесь с Правилами и поменяйте в своём профиле отображаемое имя - сейчас оно с нарушением.
Спасибо!
 
Les555, спасибо, будем думать...

Юрий М, прошу прощения. Поменял.
 
Цитата
Les555 написал:
Если решите как связать картинку и ячейку,...
Например, сделать картинку фоном примечания.
Неизлечимых болезней нет, есть неизлечимые люди.
 
Цитата
TheBestOfTheBest написал: сделать картинку фоном примечания
В - ручную ? Там тысячи картинок в файле.
 
В общем-то не сказал бы, что это проблематично.
Код
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 = ThisWorkbook.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 = ThisWorkbook.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.Width, oObj.Height).Chart
                .ChartArea.Border.LineStyle = 0
                .Paste
                .Export Filename:=sImagesPath & sName & ".jpg", FilterName:="JPG"
                .Parent.Delete
            End With
            oObj.TopLeftCell.Value = sName
            oObj.Delete
        End If
    Next oObj
    Set oObj = Nothing: Set wsSh = Nothing
    wsTmpSh.Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "Объекты сохранены в папке: " & sImagesPath, vbInformation, "www.excel-vba.ru"
End Sub
За основу взял свой старый код из статьи: Как сохранить картинки из листа Excel в картинки JPG
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, Вы сделали мой день! Идеально, то что было нужно! :D

Не знаю как благодарить, спасибо Вам большое!
 
respect! :excl:

Добавил в  код после
---
With wsTmpSh.ChartObjects.Add(0, 0, oObj.Width, oObj.Height).Chart
               .ChartArea.Border.LineStyle = 0
               .Paste
               .Export Filename:=sImagesPath & sName & ".jpg", FilterName:="JPG"
               .Parent.Delete
           End With
 -----          
           
      вот что
   
         MsgBox (oObj.TopLeftCell.Address)

и поменял местами нижние картинки и оказалось, что макрос запомнил их первоначальное положение и менять не хочет! картинка 3 -я не хочет быть 2-й
как поправить ?
Изменено: Les555 - 20.02.2016 14:28:56
Страницы: 1
Читают тему
Наверх