Excel 如何更改Powerpoint形状的图像?

Excel 如何更改Powerpoint形状的图像?,excel,vba,powerpoint,Excel,Vba,Powerpoint,这是我的PowerPoint文件: 这是我更改形状图像的代码: 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 o

这是我的PowerPoint文件:

这是我更改形状图像的代码:

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")

如何更改形状对象的图像?

您试图做的是创建填充,但这不起作用,因为所讨论的形状是图片。你可以在PowerPoint中自己试一试。为图片设置填充无效,因为原始图像仍然可见。这就是为什么你看不到结果。
你不能改变图片本身,你必须删除它,然后替换。因此,您可以修改代码的必要部分,如下所示:

Set shp=oSlide.Shapes(“图片”)
'捕获现有图片的属性,如位置和大小
小水电
t=0.Top
l=.左
h=.高度
w=宽度
以
shp.删除“删除旧形状”
设置shp=oSlide.Shapes.AddPicture(“C:\Users\Public\Pictures\Sample Pictures\jummy.jpg”、msoFalse、msoTrue、l、t、w、h)
shp.Name=“图片”
shp.SCALE重量系数:=1,相对原始尺寸:=msoTrue
shp.标度宽度系数:=1,相对原始尺寸:=msoTrue
当然,可以将初始形状设置为矩形(或其他图形对象),然后用图片填充。在这种情况下,您始终可以更改填充和用于填充的图片,如下所示:

Dim link as String'将其设置为要用于填充的图片的地址
oSlide.Shapes(shp.Fill.UserPicture(链接)

但是如果原始形状本身就是一张图片,通常不能用另一张图片填充。

它怎么不工作?它会给出一个错误吗?还是什么都不做?它什么都不做。它仍然显示旧图像。形状“图片”存在吗?是的。我设置了形状的名称。不能使用填充来更改图片。请看下面的答案。我尝试了以下代码:它可以更改:Dim newShape As Object Set newShape=oSlide.Shapes.AddShape(MsoAutoShapeType.msoShapeRectangle,0,0,100,50)newShape.Fill.UserPicture(“C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg”)newShape.Fill.UserPicture(“C:\Users\Public\Pictures\Sample Pictures\jummy.jpg”)。oSlide.Shapes(“Picture”)之间有什么区别还有newShape?在这种情况下,您的原始形状不再是图片。它是一个用图片填充的矩形。在这种情况下,您可以随时更改填充,但如果原始形状是图片,则不能更改填充。我可以更新答案以反映这一点。如果您使用的是图片填充的形状,您还需要确保该形状是aspect比率与新填充图片的纵横比匹配;否则,图片将失真。另一方面,如果使用图片填充形状更改图片,则应用于原始形状的任何动画都将保留。