Страницы: 1
RSS
макрос вставки изображения в примечание ячейки
 
Ув. знатоки и ГУРУ VBA - на этом сайте описан способ, как загнать изображение в примечание ( http://www.planetaexcel.ru/tip.php?aid=40 ),    
но это в ручную очень долго делать если например нужно обработать поочереди скажем 50 ячеек - и пальцы заплетутся... :)  
У меня родилась идея, но воплотить в жизнь ее у меня нехватает опыта работы с VBA.  
Поэтому прошу вас  - помогите создать макрос вставки изображения полученного с помощью кнопки "Print Scr" в примечание ячейки.  
 
Шаги задачи (если проделать все вручную) :  
 
1 - принтскриним необходимый нам экран (или активное окно  +"Alt") - это все добро помещается в буфер обмена  
2 - рисунок из буфера обмена нужно сохранить как рисунок на диске ( например C:/Temp/picture1.jpg )    
3 - становимся на нужную нам ячейку, в которую и собираемся вставить примечание-изображение  
4 - теперь создаем примечание, выделяем пириметр примечания - он должен стать в мелкую точечку  
5 - ПКМ, "Формат примечания...", "Цвета и линии", "цвет:", "Способы заливки...", закладка "Рисунок", "Рисунок..."  
6 - в проводнике выбераем наш C:/Temp/picture1.jpg, "Ок", "Ок".  
7 - удалить наш временный файл C:/Temp/picture1.jpg  
8 - Все.  
 
Осталось самое малое - это все на VBA написать.  
Т.е. Шаг№1 делаем всеже вручную, а далее "ВОЛШЕБНАЯ" кнопочка макроса...  
Пробовал макрорекордер - после записи  - на "повторе" операции (примечание зарание удалил) ошибка компиляции...  
Так, что я в тупике.    
Помогите, если кто знает решение этой, на мой взгляд тяжелой, задачи.  
 
С уважением,  
Андрей.
 
Своими ручками и припомощи кусков кода из старых процедур добился желаемого результата !!!  
 
Может кому пригодится :)  
Вот мой код :  
 
'Снимок экрана из буфера в примечание ячейки  
'Дата написания 18/11/2010  
'За основу взят макрос Плекса - "Экспорт выделенного диапазона в GIF"  
Sub PrintScrinInComment()  
msg = "Данный макрос вставит рисунок из буфера в примечание ячейки " & Chr(10) & "Продолжить ? "  
Style = vbYesNo + vbInformation  
Title = "Drony 2010"  
Response = MsgBox(msg, Style, Title)  
If Response = vbYes Then  
' Предупреждение о возможности обработки только одной ячейки  
If Selection.Cells.Count <> 1 Then GoTo 10 Else GoTo 20  
10: MsgBox "Возможна работа только с ОДНОЙ ячейкой !!! ", vbYes, "Ошибка исходных данных"  
Exit Sub  
20:  
If ActiveCell.Comment Is Nothing = False Then GoTo 30 Else GoTo 40  
30: MsgBox "Активная ячейка уже имеет примечание !!!", vbYes, "Макрос остановлен"  
Exit Sub  
40:  
On Error Resume Next                                ' пропускаем ошибки  
Kill "C:\temp\TempPicture.jpg"                      ' удаляем старый файл (если он конечно был)  
   Application.ScreenUpdating = False              ' создаваемая новая книга "невидимая"  
   Workbooks.Add                                   ' создаем новую временную книгу  
   ActiveWorkbook.SaveAs Filename:= _  
                         "C:\temp\TempBook.xls"    ' сохраняем временную книгу  
   ActiveSheet.Paste                               ' вставляем из буфера  
   With ActiveSheet.ChartObjects.Add(0, 0, Selection.Width + 8, Selection.Height + 8).Chart  
       .Paste  
       .Export Filename:="C:\temp\TempPicture" & ".jpg", FilterName:="JPG"  
   End With  
   Application.DisplayAlerts = False  
   ActiveWorkbook.ChangeFileAccess xlReadOnly  
   Kill ActiveWorkbook.FullName  
   ActiveWorkbook.Close False                      ' удаляем временную книгу  
   Application.DisplayAlerts = True  
   Application.ScreenUpdating = True  
     
' START *Предложение редактировать полученное изображение  
msg = "Хотите редактировать изображение ?"  
Style = vbYesNo + vbInformation  
Title = "Что дальше делать..."  
Response = MsgBox(msg, Style, Title)  
   
   If Response = vbYes Then  
       Dim WshShell As Object  
       Set WshShell = CreateObject("WScript.Shell")  
       Shell "mspaint.exe " & "C:\temp\TempPicture.jpg", vbMaximizedFocus  
'        Application.WindowState = xlMinimized  
       MsgBox "Если Вы завершили редактирование - нажмите Ок", vbYes, "Ожидание завершения редактирования..."  
   End If  
' END *Предложение редактировать полученное изображение  
 
ActiveCell.AddComment.Shape.Fill.UserPicture "C:\Temp\TempPicture.jpg"  
b = Application.UserName & " " & Date & " " & Time  
ActiveCell.Comment.Text Text:=Application.UserName & " " & Date & " " & Time  
End If  
 
End Sub
 
