插入图像图像占位符excel vba powerpoint

时间:2016-10-31 08:47:02

标签: excel image vba powerpoint placeholder

我正在编写一个excel VBA宏,它从其他演示文稿生成一个powerpoint演示文稿。最后生成内容幻灯片。根据主题,脚本应将此主题的相关图片复制到图像占位符。目前,内容幻灯片使用正确的文本框(主题名称)填充,但插入图像不起作用。

插入伪代码:

  1. 循环浏览所有幻灯片
  2. 如果您找到一张形状名为"内容"然后:
  3. 复制位于" image-path"的图像到图像占位符" FeaturePic2" (例如)。
  4. 我将代码缩减为一个例子,但这不起作用。代码的作用是: 将图像路径图片复制到每张幻灯片,即使没有名为" 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>>
    

    其他可能有用的问题:如何删除具有特定名称的占位符?

    亲切的问候和提前谢谢

1 个答案:

答案 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

接下来,是否有一些特定的理由将图片放入占位符而不是仅仅将其添加为新的图片形状?它会更简单/更可靠。

如果必须使用占位符,则可能必须将虚拟文本或其他内容放入任何不希望图片随机掉落的占位符中,然后再删除虚拟文本。