Страницы: 1
RSS
VBA - скриншот + навигация
 
Как копировать снимок экрана по границам выделенного диапазона и вставлить в активный (на мамент запуска) лист Excel, или сделать фоном примечания к активной на момент запуска ячейке? В общем, сложностей вижу много.  
1) Как делать скриншоты в VBA и потом их обрезать в зависимости от выделенной области(обязательно правой клавишей мыши)?  
2)Как преобразовать полученный тип изображения в GIF? Изображения схематичные, и размер важнее качества цветопередачи.  
3) Передача управления другим программам, и вообще, свободная навигация при помощи левой клавиши мыши или Alt+Tab, возможно ли осуществить такое без усиленного гемороя?  
 
Буду брагодарен если укажите в каком направлении копать информацию, или несколько полезных для решения такой задачи методов.
 
Вы всё намешали в кучу... Какое отношение вопросы по графике имеют к данному Форуму?
 
Смысл задумки такой, что при создании каталога в Екселе и добавлении к продукту рисунка было меньше гемороя. Пытаюсь решит эту проблему с помощью VBA, в виде макроса для Excel.
 
{quote}{login=Юрий М}{date=03.06.2011 01:20}{thema=}{post}Вы всё намешали в кучу... Какое отношение вопросы по графике имеют к данному Форуму?{/post}{/quote}  
 
о, да)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=Inoxodec}{date=03.06.2011 01:23}{thema=}{post} Пытаюсь решит эту проблему с помощью VBA, в виде макроса для Excel.{/post}{/quote}  
Вот эту?    
"2)Как преобразовать полученный тип изображения в GIF? Изображения схематичные, и размер важнее качества цветопередачи"
 
{quote}{login=Юрий М}{date=03.06.2011 01:27}{thema=Re: }{post}{quote}{login=Inoxodec}{date=03.06.2011 01:23}{thema=}{post} Пытаюсь решит эту проблему с помощью VBA, в виде макроса для Excel.{/post}{/quote}  
Вот эту?    
"2)Как преобразовать полученный тип изображения в GIF? Изображения схематичные, и размер важнее качества цветопередачи"{/post}{/quote}  
 
Если я правильно понимаю, то результатом скриншота будет BMP. Т.е. если б я сохранял изображение на диске - то оно (даже без указания расширения) будет сохранятся в этом формате. Недостаток этого в том, что вес файла будет зависеть только от количества пикселей в рисунке. Изображения в основном будут схематические/чёрно-белые, а при таком раскладе наилучший вариант хранения - GIF. Проводя эксперименты с Екселем нетрудно заметить, что при вставке одного и того же рисунка в разных форматах (в одном случае GIF а во втором BMP) - размер итогового файла меняется по-разному. В общем, от гифа растёт медленнее. Может я ошибаюсь и это не так, и в книге ексель все изображения хранятся в одном внутреннеекселевском формате, и просто гиф преобразуется в него по-другому из-за потери качества при конвертации из БМП.
 
Преобразование формата Вы собираетесь делать не в графическом редакторе, а в VBA?
 
{quote}{login=Юрий М}{date=03.06.2011 01:50}{thema=}{post}Преобразование формата Вы собираетесь делать не в графическом редакторе, а в VBA?{/post}{/quote}  
Если есть возможность, то почему бы и нет. Я думаю, что ActiveX должен в этом помочь какой-нить функцией.
 
Inoxodec, создайте новую тему, где будет вопрос ТОЛЬКО по Excel. Эта тема будет удалена: в ней НЕСКОЛЬКО вопросов, в том числе, не имеющих к Excel отношения.
 
Не совсем понял задачу, но Excel и VBA имеют некоторые возможности для работы с графикой и без привлечения внешних библиотек:  
1. Копирование диапазона как картинки: range.CopyPicture, см. параметры.  
2. Вставка картинки из буфера обмена в активную ячейку: activesheet.paste.  
3. Преобразование формата: http://www.planetaexcel.ru/forum.php?thread_id=28472
 
Проблема в том, что мне надо из внешнего источника в ексель поставить файл. Из другого ПДФ документа, или из веб каталога или из другой программы. Причём не весь скрин окна, а только его чать. Тут придётся пользоваться WIN32 API. Как брать координаты выделения мауса и как сделать так, что б макрос работал когда лист Екселя свёрнут - я уже разобрался. Осталось разобраться как делается сам скриншот.
 
Я бы на вашем месте не стал всё усложнять, делая макрос для получения скриншота другого приложения.  
Для этого есть удобные специализированные утилиты - типа JetScreenshot, например.  
Жмём комбинацию клавиш, выделяем диапазон на экране (неважно, какое там приложение запущено), - и, как только отпускаем кнопку мыши, в буфере обмена (или в файле, или на сервере FTP) появляется нужное изображение в сжатом формате (JPG)  
 
Это ничуть не сложнее, чем с той же комбинации клавиш запустить макрос.  
А уж нажать Ctrl + V для вставки картинки на лист, думаю, труда не составит.
Страницы: 1
Читают тему
Наверх