如何使用 vba 在 powerpoint 中应用特定布局?

Posted

技术标签:

【中文标题】如何使用 vba 在 powerpoint 中应用特定布局?【英文标题】:How to apply particular layout in powerpoint using vba? 【发布时间】:2012-02-27 04:36:27 【问题描述】:

我正在做一个项目。我制作了一个自定义主题,其中包括一张母版幻灯片和可能的布局。 所以基本上我想将特定的布局应用于特定的幻灯片。那么有没有办法通过编程来做到这一点。 喜欢:

activepresentation.Slides(1).Layout="layoutname"

我知道上面的代码是错误的,但我想要这样的东西通过它的名字来调用特定的布局。供您参考,我的布局名称是“没有客户徽标的标题”。

谢谢

【问题讨论】:

【参考方案1】:

ActivePresentation.Slides(1).CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(x)

其中 x 是布局集合中的索引,代表您的自定义布局。

与 PPT OM 中的大多数其他此类集合不同,此集合似乎无法接受索引或名称。它必须是一个索引。

如果您需要使用名称,请编写一个遍历 CustomLayouts 集合的函数,直到找到您要使用的名称并返回索引。

【讨论】:

嘿史蒂夫,实际上我解决了我的问题。是的,您说得对,它需要功能。我写了它。感谢您的评论。 愿意分享您的功能,@PratikGujarathi 吗?我知道这很简单,但它会为这个问题的未来观众节省一些时间。【参考方案2】:

使用以下代码

Sub ApplyLayoutByIndex()

    Dim sld As Slide
    Dim shp As Shape
    Dim xName As String
    Set sld = Application.ActiveWindow.View.Slide
    Dim xIndex As Integer

    xName = "A final slide"

    xIndex = getLayoutIndexByName(xName)

    If xIndex = 0 Then
    MsgBox "The layout name" & xName & "not found. Check the name of the layout", vbOKOnly
    Exit Sub
    End If

    sld.CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(xIndex)

    End Sub

    Function getLayoutIndexByName(xName As String) As Integer
    ActivePresentation.Designs(1).SlideMaster.CustomLayouts.Item (1)
    With ActivePresentation.Designs(1).SlideMaster.CustomLayouts
        For i = 1 To .Count
            If .Item(i).Name = xName Then
            getLayoutIndexByName = i
            Exit Function
            End If
        Next
    End With

    End Function

谢谢!

【讨论】:

以上是关于如何使用 vba 在 powerpoint 中应用特定布局?的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 将 Excel 图表粘贴到 Powerpoint 中

PowerPoint VBA:如何将动画开始事件设置为“ With Previous”

如何正确格式化项目符号和缩进 - Powerpoint VBA

如何将单元格区域作为表格从 Excel 复制到 PowerPoint - VBA

从外部 C# 应用程序自动化 PowerPoint VBA 加载项

使用 VBA 将 Excel 中的图表嵌入到 Powerpoint 中的指定占位符中