Как изменить изображение формы Powerpoint? - PullRequest
1 голос
/ 20 июня 2019

Это мой файл PowerPoint: https://www.dropbox.com/s/7my3ubmnv7rxv8y/temp.pptx?dl=0

Это мой код для изменения изображения формы:

Dim presentation As Object
Set ppt = CreateObject("PowerPoint.Application")    
Set presentation = ppt.Presentations.Open2007("D:\2018\temp.pptx", MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoTrue)
Dim oSlide As Object            
Set oSlide = presentation.Slides(1)
oSlide.Shapes("Picture").Fill.UserPicture ("C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg")

Как мне изменить изображение объекта Shape?

1 Ответ

2 голосов
/ 20 июня 2019

То, что вы пытаетесь сделать, - это создать заливку, которая не работает, потому что рассматриваемая форма - это картинка. Вы можете попробовать это сами в PowerPoint. Установка заливки для изображения не имеет никакого эффекта, поскольку исходное изображение все еще видно. Вот почему вы не видите результата.
Вы не можете изменить само изображение, вы должны удалить его, а затем заменить. Таким образом, вы можете изменить необходимый раздел вашего кода следующим образом:

Set shp = oSlide.Shapes("Picture")
'Capture properties of the existing picture such as location and size
With shp
    t = .Top
    l = .Left
    h = .Height
    w = .Width
End With

shp.Delete 'Delete old shape

Set shp = oSlide.Shapes.AddPicture("C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg", msoFalse, msoTrue, l, t, w, h)

shp.Name = "Picture"
shp.ScaleHeight Factor:=1, RelativeToOriginalSize:=msoTrue
shp.ScaleWidth Factor:=1, RelativeToOriginalSize:=msoTrue

Конечно, вы можете сделать свою первоначальную форму прямоугольником (или другими объектами рисования), а затем заполнить рисунком. В этом случае вы всегда можете изменить Fill и используемую для этого картинку, примерно так:

Dim link as String 'set this to the address of the picture you want to use to fill
oSlide.Shapes(shp).Fill.UserPicture(link)

Но если исходной формой является само изображение, вы обычно не можете заполнить его другим изображением.

...