Wie erstelle und füge ich Formen in PowerPoint mit VBA ein?

Wie erstelle und füge ich Formen in PowerPoint mit VBA ein?

Vor ein paar Tagen wollte ich die eher banale Aufgabe des Erstellens einiger PowerPoint-Folien automatisieren. Bei der Automatisierung von PowerPoint arbeiten Sie normalerweise mit der Sammlung Slides and Shapes. Folien sind ziemlich selbsterklärend, und Formen sind so ziemlich alles andere, einschließlich Textfelder, Aktionsschaltflächen, Medienobjekte, Beschriftungen, Bilder, Legenden, Flussdiagramme und so weiter und so fort. Obwohl ich die Techniken mit PowerPoint präsentieren werde, ist ein Teil der Syntax tatsächlich ziemlich gut auf Microsoft Word und Excel anwendbar.

Um es noch einmal zusammenzufassen: Bevor Sie mit der Entwicklung von VBA-Makros in PowerPoint beginnen, müssen Sie die Registerkarte „Entwicklung“ aktivieren .

Beginnen wir zunächst damit, automatisch eine Präsentation mit einigen Folien zu erstellen, wie in diesem Tutorial gezeigt: Erstellen einer Präsentation in VBA .

Jetzt können wir anfangen, mit Shapes zu arbeiten. Lassen Sie uns zunächst fortfahren und den VBA-Editor öffnen, indem Sie Alt + F11 drücken. Wenn Sie dem vorherigen Tutorial gefolgt sind, sollten Sie Modul 1 in Ihrer Modulliste haben (wie unten gezeigt).

Arbeiten mit Shapes mit VBA

Hinzufügen eines Textfeldes mit VBA

Wir beginnen damit, unserer ersten Folie in der Präsentation ein vertikales Textfeld hinzuzufügen. Fügen Sie Modul1 den folgenden Code hinzu, klicken Sie dann auf die Schaltfläche Speichern (Strg+s) und führen Sie Ihr Makro aus (drücken Sie F5 oder klicken Sie auf Run Sub/User Form).

Sub CreateTextBox()
Set MySlide = ActivePresentation.Slides(2)

    With MySlide.Shapes
        .AddTextbox(Orientation:=msoTextOrientationVertical, _
         Left:=90, Top:=200, Width:=80, _
         Height:=200).TextFrame.TextRange.Text _
        = ("This is my vertical text box")

End With

End Sub

Beachten Sie, dass Sie die Größe Ihrer Textfelder mit VBA recht einfach ändern können. In diesem Fall ändern wir die Größe der ersten Form auf der zweiten Folie, Sie können sie nach Bedarf ändern.

Sub ResizeText()
Set MyShape = ActivePresentation.Slides(2).Shapes(1)

'Add your required dimensions as needed below
   With MyShape
         .Width = 200
         .Height = 35

End With
End Sub

Texteffekte mit VBA

Nehmen wir nun an, wir wollen allen Folien der Präsentation ein Textfeld hinzufügen, dieses Mal etwas optisch ansprechender. Dazu verwenden wir VBA, um benutzerdefinierte Texteffekte zu erstellen, die wir in eine oder mehrere Folien der Präsentation einbetten können. Wir werden zuerst die Präsentationsfolien durchlaufen und dann den Texteffekt nach Bedarf hinzufügen.

Sub SetEffects()

Dim i As Integer

For i = 1 To ActivePresentation.Slides.Count
    ActivePresentation.Slides(i) _
    .Shapes.AddTextEffect msoTextEffect12, "Draft for Review", _
    "Segoe UI", 32, msoTrue, msoTrue, 650, 50
Next

End Sub

Hier das Ergebnis ;-):

Wie erstelle und füge ich Formen in PowerPoint mit VBA ein?

Beachten Sie, dass Sie auch ein einfaches Wasserzeichen verwenden können, um dieses spezielle Ergebnis zu erzielen.

PowerPoint-Callouts mit VBA

Unser nächstes Beispiel wird Callouts zu Ihrer Präsentation hinzufügen. In diesem Beispiel fügen wir der zweiten Folie ein Callout hinzu.

Sub CreateCallout()

