Возникла задача программно заменить существующее изображение в ячейке Само изображение является объектом Shape. Вариант 1. Удаление изображения и на его место вставка нового с теми же параметрами выравнивания и т.п. Вопросов нет. Но хотелось бы Вариант 2. Замена картинки в существующий shape. Через интерфейс Excel это просто "Изменить рисунок..". Запись макроса ничего не дает. Изучение свойств создаваемого shape не дало наводки.. Что за код соответствует "Изменить рисунок.."
[vba]
Код
Dim r_labirint as range Dim shp
set r_labitint = Range("A1:J10") With r_labirint.Cells(1, 1) On Error Resume Next Set shp = .Worksheet.Shapes.AddPicture(ActiveWorkbook.Path + "\wall.png", False, True, .Left, .Top, .Width, .Height) shp.Name = "Wall" + Str(1) End With
' Далее необходимо в объекте shp заменить картинку на ActiveWorkbook.Path + "\wall2.png"
[/vba]
Добрый день
Возникла задача программно заменить существующее изображение в ячейке Само изображение является объектом Shape. Вариант 1. Удаление изображения и на его место вставка нового с теми же параметрами выравнивания и т.п. Вопросов нет. Но хотелось бы Вариант 2. Замена картинки в существующий shape. Через интерфейс Excel это просто "Изменить рисунок..". Запись макроса ничего не дает. Изучение свойств создаваемого shape не дало наводки.. Что за код соответствует "Изменить рисунок.."
[vba]
Код
Dim r_labirint as range Dim shp
set r_labitint = Range("A1:J10") With r_labirint.Cells(1, 1) On Error Resume Next Set shp = .Worksheet.Shapes.AddPicture(ActiveWorkbook.Path + "\wall.png", False, True, .Left, .Top, .Width, .Height) shp.Name = "Wall" + Str(1) End With
' Далее необходимо в объекте shp заменить картинку на ActiveWorkbook.Path + "\wall2.png"
покопался в свойствах shape - тоже не нашел ссылок или путей. А зачем менять именно в shape? вы присваиваете shap`у имя, если нужно по этому имени ищете адрес ячейки с изображением и работаете уже с ячейкой - удалить, вставить.
покопался в свойствах shape - тоже не нашел ссылок или путей. А зачем менять именно в shape? вы присваиваете shap`у имя, если нужно по этому имени ищете адрес ячейки с изображением и работаете уже с ячейкой - удалить, вставить.excelhelprus
excelhelprus, Да, имя у shape есть и удалить, вставить - это первый вариант. Но пытливый ум хочет знать: если в контекстном меню есть "Изменить рисунок...", то значит можно это сделать программно. К тому же, как я полагаю, изменить как минимум на одно действие меньше, чем удалить+вставить.
excelhelprus, Да, имя у shape есть и удалить, вставить - это первый вариант. Но пытливый ум хочет знать: если в контекстном меню есть "Изменить рисунок...", то значит можно это сделать программно. К тому же, как я полагаю, изменить как минимум на одно действие меньше, чем удалить+вставить.pa_mfc
Sub ertert() With Range("A1") .Parent.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height).Name = "Wall1" With .Parent.Shapes("Wall1") .Fill.UserPicture ThisWorkbook.Path & "\wall.png" MsgBox "wall.png" .Fill.UserPicture ThisWorkbook.Path & "\ACDSee Classic.png" MsgBox "ACDSee Classic.png" .Fill.UserPicture ThisWorkbook.Path & "\Ad Aware SE.png" MsgBox "Ad Aware SE" End With End With End Sub
[/vba] или лучше так [vba]
Код
Sub ertert22() With Range("A1") With .Parent.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height) .Name = "Wall1" .Fill.UserPicture ThisWorkbook.Path & "\wall.png" MsgBox "wall.png" .Fill.UserPicture ThisWorkbook.Path & "\ACDSee Classic.png" MsgBox "ACDSee Classic.png" .Fill.UserPicture ThisWorkbook.Path & "\Ad Aware SE.png" MsgBox "Ad Aware SE" End With End With End Sub
[/vba]
типа такого, наверное (проверять по F8) [vba]
Код
Sub ertert() With Range("A1") .Parent.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height).Name = "Wall1" With .Parent.Shapes("Wall1") .Fill.UserPicture ThisWorkbook.Path & "\wall.png" MsgBox "wall.png" .Fill.UserPicture ThisWorkbook.Path & "\ACDSee Classic.png" MsgBox "ACDSee Classic.png" .Fill.UserPicture ThisWorkbook.Path & "\Ad Aware SE.png" MsgBox "Ad Aware SE" End With End With End Sub
[/vba] или лучше так [vba]
Код
Sub ertert22() With Range("A1") With .Parent.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height) .Name = "Wall1" .Fill.UserPicture ThisWorkbook.Path & "\wall.png" MsgBox "wall.png" .Fill.UserPicture ThisWorkbook.Path & "\ACDSee Classic.png" MsgBox "ACDSee Classic.png" .Fill.UserPicture ThisWorkbook.Path & "\Ad Aware SE.png" MsgBox "Ad Aware SE" End With End With End Sub