2009-11-09 63 views
2

我有一個關於PowerPoint中VBA一個簡單的問題:如何在電源點VBA「活動文件」和「幻燈片」之間切換

這VBA代碼,我應該使用的「紙活動工作表」之間切換(我對不起,我不知道如何正確命名),在這個過程中,我正在對對象進行一些操作,而對於所有幻燈片,文件(或「字段」,對於我可憐的術語再次抱歉)?

例如,如果欲在「紙活性片」移動選定對象我會用這個宏:

ActiveWindow.Selection.ShapeRange.IncrementLeft 6#

,如果我想在幻燈片文件選定的幻燈片複製,我會使用此代碼:

ActiveWindow.Selection.Copy ActiveW indow.View.Paste

但是我怎樣才能連接這兩個腳本?比方說,我想要在「活動紙張」中移動一個對象,然後複製這個整張「紙張」,然後在幻燈片字段中創建它的雙胞胎,然後跳到雙張紙上對其中的對象進行操作。

不久,我該如何從VBA中的「紙張」切換到「幻燈片」並返回「紙張」?

(同樣,我在這裏可怕的術語對不起,我希望你明白我的意思在這裏。)

謝謝大家提前。

+2

活動工作表(主窗口)....幻燈片預覽側邊欄(左側) - 是你的意思嗎?這是否意味着你想**複製整個幻燈片?你只需簡單地編碼「ActiveWindow.Selection.SlideRange.Duplicate.SlideIndex」 – MikeD 2009-11-09 14:28:56

回答

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方法,所以如果你確實想明確地選擇一些東西,你可以。在某些情況下,您可能需要首先更改活動窗口的視圖類型 - 例如,您不能在幻燈片分類視圖中選擇幻燈片中的形狀。

+0

@brilliant即可 - 只需點擊答案旁邊的空白複選標記,仍然可以將gary's標記爲正確答案。 – 2011-03-02 16:57:54