使用VBA增加复制的运动路径的长度

使用VBA增加复制的运动路径的长度,vba,powerpoint,Vba,Powerpoint,我试图在PowerPoint中创建一行重复的对象,每个对象的运动路径略短于下一个对象,如下所示: 我知道不能在VBA中从头开始添加路径动画,因此我使用VBA复制并粘贴对象及其运动路径,然后编辑运动路径 这是我的VBA代码: 子复制粘贴位置() 但是,输出如下所示: 是的,我意识到我正在尝试将变量插入字符串中。是的,正确的方法是“m0l0”和(x*0.7) 感谢@braX表示VML字符串的运动路径的路径属性。VML字符串是直线或贝塞尔曲线的坐标集合(用于 (用于powerpoint)这些值是幻灯

我试图在PowerPoint中创建一行重复的对象,每个对象的运动路径略短于下一个对象,如下所示:

我知道不能在VBA中从头开始添加路径动画,因此我使用VBA复制并粘贴对象及其运动路径,然后编辑运动路径

这是我的VBA代码: 子复制粘贴位置()

但是,输出如下所示:

是的,我意识到我正在尝试将变量插入字符串中。是的,正确的方法是
“m0l0”和(x*0.7)


感谢@braX

表示VML字符串的运动路径的路径属性。VML字符串是直线或贝塞尔曲线的坐标集合(用于 (用于powerpoint)这些值是幻灯片尺寸的分数。

您可以使用此函数生成递增的VML路径

Function GetPath(MaxSegments As Integer, Increment As Single)
Dim path As String
Dim i As Integer

path = "M 0 0 "

For i = 1 To MaxSegments
   path = path & "L 0 " & CStr(Increment * i) & " "
Next

path = path & " E"

GetPath = path
End Function
由于您正在复制/粘贴一个已包含运动路径的形状,我还将进行此更改,以确保粘贴时引用正确的运动路径:

With ActivePresentation.Slides(1).TimeLine
     .MainSequence(.MainSequence.Count).Behaviors(1).MotionEffect.path = GetPath(x, 0.7)
End With

我对powerpoint vba一无所知,但如果我被迫猜测,我会尝试<代码>“M0L0”和(x*0.7)
With ActivePresentation.Slides(1).TimeLine
     .MainSequence(.MainSequence.Count).Behaviors(1).MotionEffect.path = GetPath(x, 0.7)
End With