ActivePresentation.Slides(2).Shapes.AddCallout(Type:=msoCalloutTwo, Left:=200, Top:=50, _  Width:=300, Height:=100).TextFrame.TextRange.Text = "My Callout"

End Sub

Festlegen von Eigenschaften für eine Form

Viele Formatierungseigenschaften von Formen werden nicht durch Eigenschaften festgelegt, die direkt auf das  Shape-  oder  ShapeRange  -Objekt angewendet werden. Stattdessen werden verwandte Formattribute unter sekundären Objekten gruppiert, z. B. dem  FillFormat-  Objekt, das alle Eigenschaften enthält, die sich auf die Füllung der Form beziehen, oder dem  LinkFormat-  Objekt, das alle Eigenschaften enthält, die nur für verknüpfte OLE-Objekte gelten. Um Eigenschaften für eine Form festzulegen, müssen Sie zunächst das Objekt zurückgeben, das den Satz verwandter Formattribute darstellt, und dann die Eigenschaften dieses zurückgegebenen Objekts festlegen. Beispielsweise verwenden Sie die  Fill- Eigenschaft, um das FillFormat- Objekt  zurückzugeben   , und legen dann die  ForeColor-  Eigenschaft des  FillFormat-  Objekts fest, um die Füllvordergrundfarbe für die angegebene Form festzulegen, wie im folgenden Beispiel gezeigt.

VB

Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)

Eine Eigenschaft oder Methode gleichzeitig auf mehrere Formen anwenden

In der Benutzeroberfläche gibt es einige Vorgänge, die Sie mit mehreren ausgewählten Formen ausführen können; Sie können beispielsweise mehrere Formen auswählen und alle einzelnen Füllungen gleichzeitig festlegen. Es gibt andere Vorgänge, die Sie nur ausführen können, wenn eine einzelne Form ausgewählt ist. Beispielsweise können Sie den Text in einer Form nur bearbeiten, wenn eine einzelne Form ausgewählt ist.

In Visual Basic gibt es zwei Möglichkeiten, Eigenschaften und Methoden auf eine Reihe von Formen anzuwenden. Mit diesen beiden Möglichkeiten können Sie jeden Vorgang, den Sie an einer einzelnen Form ausführen können, auch an einer Reihe von Formen ausführen, unabhängig davon, ob Sie denselben Vorgang auf der Benutzeroberfläche ausführen können oder nicht.

  • Wenn der Vorgang auf mehreren ausgewählten Formen in der Benutzeroberfläche funktioniert, können Sie denselben Vorgang in Visual Basic ausführen, indem Sie eine  ShapeRange  -Auflistung erstellen, die die Formen enthält, mit denen Sie arbeiten möchten, und die entsprechenden Eigenschaften und Methoden direkt auf die  ShapeRange -  Auflistung anwenden.

  • Wenn der Vorgang bei mehreren ausgewählten Formen in der Benutzeroberfläche nicht funktioniert, können Sie den Vorgang dennoch in Visual Basic ausführen, indem Sie eine Schleife durch die  Shapes-  Auflistung oder eine  ShapeRange-  Auflistung durchlaufen, die die Formen enthält, mit denen Sie arbeiten möchten, und die entsprechenden Eigenschaften anwenden und Methoden für die einzelnen  Shape-  Objekte in der Sammlung.

Viele Eigenschaften und Methoden, die auf das  Shape-  Objekt und  die ShapeRange-  Auflistung angewendet werden, schlagen fehl, wenn sie auf bestimmte Arten von Formen angewendet werden. Beispielsweise schlägt die  TextFrame-  Eigenschaft fehl, wenn sie auf eine Form angewendet wird, die keinen Text enthalten kann. Wenn Sie nicht sicher sind, dass auf jede Form in einer  ShapeRange-  Sammlung eine bestimmte Eigenschaft oder Methode angewendet werden kann, wenden Sie die Eigenschaft oder Methode nicht auf die  ShapeRange-  Sammlung an. Wenn Sie eine dieser Eigenschaften oder Methoden auf eine Sammlung von Formen anwenden möchten, müssen Sie die Sammlung durchlaufen und jede einzelne Form testen, um sicherzustellen, dass es sich um einen geeigneten Formtyp handelt, bevor Sie die Eigenschaft oder Methode darauf anwenden.

