【问题标题】:How can I apply a PowerPoint VBA script to a selection of shapes?如何将 PowerPoint VBA 脚本应用于选定的形状?
【发布时间】:2018-06-03 07:05:34
【问题描述】:

我想在一张幻灯片上选择多个形状,然后对所有选定的形状运行宏。例如:我想将形状的动画延迟时间增加给定值。 注意:某些形状可能有多个动画。

到目前为止,我得到了以下代码。它可以解决问题,但它适用于当前幻灯片上的所有形状。

Sub ActiveSlideShapes_DelayInc()
    Dim osld   As Slide
    Dim i      As Long
    Dim a      As Integer
    Dim oeff   As Effect
    Const sngDel As Single = 0.1

    Set osld = ActiveWindow.Selection.SlideRange(1)

    For i = osld.TimeLine.MainSequence.Count To 1 Step -1
        Set oeff = osld.TimeLine.MainSequence(i)
        With oeff
            .Timing.TriggerDelayTime = .Timing.TriggerDelayTime + sngDel
        End With
    Next i
End Sub

另一种解决方案是选择实际的 TimeLine 元素而不是形状。然后只对那些选定的动画执行“For...Next”循环。当某些形状附有几个不同的动画时,这将是更优雅的解决方案。这可以吗?

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

    尝试使用 selection.shaperange,它应该循环遍历每个选定的形状。

    For Each Shp In Selection.ShapeRange
     With Shp
                .Timing.TriggerDelayTime = .Timing.TriggerDelayTime + sngDel
            End With
    Next
    

    【讨论】:

    • 这给了我一个编译错误:“找不到方法或数据成员。”第二个“.Timing”突出显示为错误。 (这很奇怪......如果有的话,我希望“.Timing”的第一个实例会产生错误)。
    • 既然sngDel是一个常数,你能不能试着在代码中用0.1代替它?
    • Shape 对象没有 .Timing 属性,这是错误消息试图告诉您的内容。我想错误发生在 .Timing 的第二个实例上,因为您要求它在第一个实例中应用它之前读取该属性的值。
    • 虽然我对 PPT 中的动画不太了解,但您能否从 Microsoft 支持网站上解释一下。 “您可以将多种动画效果应用于单个文本字符串或对象,例如图片、形状或 SmartArt 图形。”
    • 它也不适用于 0.1。 @Steve Rindsberg:如果 Shape 对象没有 .Timing 属性,这是否意味着这根本不可能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多