2

我有一个关于 PowerPoint VBA 的简单问题:

我应该使用哪个 VBA 代码在“活动纸张”(对不起,我不知道如何正确命名它)、我正在对对象做某事以及文件(或“字段”,再次为我糟糕的术语感到抱歉)所有幻灯片都在哪里?

例如,如果我想在“活动纸张”中移动选定的对象,我会使用这个宏:

ActiveWindow.Selection.ShapeRange.IncrementLeft 6#

如果我想在幻灯片文件中复制选定的幻灯片,我会使用以下代码:

ActiveWindow.Selection.Copy ActiveWindow.View.Paste

但是我怎样才能连接这两个脚本呢?假设我想在“活动纸”中移动一个对象,然后复制整个“纸”,然后在幻灯片字段中创建它的孪生,然后跳到孪生纸中对那里的对象做一些事情?

很快,我如何在 VBA 中从“纸张”切换到“幻灯片”并返回到“纸张”?

(再次,我很抱歉这里的术语很糟糕,我希望你明白我的意思。)

谢谢大家。

4

1 回答 1

2

如果您在 PowerPoint 中录制宏并检查代码,您会发现它使用 Selection 对象来处理几乎所有事情。这有时很有用(因为这意味着如果您选择另一个对象,代码更有可能执行您想要的操作),但是对于除了非常短的宏之外的任何内容,最好直接引用对象,如下面的代码所示:

Sub Test()

    ' Get the active presentation

    Dim oPresentation As Presentation
    Set oPresentation = ActivePresentation

    ' Get the first slide in the presentation

    Dim oSlide As Slide
    Set oSlide = oPresentation.Slides(1)

    ' Get the first shape on the slide

    Dim oShape As Shape
    Set oShape = oSlide.Shapes(1)

    ' Nudge the shape to the right

    oShape.Left = oShape.Left + 1

    ' Copy the whole slide

    oSlide.Copy

    ' Paste the slide as a new slide at position 2

    Dim oNewSlides As SlideRange
    Set oNewSlides = oPresentation.Slides.Paste(2)

    ' Get a reference to the slide we pasted

    Dim oNewSlide As Slide
    Set oNewSlide = oNewSlides(1)

    ' Get the first shape on the NEW slide

    Dim oNewShape As Shape
    Set oNewShape = oNewSlide.Shapes(1)

    ' Nudge the shape to the right

    oNewShape.Left = oNewShape.Left + 1

End Sub

请注意,几乎每个对象都有一个 Select 方法,因此如果您确实想显式选择某些内容,您可以。在某些情况下,您可能需要先更改活动窗口的视图类型 - 例如,您无法在幻灯片排序视图中选择幻灯片上的形状。

于 2009-11-09T14:40:42.847 回答