Advanced Snippet Editor

Erstellt: 2026-05-27 · Aktualisiert: 2026-05-30

Der Advanced Snippet Editor ermöglicht es, PowerPoint-Shapes direkt mit C#-Code zu erstellen, zu testen und als Snippet in der Bibliothek zu speichern. Scripts werden mit Roslyn (Microsoft C# Scripting) zur Laufzeit ausgeführt.

Kein Support

Der Advanced Snippet Editor richtet sich an erfahrene Nutzer mit C#-Kenntnissen.
PPPTools bietet für selbst erstellte Scripts keinen Support.
Fehlerhafte Scripts können unerwartete Auswirkungen auf die geöffnete Präsentation haben.


Aufrufen

  • Burger-Menü ≡ → Advanced Snippet Editor
  • oder: Ribbon → Content Manager → Advanced Snippet Editor

Die Taskpane öffnet sich automatisch in der breiten Ansicht.


Interface

Bereich Beschreibung
Zeilennummern Schmales Panel links vom Code-Feld — zeigt Zeilennummern synchron beim Scrollen
Code-Feld C#-Script eingeben oder einfügen
Cursor-Anzeige Zeigt aktuelle Zeile und Spalte (rechts in der Toolbar: Ln 1 Col 1)
Fehler-Panel Zeigt Compiler- und Laufzeitfehler (erscheint automatisch bei Fehler)

Toolbar

Die Toolbar ist in Schaltflächen-Gruppen organisiert. Schaltflächen mit einem kleinen Pfeil öffnen ein Dropdown mit Optionen.

Ausführen & Speichern

Schaltfläche Funktion
▶ Ausführen Script auf der aktiven Folie ausführen
💾 Speichern ▾ Dropdown: Snippet speichern oder als Draft zur öffentlichen Bibliothek hochladen

Dropdown «💾 Speichern»:

Option Beschreibung
Als Snippet speichern Script ausführen, Vorschaubild generieren, Metadaten eingeben und lokal speichern
Als Draft hochladen Snippet als Entwurf zur öffentlichen Bibliothek senden (zur Freigabe durch Admin)

Analyse & Code

Schaltfläche Funktion
📂 Laden Code eines bestehenden Snippets in den Editor laden
🔍 Analyse ▾ Dropdown mit Analyse- und Code-Werkzeugen

Dropdown «🔍 Analyse»:

Option Beschreibung
Code analysieren Script statisch analysieren: erkannte @param-Definitionen, Compiler-Warnungen und -Fehler im Dialog anzeigen
Code generieren (ersetzen) ppptools.*-Code aus dem selektierten Shape generieren und den Editor-Inhalt ersetzen (nur wenn leer oder Starter-Template)
Code generieren (anfügen) Generierten Code an den bestehenden Editor-Inhalt anhängen (mit Trennkommentar)
Nodes anzeigen Knotenpunkte des selektierten Shapes als farbige Markierungen auf der Folie visualisieren
Editor zurücksetzen Code auf das Starter-Template zurücksetzen und Fehler-Panel leeren

Zeilennummern & Cursor-Position

Das schmale Panel links vom Code-Feld zeigt automatisch die Zeilennummern — synchron beim vertikalen Scrollen. Rechts in der Toolbar wird die aktuelle Cursor-Position angezeigt:

Ln 12  Col 5

Die Anzeige aktualisiert sich bei jeder Cursor-Bewegung.


Verfügbare Variablen

Im Script stehen folgende Variablen direkt zur Verfügung:

Variable Typ Beschreibung
ppptools AdvancedScriptHelper Alle PowerPoint-Operationen (Shape-Erstellung, Selektion, Boolean-Ops, Styling …)
Params SnippetParamBag Parameter-Werte aus dem @param-Dialog (bei parametrisierten Snippets)

Kein direkter COM-Zugriff

oSlide und aPowerPoint sind im Script nicht verfügbar — alle Operationen erfolgen über ppptools.*-Methoden. Das verhindert unkontrollierten Zugriff auf die PowerPoint-Anwendung.

ppptools-Methoden (Übersicht)

→ Vollständige Referenz mit Parametern und Codebeispielen: PPPTools-Referenz

