我正在编写一个excel VBA宏,它从其他演示文稿生成一个powerpoint演示文稿。最后生成内容幻灯片。根据主题,脚本应将此主题的相关图片复制到图像占位符。目前,内容幻灯片使用正确的文本框(主题名称)填充,但插入图像不起作用。
插入伪代码:
我将代码缩减为一个例子,但这不起作用。代码的作用是: 将图像路径图片复制到每张幻灯片,即使没有名为" Content"的形状。其次它没有填充" FeaturePic2" (这是此幻灯片上的第二个占位符),但填充它找到的第一个占位符。
'<<BEGIN>>
On Error Resume Next
template_path = "C:\test\test.pptx"
image_path = "C:\test\test.jpg"
Set pres_template = pptApp.Presentations.Open(template_path)
For Each slide In pres_template.Slides
If Shape.Name = ("Content") Then
slide.Shapes.Placeholders("FeaturePic2").Select msoTrue
slide.Shapes.AddPicture Filename:=image_path, LinkToFile:=False, SaveWithDocument:=True, Left:=10, Top:=10
End If
Next slide
'<<END>>
其他可能有用的问题:如何删除具有特定名称的占位符?
亲切的问候和提前谢谢
答案 0 :(得分:0)
下面的更改应该有助于获得正确的图片,假设有一张名为“内容”的图片:
On Error Resume Next
template_path = "C:\test\test.pptx"
image_path = "C:\test\test.jpg"
Set pres_template = pptApp.Presentations.Open(template_path)
' Always DIM your variables and
' Never use reserved names as variable names
'
Dim oSl as slide
Dim oSh as shape
For Each oSl In pres_template.Slides
For each oSh in oSl.Shapes
If oSh.Name = ("Content") Then
oSl.Shapes.Placeholders("FeaturePic2").Select msoTrue
oSl.Shapes.AddPicture Filename:=image_path, LinkToFile:=False, SaveWithDocument:=True, Left:=10, Top:=10
End If
Next ' slide
接下来,是否有一些特定的理由将图片放入占位符而不是仅仅将其添加为新的图片形状?它会更简单/更可靠。
如果必须使用占位符,则可能必须将虚拟文本或其他内容放入任何不希望图片随机掉落的占位符中,然后再删除虚拟文本。