PowerPoint VBA - Für jede Form in jedem Layout in Masterview
-
15-10-2019 - |
Frage
Ich versuche, die Sprache jeder Form in jedem CustomLayout in einer PowerPoint -Vorlage programmatisch zu ändern, und ich kann nicht herausfinden, wie das geht. Ich habe es schon einmal gemacht, aber ich kann das Makro nicht mehr finden, also weiß ich nicht wirklich, wie ich es gemacht habe. Ich konnte jedoch jedes benutzerdefinierte Layout auswählen. Aber ich muss jedes Textfeld in jedem Layout durchlaufen und auch die Sprache auswählen. Mein Problem ist es, jede Form zu zielen. Wie mache ich das?
Das habe ich so weit:
ActiveWindow.ViewType = ppViewSlideMaster
For Each oLayout In ActivePresentation.SlideMaster.CustomLayouts
oLayout.Select
Next
Dies schenkt im Grunde jedes Layout durch. Aber ich kann nicht herausfinden, wie ich jeden Platzhalter auswählen kann? Wie mache ich das?
Bearbeiten: Auflösung ist jetzt:
For Each oLayout In ActivePresentation.SlideMaster.CustomLayouts
oLayout.Select
Dim oShape As Shape
For Each oShape In oLayout.Shapes
oShape.Select
Next
Next
Lösung
Durchschleifen oLayout.Shapes
, oder vielleicht oLayout.Shapes.Placeholders
.
Andere Tipps
Danke euch zwei. Ich brauchte eine Lösung, um ein eingebettetes Excel -Objekt auf der Master -Folie zu aktualisieren. Dies führte mich zu der perfekten Lösung
'loops through all shapes in slidemaster
Dim oShape As Shape
For Each oShape In ActivePresentation.SlideMaster.Shapes
oShape.Select
'checks for excel object (type=7)
If oShape.Type = msoEmbeddedOLEObject Then
oShape.OLEFormat.Activate
ActiveWindow.Selection.Unselect 'deactivates shape
End If
Next