Kategorie Methoden
Folie SlideWidth, SlideHeight
Erstellen AddShape, AddRect, AddOval, BuildFreeform, AddPolygon, AddPolyline
Selektion GetSelected, GetSelectedRange
Boolean-Ops Union, Intersect, Combine, Subtract
Gruppieren GroupSelected, Group
Duplizieren Duplicate
Z-Order SendBackward, BringForward, SendToBack, BringToFront
Spiegeln FlipH, FlipV
Position CenterOnSlide, Scale
Styling SetFill, SetGradient, SetLine, HideLine, SetText
Animationen AddAnimation

Wichtige Scripting-Regeln

Roslyn-Scripts laufen in einem speziellen Kontext. Folgende Regeln müssen eingehalten werden:

var / dynamic statt Shape

Der Typ Shape existiert in zwei Namespaces gleichzeitig (Microsoft.Office.Core und Microsoft.Office.Interop.PowerPoint) — das führt zu einem Compiler-Fehler.

// ❌ Fehler — ambiguous reference (wenn Shape-Typen gemischt verwendet werden)
Shape oRect = ppptools.AddRect(...);

// ✅ Korrekt
var oRect = ppptools.AddRect(...);

Lokale Funktion statt Action<T>

Action<> liegt im System-Namespace, der nicht automatisch importiert ist.

// ❌ Fehler
Action<Shape> style = sh => { sh.Fill.ForeColor.RGB = ...; };

// ✅ Korrekt — lokale void-Funktion
void ApplyStyle(dynamic sh)
{
    sh.Fill.ForeColor.RGB = ...;
}

Selektion für Boolean-Operationen

List<Shape> ist wegen des Namespace-Konflikts nicht direkt verwendbar. Shapes werden stattdessen über .Select() selektiert:

// ✅ Korrekt
oShape1.Select(MsoTriState.msoTrue);   // erstes Shape: Replace = true
oShape2.Select(MsoTriState.msoFalse);  // weiteres Shape: Replace = false
ppptools.Union();
dynamic oResult = ppptools.GetSelected();   // Ergebnis-Shape abgreifen

Beispiele

Jedes Beispiel hat eine eigene Seite mit Ergebnis-Vorschau, vollständigem Code und Schritt-für-Schritt-Erklärung.

Grundlagen-Beispiele (Boolean-Operationen):

# Beispiel Themen
1 Rechteck ppptools.AddRect, Füllfarbe, Rahmen entfernen
2 Kreis ppptools.AddOval, Mittelpunkt-Berechnung, Rahmenfarbe
3 Union Selektions-Muster, ppptools.Union(), ppptools.GetSelected()
4 Quadrat mit Loch ppptools.Combine(), echte geometrische Löcher
5 Zahnrad 3 Boolean-Ops verketten, Adjustments[1], alle Zahnzahlen

Vollständige parametrisierte Beispiele (alle ppptools-Methoden):

Beispiel ppptools-Methoden
Zahnrad (parametrisiert) AddShape, AddOval, GetSelected, GetSelectedRange, Union, Intersect, Combine, SlideWidth/Height
PostIt (parametrisiert) BuildFreeform, AddRect, GetSelected, Duplicate, Intersect, Subtract, FlipH, SendBackward, SetGradient, HideLine, Group
Persona (parametrisiert) BuildFreeform, AddOval, AddRect, Group, Scale, SlideWidth/Height

Workflow

Code aus selektiertem Shape generieren

Die Optionen Code generieren (ersetzen) und Code generieren (anfügen) lesen das aktuell in PowerPoint selektierte Shape und erzeugen sofort ausführbaren ppptools.*-Code.

Ersetzen vs. Anfügen:

Option Verhalten
Code generieren (ersetzen) Editor ist leer oder zeigt nur das Starter-Template → Code wird direkt eingefügt und ersetzt den Inhalt
Code generieren (anfügen) Vorhandener Code bleibt erhalten → neuer Code wird mit Trennkommentar angehängt

Was wird generiert:

Shape-Typ Generierter Code
Rechteck ppptools.AddRect(...)
Oval / Kreis ppptools.AddOval(...)
Anderes AutoShape ppptools.AddShape(MsoAutoShapeType.xxx, ...)
FreeForm (nur gerade Segmente) ppptools.AddPolygon(new float[]{...}, new float[]{...})
FreeForm (mit Kurven) ppptools.BuildFreeform(...) + AddNodes(...)
Gruppe Rekursiver Code für alle Elemente + ppptools.Group(...)
Füllung ppptools.SetFill(...) oder ppptools.SetGradient(...)
Rahmen ppptools.SetLine(...) oder ppptools.HideLine(...)
Text ppptools.SetText(...)
Animationen ppptools.AddAnimation(...) inkl. Timing

