Страницы: 1
RSS
VBA: перекрашивание рисунка
 

Здравствуйте, подскажите пожалуйста, как можно с помощью средств vba перекрасить рисунок в какой ни будь другой цвет. В excel 7 запускаю запись макроса, на панели быстрого доступа выбираю формат / перекрасить / другие варианты, выбираю любой из цветов, рисунок перекрашивается, но макроредактором ничего не записывается. Думаю, нет смысла прикреплять пример. Искал в поисковиках и по форуму, но ничего схожего не нашел, только лишь форматирование цвета фигур.

 
здравствуйте
Цитата
nerf написал:
нет смысла прикреплять пример
ошибаетесь
Из описания непонятно, что вы имеете ввиду, т.к. заливку ячеек (если из них состоит рисунок) макрорекордер прекрасно пишет…
Изменено: Jack Famous - 19.03.2018 19:17:45
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал: макрорекордер прекрасно пишет
возможно и нет
Цитата
nerf написал: excel 7
2007
рекордер так себе,
но в данном случае не уверен
Цитата
Jack Famous написал: шиjаетесь
таки да,
пример лучше прикрепить
 
Рисунок состоит из вставленного обычного изображения, жму курсивом мышки на рисунок, на панели быстрого доступа выбираю формат / перекрасить / другие варианты, выбираю цвет и рисунок меняет цвет. Если делаю тоже самое, но с записью макроса, то код макроса по итогу получается пустой. Возможно, такое не предусмотрено возможностями офиса.. В файле два изображения, первый изначальный рисунок, а второй после того как вручную в экселе перекрасил.  
 
nerf, а можно поинтересоваться, зачем делать в Excel то, для чего он не предназначен…
Такие бесплатные программы как, например, XnView и XnConvert прекрасно справляются с пакетной обработкой изображений по шаблону
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, про программы знаю, но было желательно выполнять перекрашивание в рамках экселя. Решения данного вопроса не нашел, но сейчас нашел как обойтись без перекрашивания. Но если кто сталкивался с тем же чем и я, и знает решение данного вопроса, то может кому ни будь пригодится ответ на вопрос. Принципе можно тему закрывать)  
 
Доброе время суток
Попробуйте поковырять Shape.Fill.PictureEffects
 
Изменить фон:
Код
Sub test()
Dim obj As Object
For Each obj In ActiveSheet.Shapes
obj.Fill.ForeColor.RGB = Rnd * 16777215
Next
End Sub
 
nerf, открыл ваш пример, оба одинаковых рисунка :)

Вам типа этого нужно?
Код
    Set Shape = ActiveSheet.Shapes.Range(Array("Picture 1"))
    Shape.Fill.ForeColor.RGB = RGB(75, 77, 89)
    Shape.Fill.TwoColorGradient msoGradientHorizontal, 1
 
nerf, MSDN говорит что метод recolor доступен только в Publisher. Следовательно, могу допустить что то, что задумано , не получится прямым методом.
Изменено: БМВ - 19.03.2018 21:06:36
По вопросам из тем форума, личку не читаю.
 
Андрей VG, спасибо, можно попробовать покопаться возможно что ни будь получится)))  
 
Anchoret, Jungl, в ваших случаях перекрашивается фон, а было задумано чтобы перекрашивался сам рисунок, так же как если перекрашивать через свойства "перекрасить", но все равно спасибо))

БМВ, я тоже уже больше склоняюсь к вашему мнению.  
 
Теме больше года, но может кому то пригодится как вариант:
Код
 Worksheets("Îáùèå ñïèñêè").Shapes.Range(Array("Picture 1")).PickUp
 ActiveSheet.Shapes.Range(Array("Picture 36")).Apply

где Picture 1 - перекрашеный рисунок-шаблон.
Страницы: 1
Наверх