【问题标题】:How to switch between "active paper" and "slides" in Power Point VBA如何在 Powerpoint VBA 中的“活动纸张”和“幻灯片”之间切换
【发布时间】:2011-08-14 22:21:32
【问题描述】:

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

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

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

ActiveWindow.Selection.ShapeRange.IncrementLeft 6#

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

ActiveWindow.Selection.Copy ActiveWindow.View.Paste

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

简而言之,如何在 VBA 中从“paper”切换到“slides”再切换回“paper”?

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

提前谢谢大家。

【问题讨论】:

  • 活动工作表(主窗口) .... 滑动预览侧边栏(向左) - 这就是您的意思吗?那么这是否意味着您要复制整张幻灯片?您只需编写“ActiveWindow.Selection.SlideRange.Duplicate.SlideIndex”

标签: vba powerpoint


【解决方案1】:

如果您在 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 方法,因此如果您确实想显式选择某些内容,您可以。在某些情况下,您可能需要先更改活动窗口的视图类型 - 例如,您无法在幻灯片排序视图中选择幻灯片上的形状。

【讨论】:

  • @brilliant - 您仍然可以将 gary 的答案标记为正确答案,只需单击答案旁边的空心复选标记即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 1970-01-01
相关资源
最近更新 更多