Idealer Workflow

Shape in PowerPoint manuell zeichnen → Code generieren (ersetzen) → Editor zeigt den exakten Code zum Nacherstellen → Parameter anpassen → ▶ Ausführen zum Testen → 💾 Als Snippet speichern.


Nodes anzeigen

Die Option Nodes anzeigen platziert farbige Markierungen direkt auf der Folie für jeden Knotenpunkt des selektierten Shapes.

FreeForm-Shapes

Bei FreeForm-Shapes wird jeder Knoten mit Koordinaten, Index, Segment-Typ (Line / Curve) und Editing-Typ (Corner / Auto) beschriftet.

Farb-Kodierung:

Farbe Bedeutung
🟢 Grün Start-Knoten (Index 0)
🔴 Rot Zwischenknoten
🔵 Blau Letzter Knoten

Standard-Shapes (Rechteck, Oval, AutoShape …)

Bei Standard-Shapes werden die 4 Eckpunkte (TL / TR / BR / BL) und der Mittelpunkt (C) angezeigt:

Marker Position Form
TL / TR / BR / BL Ecken Kleiner blauer Kreis
C Mittelpunkt Kleiner orangefarbener Diamant

Darüber erscheint ein Info-Label mit Name, Typ und Abmessungen des Shapes.

Aufräumen

Markierungen nach der Analyse löschen: Alle Shapes mit dem Namen Node_*, NodeLabel_* oder NodeInfo_* markieren und löschen, oder Ctrl+Z verwenden.


Code analysieren

Die Option Code analysieren prüft das aktuelle Script statisch und zeigt das Ergebnis in einem Dialog:

  • Erkannte @param-Definitionen (Name, Typ, Standardwert)
  • Compiler-Warnungen
  • Compiler-Fehler

Nützlich um zu prüfen, ob alle @param-Deklarationen korrekt sind, bevor das Script ausgeführt wird.

→ Mehr zu @param: Parametrisierte Snippets


Script testen

  1. Code in das Code-Feld eingeben oder per 📂 Laden ein bestehendes Snippet öffnen
  2. ▶ Ausführen klicken — das Shape erscheint auf der aktiven Folie
  3. Bei Fehlern: Fehler-Panel lesen, Code korrigieren, erneut ausführen
  4. Testweise erstellte Shapes manuell löschen (Entf-Taste)

Hinweis

Es muss eine Präsentation geöffnet und eine Folie aktiv sein.


Als Snippet speichern

  1. 💾 Speichern ▾ → Als Snippet speichern klicken
  2. Script wird ausgeführt — neu erstellte Shapes werden automatisch erkannt
  3. Vorschaubild wird aus den neuen Shapes generiert
  4. Shapes werden nach dem Vorschaubild-Export wieder gelöscht
  5. Metadaten-Dialog: Name*, Kategorie, Tags, Beschreibung usw. eingeben
  6. Speichern — Snippet erscheint sofort in der Galerie

Als Draft zur öffentlichen Bibliothek hochladen

Fertige Snippets können direkt aus dem Editor als Entwurf (Draft) zur öffentlichen Bibliothek gesendet werden:

  1. 💾 Speichern ▾ → Als Draft hochladen klicken
  2. Script wird ausgeführt und ein Vorschaubild generiert
  3. Metadaten-Dialog ausfüllen (Name*, Kategorie, Tags, Beschreibung)
  4. Snippet wird als Draft an den Library-Server übertragen
  5. Ein Admin prüft und veröffentlicht das Snippet

Draft-Status

Nach dem Upload ist das Snippet noch nicht öffentlich — es muss zuerst von einem Admin geprüft und freigegeben werden.

Publish-Flow


Microsoft-Dokumentation

Thema Link
Alle Shape-Typen (MsoAutoShapeType) learn.microsoft.com
Shapes.AddShape Methode learn.microsoft.com
Shape-Objekt (alle Eigenschaften) learn.microsoft.com
FillFormat (Füllung) learn.microsoft.com
LineFormat (Rahmen) learn.microsoft.com