Страницы: 1 2 След.
RSS
Макрос для сжатия картинок на листе Excel
 
Всем привет!  
Облазил весь поиск и ни чего не нашел.  
Очень нужна СПЕЦИАЛИСТА в написании макроса по сжатию рисунков в книге EXCEL при помощи активной кнопки на листе, на первый взгляд все и так просто, для сжатия рисунков необходимо нажать на кнопку сжать, которая появляется на основной панели EXCEL, выбрать параметр сжатия 220, 150 или 96 пикселов и сохранить файл. У меня же все через Ж…., Excel 2007 отказывается жать картинки, наверное глюк, ставил патчи и обновления - не помогает  
Необходимый параметр сжатия – 150 пикселов.  
Я очень надеюсь на Вашу помощь!!!  
Спасибо!
EXCEL -
 
Эксель - графический редактор?  
Вот если по тексту "EXCEL" заменить на "Adobe Photoshop", то где-то начинает появляться смысл.  
Или я один такой тупой?
Bite my shiny metal ass!      
 
{quote}{login=Лузер™}{date=24.07.2009 08:58}{thema=}{post}Эксель - графический редактор?  
Вот если по тексту "EXCEL" заменить на "Adobe Photoshop", то где-то начинает появляться смысл.  
Или я один такой тупой?{/post}{/quote}  
 
А причем тут Adobe Photoshop, смею предположить, что ты не въехал в суть вопроса, он заключается в следующем.  
Excel 2003 жмет все картинки без разбора - ЭТО ХОРОШО, у меня стоит Excel 2007, не знаю почему но не сжимает картинки в вообще - ЭТО ПЛОХО.  
ВНИМАНИЕ ВОПРОС:  
Как по средствам VBA, т.е. макроса сжать все картинки рабочей книги Excel до 150 пикселов???
 
Реально не въехал. Потому и написал.  
И продолжаю тупить.  
Картинки в экслеле, они где? в ячейке, в примечаниях, в подложке листа...  
Как объект...
Bite my shiny metal ass!      
 
{quote}{login=Лузер™}{date=24.07.2009 09:22}{thema=}{post}Реально не въехал. Потому и написал.  
И продолжаю тупить.  
Картинки в экслеле, они где? в ячейке, в примечаниях, в подложке листа...  
Как объект...{/post}{/quote}  
 
Картинки в ячейках
 
Меня вот тоже заинтересовал вопрос - каким образом Excel жмёт картинку? Например, меню Вставка - Рисунок - Из файла... Вствили картинку. Предположим, что Excel её сжал. Теперь нужно сравнить её размер с исходной. Значит нужно извлечь эту картинку из Книги, поместить её в какой-либо графический редактор, сохранить (ничего не меняя). И после этого сравнить. Так?
 
{quote}{login=Юрий М}{date=24.07.2009 12:43}{thema=}{post}Меня вот тоже заинтересовал вопрос - каким образом Excel жмёт картинку? Например, меню Вставка - Рисунок - Из файла... Вствили картинку. Предположим, что Excel её сжал. Теперь нужно сравнить её размер с исходной. Значит нужно извлечь эту картинку из Книги, поместить её в какой-либо графический редактор, сохранить (ничего не меняя). И после этого сравнить. Так?{/post}{/quote}  
 
Вставляем картинку именно так, как Вы описали, либо макросом, а сравнивать размер можно на много проще, если Вы вставили в лист 10 картинок по 1,5 Мб, он ни как не будет весить менее 15 мегабайт, тут используется функция сжать, которая появляется на главной панели при выделении любого графического объекта на листе, там мы выбираем тип сжатия:  
- для печати 220 пикселов  
- для Интернет страниц 150 пикселов  
- для эл. почты 96 пикселов  
После ставим соответствующие галочки,сжать все картинки на листе и жмем ОК, Excel жмет все картинки убивая разрешение и качество до выбранного ранее разрешения, после чего сохраняем файл и он весит не более 500 Кб, вместо 15 Мб изначально.  
Вроде все просто и макрос для этого не нужен, но у меня стоит лицензионный Excel 2007, и он не хочет сжимать картинки как 2003, почему - Я НЕ ЗНАЮ. Именно поэтому я создал эту тему, с вопросом, как через макрос повторить эту процедуру сжатия, которую Excel делать должен сам но почему то не делает.
EXCEL -
 