Ув. The_Prist,  
Вашу ссылку просмотрел... спасибо, почерпнул еще там много чего нового и полезного (например надстройка преобразования условного форматирования -    
были начинания в этом направлении и на этом форуме тоже я пытался развить эту тему).  
У меня вообще много идей (чего можно замутить в Excel), но не до всех доходят руки и не на все знаний достаточно...  
По материалу Вашего сайта есьт вопросик - не могли бы Вы поделиться методом которым вы "закрыли" свою надстройку("Project is unviewable"). Через открытие общего доступа такой блокировки не получается (хотя очень похожа). Мне хотелось бы свой "продукт" тоже под такую "защиту" посадить.  
 
С уважением,  
Андрей.
 
Андрей, со всем уважением - ничего, что вы обращаетесь на форум за бесплатной помощью и при этом жаждете:"поделиться методом которым вы "закрыли" свою надстройку("Project is unviewable")". Где здесь мораль? Посмотрите на к-во сообщений The_Prist. Это все безвозмездная помощь людям. Сравните с Вашим количеством. То есть Вы просите:"дайте мне открытый код, для того, что-бы я смог закрыть его для других"...
Я сам - дурнее всякого примера! ...
 
KukLP, это дело чистого интереса, а не то что Вы думаете... :)  
Открытый код подобной надстройки при желании посмотреть не такая большая проблема. А в этом случае и незачем, надстройка с УФ и так бесплатная и без ограничения - что меня вполнне устраивает.(P.S. - за открытыми кодами обращаться к их авторам).  
Меня интересует не как поломать , а как сделать такое?  
Потому, что получилось, как в жизни - "ломать, не стоить!".  
 
А по поводу "Это все безвозмездная помощь людям" - в моем случае получилось, что спасение утопающих - дело рук самих утопающих.  
На заре развития сайта, я тоже занимался тут безвоздмездной помощью, но потом просто надоело (а помог тоже не мало...(конечно с The_Prist не сравнить))  
 
Ну если сдесь не найду решения, то поможет Google , главное цель.  
 
 
The_Prist, а по почте "тайну" раскроете?
 
Нет, Дим. Я понял так же, как и ты. Просто подсмотренная закономерность - чем ниже знание Эксель, тем больше желания скрыть, запаролить, зашифровать. Я уже писал, что если у человека соображалка на месте, таких вопросов не возникнет. Сделает нигде не обсуждавшийся способ защиты. Но! Было бы что защищать. Ну не шедевры это. Тут же, на форуме надергает эпизодов и даже не вникнув до конца, как все работает, давай прятать от других. Понимаю -  работа, конкуренты. Я на работе не жлоблюсь помогать другим. И я знаю и все знают, что меня переплюнуть - хлопотное дело. Нужно быть человеком увлеченным, а не просто на работе отбывать время. А вот это редкость:-(
Я сам - дурнее всякого примера! ...
 
The_Prist,хоть наставьте на путь истенный.  
Это Вы делаете отдельно установленным приложением (программой)?  
Или это заморочка с самим Excel-ем? (например дать общий доступ, а потом сохранить как .xla).  
Поверьте, код мне от Вас никчему, я хочу на свои "творения" такой замок наложить.  
Вот ломать научился(*только в личных целях, без распространения), а вот наоборот (т.е. сделать с нуля) никак.  
 
С уважением,  
Андрей.
 
АнДрЕй02 извините, если задел Вас. Но этот вопрос регулярно возникает. Форум(обсуждение - см. Википедия) по определению призван коллективно решать вопросы, а не помогать скрытию, запароливанию и т.д.
Я сам - дурнее всякого примера! ...
 
{quote}{login=АнДрЕй02}{date=18.11.2010 09:26}{thema=}{post}The_Prist,хоть наставьте на путь истенный.  
Это Вы делаете отдельно установленным приложением (программой)?  
Или это заморочка с самим Excel-ем? (например дать общий доступ, а потом сохранить как .xla).  
Поверьте, код мне от Вас никчему, я хочу на свои "творения" такой замок наложить.  
Вот ломать научился(*только в личных целях, без распространения), а вот наоборот (т.е. сделать с нуля) никак.  
С уважением,  
Андрей.{/post}{/quote}  
Дык, ответил Вам The_Prist от 18.11.2010, 20:40.
Я сам - дурнее всякого примера! ...
 
KukLP, ничего страшного, я все понимаю.  
И на этой страничке обсуждать и выложить метод блокировки - было глупо.  
Но раз все такие добрые, то зачем придумели и используют эти самые блокировки?  
У меня коммерческой заинтересованности в ломании и создании защит нет.  
 
Пост создал по одному вопросу, который сам же и решил (еще и поделился).  
Потому, что когда все сработало от начала до конца и получился нужный результат - чувства переполнили..Прибежал с работы домой и поделился радостью..А может еще кому сгодится (было бы приятно).  
 
Если бы я был Великим занатоком VBA - я бы не задавал свои вопросы, а отвечал на чжие. :)  
 
Ну если все так сложно...  
то будем считать что это просто шутка такая...
 
Андрей, так ведь Prist Вам действительно ответил: "поищите в инете Protect VBA" :-)
 
The_Prist, спасибо  - я понял.  
Просто не с первого раза ... :)  
"Protect VBA" - решил, что Вы на англ. выразились...  
Теперь знаю, что это название приложения. (до этого не слыхал про него)  
 
Всем спасибо!  
 
ТЕМА ЗАКРЫТА.
Страницы: 1
Читают тему
Наверх