Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2019, 14:49   #1
dunakov
 
Регистрация: 09.10.2019
Сообщений: 9
По умолчанию Выдрать имя изображения из ячейки

Добрый день. Скинули мне Excel файл где в столбике стоят картинки. Картинки сами я сохранил путём сохранения в html формат. Но теперь мне нужно чтобы эти картинки либо преобразовать в их имена чтобы вместо картинок было имя картинки, либо создать рядом столбец с именем каждой картинки. Как вот получить имя картинки, которая находится в ячейке Excel ?
dunakov вне форума Ответить с цитированием
Старый 09.10.2019, 15:00   #2
dunakov
 
Регистрация: 09.10.2019
Сообщений: 9
По умолчанию

Отыскал такой код.
Код:
Sub CheckImageName()
    Dim pic                   As Excel.Picture

    For Each pic In ActiveSheet.Pictures

        pic.TopLeftCell.Offset(, 2).Value2 = pic.Name
    Next pic
End Sub
Названия оно вставляет. Вроде всё норм, но сами номера картинок почему то сильно отличаются от тех которые были выгружены импортом в html.

Если в папке импортом картинка называется image1023.png

То почему то название у неё Picture 453 например. Т е совсем другой порядковый номер. Это странно что ли
dunakov вне форума Ответить с цитированием
Старый 09.10.2019, 15:12   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

пример файла (желательно не большого размера) можно увидеть?

а в чём смысл этих манипуляций? Зачем Вам имена картинок (тем более тех, что выгружены в HTML) ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.10.2019, 15:41   #4
dunakov
 
Регистрация: 09.10.2019
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
пример файла (желательно не большого размера) можно увидеть?

а в чём смысл этих манипуляций? Зачем Вам имена картинок (тем более тех, что выгружены в HTML) ?
Смысл того, что я буду данные перегружать в MySQL базу данных. А импорт в MySQL видит картинку как пустое поле. Поэтому в базе данных должно храниться название картинки.

Чуть позже сделаю примерный файл
dunakov вне форума Ответить с цитированием
Старый 09.10.2019, 15:44   #5
dunakov
 
Регистрация: 09.10.2019
Сообщений: 9
По умолчанию

Вот
Вложения
Тип файла: xlsx test.xlsx (238.0 Кб, 8 просмотров)
dunakov вне форума Ответить с цитированием
Старый 09.10.2019, 16:40   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Картинки сами я сохранил путём сохранения в html формат
после этого, картинки никак не сопоставить с ячейками, в которых они хранились

Подробнее об этом написал здесь: (способ 4)
https://excelvba.ru/programmes/Paste...ort/HowItWorks
EducatedFool вне форума Ответить с цитированием
Старый 09.10.2019, 17:26   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Подробнее об этом написал здесь: (способ 4)
Отличная статья.

я в своё время побился, понял, что создатели Excel плевать хотели на тех, кто хочет реальный экспорт (хотя не понимаю, в чём здесь принципиальная сложность, реализовать Способ №3 из вашей статьи).


Цитата:
Сообщение от dunakov Посмотреть сообщение
Картинки сами я сохранил путём сохранения в html формат.
Так делать НЕЛЬЗЯ. Вот просто нельзя и всё. я мог бы расписать, почему нельзя, но в этом нет необходимости.

имхо, реально действующий способ только один:
рассматривать XLSX файл как ZIP архив.
все картинки лежат в папке
\xl\media
скопировать их легко (просто распаковать из архива)

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

для XLSX файла с одним листом связи, описывающие файлы лежат здесь
\xl\drawings\_rels\drawing1.xml.rel s


связь ID графических файлов с изображениями на листе описана в файле
\xl\drawings\drawing1.xml

Здесь подобное - https://geekquestion.com/3332591-exc...enij-na-liste/


А вот здесь решается подобная задача
https://infostart.ru/public/699042/
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.10.2019, 20:53   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
не понимаю, в чём здесь принципиальная сложность, реализовать Способ №3 из вашей статьи
принципиальной сложности, конечно, нет
но нюансов много

начиная с того, что там не всегда 2 файла XML надо анализировать, - этих файлов может быть больше, и заканчивая повторяющимися ID картинок (у одной картинки несколько разных атрибутов ID - т.е. имеем невалидный XML)
Т.е. сложность вся только в частных случаях, когда делаешь универсальное решение для разных файлов с картинками.
EducatedFool вне форума Ответить с цитированием
Старый 09.10.2019, 22:41   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
принципиальной сложности, конечно, нет
но нюансов много
не-не-не. Вы меня не поняли.
я сейчас не про нас, я про компанию Microsoft. Программисты, которые разрабатывают MS Excel (а это большая банда) знают все структуры и для них эта задача (корректный экспорт файлов с указанием привязки картинок к листам) не должна составлять никакой сложности.
Вот почему нет таких встроенных средств в Excel мне не понятно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.10.2019, 08:38   #10
dunakov
 
Регистрация: 09.10.2019
Сообщений: 9
Печаль

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Отличная статья.

я в своё время побился, понял, что создатели Excel плевать хотели на тех, кто хочет реальный экспорт (хотя не понимаю, в чём здесь принципиальная сложность, реализовать Способ №3 из вашей статьи).



Так делать НЕЛЬЗЯ. Вот просто нельзя и всё. я мог бы расписать, почему нельзя, но в этом нет необходимости.

имхо, реально действующий способ только один:
рассматривать XLSX файл как ZIP архив.
все картинки лежат в папке
\xl\media
скопировать их легко (просто распаковать из архива)

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

для XLSX файла с одним листом связи, описывающие файлы лежат здесь
\xl\drawings\_rels\drawing1.xml.rel s


связь ID графических файлов с изображениями на листе описана в файле
\xl\drawings\drawing1.xml

Здесь подобное - https://geekquestion.com/3332591-exc...enij-na-liste/


А вот здесь решается подобная задача
https://infostart.ru/public/699042/
Распаковал я картинки через архив - та же шляпа. Не соответствие названиям картинок в ячейке Допустим называется картинка Рисунок 1300, а в папке она уже image 482 . + Картинок вместо 1187 стало 486
dunakov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление изображения в примечание ячейки из буфера обмена cent Microsoft Office Excel 18 13.11.2023 17:14
Импорт изображения из ячейки на форму airin078880 Microsoft Office Excel 1 22.11.2012 01:43
Выдрать переменную из JSON denis7656 PHP 12 27.04.2012 17:14
как из этого БПФ выдрать частоту sniper70 Общие вопросы Delphi 0 16.01.2011 09:17
Как выдрать из текста вес ??? kakawkin Общие вопросы Delphi 2 18.10.2010 20:08