Я думаю, что картинка не в ячейке, а  Вставка - Рисунок - Из файла. Тогда в формате рисунка есть кнопка "Сжать"  
У меня не столь богато и нет такого выбора (220, 150 или 96 пикселов), но 200 и 96 есть.  
Думаю, такая кнока разыскивается в 2007-м. Я 2007-й еще не ставил.  
И вообще картинки можно сначала подготовить (хоть в том же фотошопе) а уж потом в эксель пихать (мне, правда, непонятно - зачем они там вообще?)
Bite my shiny metal ass!      
 
Теперь понял о чём разговор. Помочь не могу - нет 2007-го, чтобы посмотреть :-)
 
Попытаюсь реанимировать тему :)  
И все же, как макросом сжать фото?  
Надо, чтобы макрос работал при закрытии книги, т.е. пользователь поработал с книгой, нажал на закрыть и сохранить и в этот момент макрос сжимает на максимально возможном сжатии все имеющиеся картинки в книге (вставленные по принципу "вставка рисунка" или скопированные из другой книги).  
 
Между прочим, функция очень полезна тем, кто работает с отчетами получаемыми от различных людей, которые содержат фото, т.к. вставить в отчет такой макрос куда проще, чем объяснить каждому как сжать фото, а еще веселее объяснять тому, кто совсем не шарит в excel. Плюс исчезает возможность "забыть сжать фото" :)
 
Я как-то задавался этим вопросом: http://www.programmersforum.ru/showthread.php?t=36102  
Ответа не нашёл до сих пор...  
 
Самый простой способ - запускать сжатие картинок вручную.
 
{quote}{login=EducatedFool}{date=10.09.2010 12:48}{thema=}{post}Я как-то задавался этим вопросом: http://www.programmersforum.ru/showthread.php?t=36102  
Ответа не нашёл до сих пор...  
 
Самый простой способ - запускать сжатие картинок вручную.{/post}{/quote}  
Понятно, что самый простой )))  
Но раз функция есть в excel, значит ее можно вызвать через запрос макроса. Вопрос как... Предлагаю совместными усилиями разобраться! Уверен, что решение есть или его можно создать...  
 
С вопросом по переносу форматирования ячейки тоже говорили что нет решения...
 
Нашел такую статейку: http://infostart.ru/public/19977/  
 
Не понял как работает, но судя по описанию применено автоматическое сжатие фото.
 
Можно сохранить книгу как Web-страницу. В папке ".files" будут картинки. Их размер зависит от параметра из "параметров веб-документа:  
 
ActiveWorkbook.WebOptions.PixelsPerInch = 96  
 
Потом повставлять эти картинки вместо существующих в документе.  
 
Я делал это когда-то вручную, и размер файла уменьшался в несколько раз.  
К сожалению, сейчас нет времени (и подходящего документа), чтобы отладить такую программу.
 
Нашел такой код:  
Sub Compress_PIX()  
 
Dim octl As CommandBarControl  
 
With Selection  
   Set octl = Application.CommandBars.FindControl(ID:=6382)  
   Application.SendKeys "%e~"  
   Application.SendKeys "%a~"  
    octl.Execute  
End With  
 
End Sub    
 
Тут: http://vbadud.blogspot.com/2010/05/how-to-compress-pictures-in-excel-using.html  
 
Но у меня он не работает, точнее макрос срабатывает, но вес файла не изменяется.  
 