Anwenden einer Eigenschaft oder Methode auf eine ShapeRange-Sammlung

Wenn Sie eine Operation für mehrere ausgewählte Formen in der Benutzeroberfläche gleichzeitig ausführen können, können Sie das programmgesteuerte Äquivalent durchführen, indem Sie eine  ShapeRange-  Sammlung erstellen und dann die entsprechenden Eigenschaften oder Methoden darauf anwenden. Das folgende Beispiel erstellt einen Formbereich, der die AutoFormen „Großer Stern“ und „Kleiner Stern“ enthält, und wendet auf sie eine Farbverlaufsfüllung an.myDocument

VB

Set myDocument = ActivePresentation.Slides(1) 
Set myRange = myDocument.Shapes _ 
    .Range(Array("Big Star", "Little Star")) 
myRange.Fill.PresetGradient msoGradientHorizontal, _ 
    1, msoGradientBrass

Im Folgenden finden Sie allgemeine Richtlinien für das Verhalten von Eigenschaften und Methoden, wenn sie auf eine  ShapeRange-  Sammlung angewendet werden.

  • Das Anwenden einer Methode auf die Sammlung entspricht dem Anwenden der Methode auf jedes einzelne  Shape-  Objekt in dieser Sammlung.

  • Das Festlegen des Werts einer Eigenschaft der Sammlung entspricht dem Festlegen des Werts der Eigenschaft jeder einzelnen Form in diesem Bereich.

  • Eine Eigenschaft der Sammlung, die eine Konstante zurückgibt, gibt den Wert der Eigenschaft für eine einzelne Form in der Sammlung zurück, wenn alle Formen in der Sammlung denselben Wert für diese Eigenschaft haben. Wenn nicht alle Formen in der Sammlung den gleichen Wert für die Eigenschaft haben, wird die Konstante „mixed“ zurückgegeben.

  • Eine Eigenschaft der Sammlung, die einen einfachen Datentyp zurückgibt (z. B.  LongSingle oder  String ), gibt den Wert der Eigenschaft für eine einzelne Form zurück, wenn alle Formen in der Sammlung denselben Wert für diese Eigenschaft haben.

  • Der Wert einiger Eigenschaften kann nur zurückgegeben oder festgelegt werden, wenn genau eine Form in der Sammlung vorhanden ist. Wenn die Sammlung mehr als eine Form enthält, tritt ein Laufzeitfehler auf. Dies ist im Allgemeinen beim Zurückgeben oder Festlegen von Eigenschaften der Fall, wenn die entsprechende Aktion in der Benutzeroberfläche nur mit einer einzelnen Form möglich ist (Aktionen wie das Bearbeiten von Text in einer Form oder das Bearbeiten der Punkte einer Freiform).

Die vorstehenden Richtlinien gelten auch, wenn Sie Eigenschaften von Formen festlegen, die unter sekundären Objekten der  ShapeRange-  Auflistung gruppiert sind, z. B. dem  FillFormat-  Objekt. Wenn das sekundäre Objekt Vorgänge darstellt, die für mehrere ausgewählte Objekte in der Benutzeroberfläche ausgeführt werden können, können Sie das Objekt aus einer  ShapeRange-  Sammlung zurückgeben und seine Eigenschaften festlegen. Sie können beispielsweise die  Fill- Eigenschaft verwenden, um das FillFormat- Objekt  zurückzugeben   , das die Füllungen aller Formen in der  ShapeRange-  Auflistung darstellt. Durch Festlegen der Eigenschaften dieses  FillFormat-  Objekts werden dieselben Eigenschaften für alle einzelnen Formen in der  ShapeRange-  Sammlung festgelegt.

Durchlaufen einer Shapes- oder ShapeRange-Sammlung

Auch wenn Sie nicht gleichzeitig eine Operation für mehrere Formen in der Benutzeroberfläche ausführen können, indem Sie diese auswählen und dann einen Befehl verwenden, können Sie die entsprechende Aktion programmgesteuert ausführen, indem Sie eine Schleife durch die  Shapes-  Auflistung oder eine  ShapeRange-  Auflistung durchlaufen, die die von Ihnen gewünschten Formen enthält mit denen Sie arbeiten möchten, und Anwenden der entsprechenden Eigenschaften und Methoden auf die einzelnen  Shape-  Objekte in der Sammlung. Das folgende Beispiel durchläuft alle Formen und fügt jeder Form, die eine AutoForm ist, Text hinzu. und fügt jeder Form, die eine AutoForm ist, Text hinzu.myDocument

