VBA - Powerpoint 2010 ppShp.Fill.UserPicture无法更新图片

3
我有一个Powerpoint演示文稿,其中包含一个VBA脚本用于每周更新图片。最近,我添加了2张额外的幻灯片和脚本来更新这些图像。
新的图像不会更新,也不会抛出错误。如果我逐步执行过程,它会转到正确的幻灯片,选择正确的形状,但是 Call ppShp.Fill.UserPicture("blah_blah.png") 不能替换图像。
如果我将该行复制到其中一个正常工作的幻灯片上,它可以工作。
在下面的示例中,第一个可行,第二个不可行。
'FEOL *******************************************************************
    ActiveWindow.View.GotoSlide (15)
    Set ppShp = ActivePresentation.Slides(15).Shapes("FEOL")
    ppShp.Select
    Call ppShp.Fill.UserPicture("D:\MIT Trends\Images\Feol_Composite.png")

   'LICONSEM *******************************************************************
    ActiveWindow.View.GotoSlide (16)
    Set ppShp = ActivePresentation.Slides(16).Shapes("LICONSEM")
    ppShp.Select
    Call ppShp.Fill.UserPicture("D:\MIT Trends\Images\LICONSEM.png")

我可以看到它跳转到正确的幻灯片并选择正确的形状(在“排列”面板中命名)。但它没有填充。我尝试更改形状ID,但结果相同。我知道形状名称和图像名称是正确的。我甚至尝试了剪切/粘贴以确保。

使用第一部分的图像来填充第二部分不起作用。使用第二部分的图像来填充第一部分可以。我觉得我肯定错过了什么很明显的东西。


已修复但未解释。我复制了幻灯片15以创建新的幻灯片16。我将形状名称复制到新的幻灯片16中,替换了旧的形状名称。现在它可以正常工作。我不理解两者之间的区别。 - user1330705
这个应该不重要,但你尝试过不使用 Call 吗?(你不需要使用这个关键字来调用对象的方法)。或者你可以尝试删除当前形状,并按照其中一个答案这里建议添加一个带有图片的新形状。 - David Zemens
2个回答

0
请查看附加的图片中的代码。 首先,您需要在PPT中创建形状,然后运行代码。enter image description here

1
请不要在帖子中发布代码图片,请将其提供为文本格式(参考:https://stackoverflow.com/help/how-to-ask)。 - Sandra Rossi

0
Sub imagerep()
Dim EptApp As Object
Dim Ppthoc As Object
Set Ppthpp = CreateObject ("PowerPoint.Application”)
Set PptDoc = PptApp.Presentations.Open ("C:\Users\TarunReddyNuthula\Desktop\gprop2.pprx”, msoCTrue)

EptDoc.Slides (1) .Shapes ("newimage”) .Fill.UserPicture ("
£nd Sub

用户\TarunReddyNuthula\桌面\zoomcarAl . Jpg


1
我将代码移动到格式化中,但这是OCR吗?因为End是“£”然后是“nd”? - James Risner
1
目前你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接