2009-11-09 6 views
2

J'ai une simple question au sujet de PowerPoint VBA:Comment basculer entre "papier actif" et "diapositives" Power Point VBA

Quel code VBA dois-je utiliser pour basculer entre la "feuille active de papier" (I suis désolé je ne sais pas comment le nommer correctement), dans lequel je fais quelque chose avec l'objet (s), et le fichier (ou "champ", encore désolé pour ma mauvaise terminologie) où toutes les diapositives sont?

Par exemple, si je veux déplacer un objet sélectionné dans la "feuille active de papier" J'utiliser cette macro:

ActiveWindow.Selection.ShapeRange.IncrementLeft 6 #

et si je veux copier la diapositive sélectionnée dans le fichier diapositives, j'utiliser ce code:

ActiveWindow.Selection.Copy ActiveW indow.View.Paste

Mais comment puis-je connecter ces deux morceaux de script? Disons que je veux déplacer un objet dans la "feuille de papier active", puis copier cette "feuille" entière, puis créer son double dans le champ des diapositives, puis sauter dans la feuille de papier pour y faire quelque chose avec des objets?

En bref, comment passer de "papier" à "diapositives" et revenir à "papier" en VBA?

(Encore une fois, je suis désolé pour la terminologie horrible ici, j'espère que vous comprenez ce que je veux dire ici.)

Merci à tous à l'avance.

+2

feuille active (fenêtre principale) ... slide preview sidebar (à gauche) - c'est ce que vous voulez dire? cela signifie-t-il que vous voulez ** dupliquer ** une diapositive entière? vous pouvez le faire en codant simplement "ActiveWindow.Selection.SlideRange.Duplicate.SlideIndex" – MikeD

Répondre

2

Si vous enregistrez une macro dans PowerPoint et examinez le code, vous verrez qu'il utilise l'objet Selection pour à peu près tout. C'est parfois utile (car cela signifie qu'il est plus probable que le code fasse ce que vous voulez si vous sélectionnez un autre objet), mais pour quelque chose de plus qu'une macro très courte, il vaut mieux se référer directement aux objets, comme dans le code suivant :

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 

Notez que pratiquement tous les objets ont une méthode Select, donc si vous voulez explicitement sélectionner quelque chose, vous pouvez. Dans certains cas, vous devrez peut-être d'abord modifier le type d'affichage de la fenêtre active. Par exemple, vous ne pouvez pas sélectionner une forme sur une diapositive en mode trieuse de diapositives.

+0

@brilliant - vous pouvez toujours marquer gary comme la bonne réponse simplement en cliquant sur la coche vide à côté de sa réponse. –

Questions connexes