VB

Set myDocument = ActivePresentation.Slides(1) 
For Each sh In myDocument.Shapes 
    If sh.Type = msoAutoShape Then 
        sh.TextFrame.TextRange.InsertAfter " (version 1)" 
    End If 
Next

Das folgende Beispiel erstellt eine  ShapeRange-  Sammlung, die alle aktuell ausgewählten Formen im aktiven Fenster enthält, und legt den Text in jeder Form in der Sammlung fest, die Text enthalten kann.

VB

For Each sh in ActiveWindow.Selection.ShapeRange
    If sh.HasTextFrame Then
        sh.TextFrame.TextRange = "Initially selected"
    End If
Next

Ausrichten, Verteilen und Gruppieren von Formen in einem Formenbereich

Verwenden Sie die  Methoden „Align“  und  „Distribute“  , um eine Reihe von Formen relativ zueinander oder relativ zu dem Dokument, das sie enthält, zu positionieren. Verwenden Sie die  Group-  Methode oder die  Regroup-  Methode, um aus einer Reihe von Formen eine einzelne gruppierte Form zu bilden.


Ingwer 2.7.53.0

Ingwer 2.7.53.0

Ginger ist eine kostenlose Rechtschreib- und Grammatikprüfung.

Blöcke

Blöcke

Blocks ist ein Denkspiel für Grundschüler der 3. Klasse, mit dem sie ihre Erkennungs- und Sehfähigkeiten trainieren können. Es wird von Lehrern in das Programm zur Unterstützung des IT-Unterrichts aufgenommen.

Mathway

Mathway

Mathway ist eine sehr nützliche App, die Ihnen bei der Lösung all jener mathematischen Probleme helfen kann, die ein komplexeres Werkzeug als den integrierten Taschenrechner Ihres Geräts erfordern.

Adobe Presenter

Adobe Presenter

Adobe Presenter ist eine E-Learning-Software von Adobe Systems, die auf der Microsoft Windows-Plattform als Microsoft PowerPoint-Plug-in verfügbar ist.

Tukan 2.3.0

Tukan 2.3.0

Toucan ist eine Bildungstechnologieplattform. Es ermöglicht Ihnen, eine neue Sprache zu lernen, während Sie auf gängigen, alltäglichen Websites surfen.

ENetViet 24.2

ENetViet 24.2

eNetViet ist eine Anwendung, die Eltern mit der Schule verbindet, in der ihre Kinder studieren, damit sie die aktuelle Lernsituation ihres Kindes klar verstehen können.

Duolingo

Duolingo

Duolingo – Sprachen kostenlos lernen, oder einfach Duolingo, ist ein Bildungsprogramm, mit dem Sie viele verschiedene Sprachen lernen und üben können.

RapidTyping

RapidTyping

RapidTyping ist ein praktisches und benutzerfreundliches Tastatur-Trainingstool, mit dem Sie Ihre Tippgeschwindigkeit verbessern und Rechtschreibfehler reduzieren können. Mit Lektionen für viele verschiedene Niveaus bringt Ihnen RapidTyping bei, wie Sie tippen oder bestehende Fertigkeiten verbessern.

MathType 7.4.10.53

MathType 7.4.10.53

MathType ist eine interaktive Gleichungssoftware des Entwicklers Design Science (Dessci), mit der Sie mathematische Notationen für Textverarbeitung, Präsentationen, E-Learning usw. erstellen und kommentieren können. Dieser Editor wird auch zum Erstellen von TeX-, LaTeX- und MathML-Dokumenten verwendet.

Grammatikalisch

Grammatikalisch

Die KI-gestützten Apps von Grammarly helfen Menschen, effektiver zu kommunizieren. Millionen von Benutzern verlassen sich täglich auf Grammarly, um ihre Nachrichten, Dokumente und Social-Media-Beiträge klarer, fehlerfrei und professioneller zu gestalten.