Es ist erstaunlich, was PowerPoint alles kann. Und es ist erstaunlich, was PowerPoint nicht kann: beispielsweise ein banales Inhaltsverzeichnis der Folien zu erstellen. Lorenz Hölscher beschreibt hier ein einfaches Verfahren, wie Sie das mit VBA nachrüsten.
Besser als AddIn
Dieser Code funktioniert derzeit für die Präsentation, in welcher er enthalten ist. Mit ein wenig Mühe lässt er sich auch auf eine parallel geöffnete Präsentation anwenden, aber wirklich praktisch ist das dann nicht. Als AddIn könnten Sie damit jederzeit Inhaltsverzeichnisse für beliebige Präsentationen erstellen. Lesen Sie im Beitrag "PowerPoint-AddIn erstellen", wie Sie das anpassen.
Für Mitglieder von akademie.de steht das AddIn für Inhaltsverzeichnisse zum Download bereit: AddIn für Inhaltsverzeichnisse (.ppt, 44 kB).
Dialog entwerfen
Das Inhaltsverzeichnis soll hier wegen der Übersichtlichkeit ganz einfach strukturiert sein, also schlicht die Titelzeile aller Folien sammeln und keine Untertitel oder ähnliches berücksichtigen.
Zu Testzwecken ist es immer ganz praktisch, alles in einem Listenfeld auf einem Formular anzuzeigen, bevor es tatsächlich irgendwohin geschrieben wird. Wechseln Sie daher mit Alt+F11 in den VBA-Editor und fügen Sie dort mit Einfügen/UserForm ein neues Formular ein.
Dieses Formular braucht außer zwei Bezeichnungsfeldern (lblSlides und lblInfo) vor allem ein Listenfeld (lstSlides) mit den Eigenschaften ColumnCount:2 und ColumnWidths:50pt, damit eine zweispaltige Liste angezeigt werden kann. Das Kontrollkästchen chkAuchMarkiert gibt an, ob die Inhaltsfolie selber auch in das Inhaltsverzeichnis aufgenommen werden soll.
Ungarische Notation
Die Benennungen der Kontrollelemente entsprechen einer erweiterten Ungarischen Notation. Das Präfix gibt also den Typ des jeweiligen Kontrollelements an. Achten Sie bitte darauf, dass ein Listenfeld das Präfix LST (in Kleinbuchstaben) hat, weil das in dieser Schrift leicht mit IST verwechselt werden kann. Die Bezeichnungsfelder (ab PPT 2010 als Beschriftungsfelder bezeichnet) heißen auf englisch labels, beginnen also mit klein geschriebenem LBL.
Dazu kommen noch zwei Befehlsschaltflächen btnAbbrechen (Eigenschaft Cancel:True) und btnErstellen (Eigenschaft Default:True) zum Abbruch beziehungsweise Erstellen des Inhaltsverzeichnisses. Der Entwurf des Dialogs sieht nun so aus:
Der Dialog-Entwurf mit den Namen der Kontrollelemente
Den Dialog selbst benennen Sie bitte von UserForm1 in dlgInhalt um, damit auch dort die Ungarische Notation berücksichtigt wird. Nun können wir mit der Programmierung beginnen.
