![]() |
betrifft MS Powerpoint |
Problembeschreibung:
Sie wollen Folien mit Interaktionen während der Präsentation versehen. Sie können jedoch nur Aktionen auf Objekte / Shapes anwenden oder deren Eigenschaften per VBA ändern, wenn der Name des Shapes bekannt ist. Über den Namen können Shapes direkt angesprochen werden. Da Powerpoint den Namen dynamisch und von der Erstellungsreihenfolge der Shapes abhängig vergibt, ist der Name quasi unbekannt.
Leider bietet Powerpoint unter der normalen Benutzoberfläche keine Möglichkeit, die Objekte / Shapes zu benennen.
Lösungsidee
Mittels VBA können Objekte / Shapes im Powerpoint benannt oder umbenannt werden, indem die Name-Eigenschaft des Shapes geändert wird. Nachfolgender Programmcode stellt diese Möglichkeit zur Verfügung.
Programmcode
'Prozedur zum umbenennen eines Shapes / Objekts
Sub Objekte_benennen(ByVal Objekt As Shape)
'benennt das übergebene Shape um
Dim alter_Name As String
Dim neuer_Name As String
'Name des Shapes ermitteln
alter_Name = Objekt.Name
'neuen Namen mit Input-Box erfragen
neuer_Name = InputBox("Neuer Name:", , alter_Name)
If Len(Trim(neuer_Name)) = 0 Then Exit Sub 'Abbruch durch Eingabe von Nichts
If neuer_Name <> alter_Name Then Objekt.Name = neuer_Name 'sonst Shape neuen Namen geben
End Sub
'Prozedur zum Benennen der selektierten Objekte
Sub Selektiertes_Objekt_benennen()
'benennt die ausgewählten Shapes um
Dim Objekt As Shape
For Each Objekt In ActiveWindow.Selection.ShapeRange
Objekt.Select
Objekte_benennen Objekt
Next Objekt
End Sub
'Prozedur zum Benennen aller Objekte in der Folie
Sub Alle_Objekte_benennen()
'benennt alle Shapes in der Folie um
Dim Objekt As Shape
For Each Objekt In ActiveWindow.Selection.SlideRange.Shapes
Objekt.Select
Objekte_benennen Objekt
Next Objekt
End Sub