我有一个关于PowerPoint VBA的简单问题:
我应该使用哪个VBA代码在“活动纸张”之间切换(对不起,我不知道如何正确命名),其中我正在使用对象进行操作,以及所有幻灯片的文件(或“字段”,再次对不起我的不良术语)?
例如,如果我想在“活动纸张”中移动选定的对象,我会使用此宏:
ActiveWindow.Selection.ShapeRange.IncrementLeft 6#
如果我想在幻灯片文件中复制选定的幻灯片,我会使用以下代码:
ActiveWindow.Selection.Copy ActiveWindow.View.Paste
但是如何连接这两个脚本呢?假设我想在“活动纸张”中移动一个对象,然后复制整个“工作表”,然后在幻灯片字段中创建它的双胞胎,然后跳进双张纸,用那里的对象做一些事情?
很快,如何在VBA中从“纸张”切换到“幻灯片”并返回“纸张”?
(再次,我很抱歉这里有可怕的术语,我希望你能理解我的意思。)
提前谢谢大家。
答案 0 :(得分: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方法,所以如果你想明确选择某些东西,你可以。在某些情况下,您可能需要首先更改活动窗口的视图类型 - 例如,在幻灯片分类视图中,您无法在幻灯片上选择形状。