Но, столкнулся с приятным моментом, в посте про импорт фото (http://www.planetaexcel.ru/forum.php?thread_id=19052) я выкладывал пример. Так вот, если фото импортировать через тот макрос и сохранить файл размер меняется не значительно! - сам файл весит 48 640 бит, после вставки 5 фото весом по 4,08 МБ, вес файла становится 57 344 бит.  
Не понимаю природы явления, но факт остается фактом!  
Если не сложно, потестите у себя, такой же будет результат? (у меня 2010 офис)
 
Господа, вы хоть напишите, что тема не интересна... А то вроде обсуждение пошло, но все благополучно о теме забыли...
 
BioVR, не кипятитесь. Перечитайте пост от The_Prist 10.09.2010, 13:24 и 10.09.2010, 13:58. Если нужно, задайте наводящие вопросы.
Я сам - дурнее всякого примера! ...
 
{quote}{login=KuklP}{date=13.09.2010 11:40}{thema=}{post}BioVR, не кипятитесь. Перечитайте пост от The_Prist 10.09.2010, 13:24 и 10.09.2010, 13:58. Если нужно, задайте наводящие вопросы.{/post}{/quote}  
KukIP, приношу извинения, если в предыдущее сообщение выглядит раздраженно.  
Я согласен с высказыванием The_Prist, меня больше заинтересовал момент, который происходит с макросом, который вставляет фото.  
С ним есть еще один момент - вставка фото происходит корректно не на всех машинах, в части из них фото вставляется не в ту ячейку, в которую должна и мне не совсем удалось понять - в итоге на других машинах макрос сжимает фотки или нет? Если нет, то каковы причины явления?  
Про сжатие данным макросом - в нем нет никаких вызовов функций сжатия, он просто вставляет фото/картинки. Разве не интересно почему так происходит?  
Выкладываю последний вариант кода.
 
Разобрался с причиной "волшебного" сжатия у меня... Выяснилось, что фото вставлялось по типу вставки "связать с объектом", собственно если объект переместить, то это приводит к отсутствию вставленного рисунка в файле.  
 
Но все же, никто не нашел ничего нового по сжатию?
 
В итоге достигнутый результат по сжатию картинок тут:  
 
http://www.planetaexcel.ru/forum.php?thread_id=19166  
 
P.S. Лучше темы объединить или текущую удалить.
 
Роман,вы открыли свой файл в эксель 2007,нажмите на картинку,чтобы она кабы была выделена,потом в правом левом углу нажмите пуск и выберете "преобразовать" .согласитесь с тем что файл будет сжат и исходный вариант удален.Ваш файл сжат.
 
{quote}{login=Евгения}{date=08.12.2010 12:22}{thema=сжать картинку с excel 2007}{post}Роман,вы открыли свой файл в эксель 2007,нажмите на картинку,чтобы она кабы была выделена,потом в правом левом углу нажмите пуск и выберете "преобразовать" .согласитесь с тем что файл будет сжат и исходный вариант удален.Ваш файл сжат.{/post}{/quote}  
 
Евгения, Вы умничка! Спасибо.
 
А как сжать картинки в 2010?
 
{quote}{login=Евгения}{date=08.12.2010 12:22}{thema=сжать картинку с excel 2007}{post}Роман,вы открыли свой файл в эксель 2007,нажмите на картинку,чтобы она кабы была выделена,потом в правом левом углу нажмите пуск и выберете "преобразовать" .согласитесь с тем что файл будет сжат и исходный вариант удален.Ваш файл сжат.{/post}{/quote}  
Евгения, не могли бы Вы поподробнее объяснить последовательность действий. Спасибо!
 
Vlad, Евгения была тут год назад, сейчас она уже и не помнит про этот форум, наверное.
 
Размер документа Microsoft Offic с фотографиями - 90мб. После сжатия в в 2010 вес файла (с 2-мя промежуточными сохранениями)- 19 мб, а после сжатия в 2003 - 6 мб.    
Вопрос, как сжимать в 2010, что-бы результат соответствовал 2003?
 
файлы 2007 и 2010 года можно открыть в архиваторе - в папке xl будет папка media - в ней хранятся все фото, переносите все в отдельную папку - сжимаете как хотите, меняете размер и др. - перетаскивайте обратно в архив с заменой предыдущих.
 
к сожалению, чтобы научить менеджеров описанному вами процессу надо минимум пол года. + получить кучу служебок начальству, что в 2003 все работало нормально. Поэтому ищется более дружелюбный для юзера способ, в виде одной кнопки.
 
Так же всё и в 2010. Щёлкнуть на рисунке. На вкладке "Работа с рисунками" есть кнопка "Сжать рисунки". В диалоговом окне можно настроить требуемое разрешение при сжатии и применять ли только к выделенному рисунку. Скриншоты во вложении
 
Господа, читать умеем и пользоваться поиском тоже:  
http://office.microsoft.com/ru-ru/powerpoint-help/reduce-the-file-size-of-a-picture-HA010355854.aspx#BMdefaultpicres  
http://office.microsoft.com/en-us/powerpoint-help/reduce-the-file-size-of-a-picture-HA010355854.aspx  
Именно так и делали, только в 2010, после сжатия вес файла (с 2-мя промежуточными сохранениями)- 19 мб, в 2003 - 6 мб.    
Поэтому и ищется макрос, программа или где в реестре поправить что можно, чтобы получить нормальный результат.
Страницы: 1 2 След.
Читают тему
Наверх
Loading...