(0) exportieren Drucken
Alle erweitern

Erste Schritte mit VBA in PowerPoint 2010 (maschinell übersetzt)

Office 2010
Ee814734.Important(de-de,office.14).gifWichtig:

Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: here.

Zusammenfassung: Dies ist eine Einführung zu Visual Basic for Applications (VBA) in PowerPoint 2010 für Poweruser, bei denen es sich aber (noch) nicht um Entwickler handelt. Sie enthält eine Übersicht zur Programmiersprache VBA, Anweisungen zum Zugriff auf VBA in PowerPoint 2010, eine detaillierte Erklärung zu einer Lösung für ein praxisbezogenes VBA-Programmierungsproblem in PowerPoint sowie Tipps zur Programmierung und zum Debuggen.

Communitymitglied-Symbol

Gilt für:  Microsoft PowerPoint 2010

Veröffentlicht:   November 2009

Zur Verfügung gestellt von:  Ben Chinowsky, SDK-Brücke

Inhalt

Warum verwenden Sie VBA in PowerPoint 2010?

PowerPoint 2010 ist mit Features, mit denen Sie effektive und ansprechende Präsentationen machen gefüllt, und es ist einfach, herauszufinden, die meisten Features von der Benutzeroberfläche. Manchmal jedoch sollten trotz der umfangreichen Satz an Features in der standard-PowerPoint-Benutzeroberfläche (UI), Sie eine einfachere Möglichkeit, eine langweilige, sich wiederholende Aufgabe auszuführen oder für bestimmte Aufgaben, die die Benutzeroberfläche offensichtlich nicht Adresse gefunden. Glücklicherweise haben Office-Anwendungen wie z. B. PowerPoint Visual Basic for Applications (VBA), eine Programmiersprache, die Sie diese Anwendungen erweitern kann.

VBA funktioniert durch Ausführen von Makros, schrittweise Verfahren, die in Visual Basic geschrieben. Learning Programm mag abschreckend, aber mit etwas Geduld und einige Beispiele wie diejenigen in diesem Artikel, viele Benutzer finden, lernen sogar eine kleine Menge von VBA Code ihre Arbeit erleichtert und ihnen die Möglichkeit gibt, im Büro tun, was sie nicht dachten möglich waren. Sobald Sie einige VBA gelernt haben, wird es viel einfacher, eine ganze Menge mehr lernen – also die Möglichkeiten unerschöpflich sind.

Bei weitem ist die häufigste Grund für PowerPoint VBA verwenden, um sich wiederholende Aufgaben automatisieren. Genommen Sie an, dass Sie eine Präsentation, die viele leere Textfelder enthält, die Sie löschen möchten. Anstatt zu jeder Folie und suchen, auswählen und Löschen jedes leere Textfeld haben Sie ein PowerPoint VBA-Makro für Sie tun.

Ein weiterer Grund PowerPoint VBA verwenden, wird PowerPoint neue Funktionen hinzu. Beispielsweise können Sie ein VBA-Makro erstellen, die ausgeführt wird, in der genauen Mitte der Präsentation, egal wie viele Folien, die Sie haben, und öffnet sich eine Meldung angezeigt, wie viel Zeit, die Sie für Ihre Präsentation verlassen haben.

Es gibt viele andere Gründe PowerPoint VBA nicht verwenden, die zuletzt von denen ist zum Ausführen von Aufgaben, die PowerPoint arbeiten zusammen mit anderen Office-Anwendungen beinhalten. Beispielsweise können Sie Text aus einer Präsentation in eine CSV-Datei (CSV) einfügen, die Sie in Microsoft Excel 2010 öffnen können.

Ee814734.note(de-de,office.14).gifHinweis:

In einigen Office-Anwendungen können Sie VBA-Makros erstellen, durch Ausführen einer Makro-Recorder. Insbesondere Sie verschiedene Aktionen ausführen, und die Makroaufzeichnung zeichnet sie damit wieder ausgeführt werden kann. PowerPoint 2010 hat keine Makroaufzeichnung; Schreiben von VBA-Code ist die einzige Möglichkeit zum Erstellen von Makros. (Makros, die aufgezeichnet oder in früheren Versionen von PowerPoint mit dem Visual Basic-Editor in PowerPoint 2010 geschrieben wurden, können Sie weiterhin bearbeiten.)

Dieser Artikel führt PowerPoint VBA entwickeln Sie ein Makro, das die leeren Textfelder in einer Präsentation löscht.

VBA-Programmierung 101

Verwenden von Code, damit Anwendungen bestimmte Vorgänge ausführen

Sie denken vielleicht, dass Code schreiben geheimnisvolle oder schwer, aber die grundlegenden Prinzipien Argumentation für jeden Tag verwenden und sind sehr leicht zu erlernen. Office 2010-Anwendungen werden so erstellt, dass sie Dinge, die so genannte Objekte , die Anweisungen zu erhalten, können offen legen. Sie interagieren mit Anwendungen von Anweisungen zu verschiedenen Objekten in der Anwendung zu senden. Diese Objekte sind viele abwechslungsreiche und flexible, aber sie haben ihre Grenzen. Sie können nur tun was sie tun sollen, und sie werden nur tun, was sie tun anweisen.

Das Objektmodell

Programmieren von Objekten beziehen eines anderen systematisch in einer Hierarchie, das Objektmodell der Anwendung aufgerufen. Das Objektmodell spiegelt ungefähr in der Benutzeroberfläche finden Sie; Beispielsweise enthält der PowerPoint-Objekt-Modus Application, Presentation und Slide-Objekte unter vielen anderen. Das Objektmodell ist eine grundlegende Karte der Anwendung und seine Funktionen.

Eigenschaften und Methoden

Sie können Objekte bearbeiten, indem Sie ihre Eigenschaften festlegen und ihre Methodenaufrufen. Festlegen einer Eigenschaft ändert die Qualität des Objekts. Aufrufen einer Methode bewirkt, dass das Objekt, das eine bestimmte Aktion ausgeführt. Slide-Objekt hat beispielsweise eine Copy-Methode, die fügt eine Kopie der Folie in die Zwischenablage und eine Layout-Eigenschaft, die das Layout der Folie darstellt.

Auflistungen

Viele Objekte im singular und plural kommen – Präsentation und Präsentationen, Folien und Folien und So weiter. Die plural Versionen sind Auflistungenaufgerufen. Collection-Objekte zum Ausführen einer Aktion für mehrere Elemente in der Auflistung. Außerdem wird erläutert, wie Sie die Slides-Auflistung verwenden, um unerwünschte Objekte auf jeder Folie in einer Präsentation zu entfernen.

Makros und der Visual Basic-Editor

Nun, Sie etwas wie Microsoft PowerPoint 2010 Objektmodell offen legt wissen, sind Sie wahrscheinlich bestrebt, die versuchen, die Einstellung Objekteigenschaften und Objektmethoden des aufrufen. Hierzu müssen Sie Code schreiben, an einem Ort und in einer Weise, die Office verstehen kann; in der Regel mithilfe der Visual Basic-Editor. Zwar standardmäßig installiert, wissen viele Benutzer nicht, dass es noch verfügbar ist, bis sie auf der Multifunktionsleiste aktiviert wird.

Die Registerkarte Entwicklertools

Alle Office 2010-Anwendungen verwenden die Multifunktionsleiste. Eine Registerkarte der Multifunktionsleiste ist die Registerkarte Entwickler , in dem Sie Visual Basic-Editor und andere Entwickler-Tools zugreifen. Da Office 2010 die Registerkarte Entwickler nicht standardmäßig angezeigt wird, müssen Sie es aktivieren, indem Sie die folgenden Schritte ausführen:

So aktivieren Sie die Registerkarte Entwicklertools

  1. Wählen Sie auf DateiOptionen im Dialogfeld PowerPoint-Optionen zu öffnen.

  2. Klicken Sie auf der linken Seite des Dialogfelds auf Menüband anpassen.

  3. Wählen Sie auf der linken Seite des Dialogfelds unter Befehle auswählen die Option Häufig verwendete Befehle aus.

  4. Wählen Sie auf der rechten Seite des Dialogfelds unter Menüband anpassen die Option Hauptregisterkarten aus, und aktivieren Sie dann das Kontrollkästchen Entwicklertools.

  5. Klicken Sie auf OK

Nachdem Entwickler in PowerPoint angezeigt wird, notieren Sie sich den Speicherort der Visual Basic, Makrosund Makrosicherheit Schaltflächen auf der Registerkarte.



Abbildung 1. Registerkarte "Entwicklertools" in PowerPoint 2010

Registerkarte 'Entwicklertools' in PowerPoint 2010

Überlegungen zur Sicherheit

Klicken Sie auf Makrosicherheit , um anzugeben, welche Makros ausgeführt werden können und unter welchen Bedingungen. Obwohl Rogue-Makrocode Ihren Computer ernsthaft beschädigen kann, können Security-Bedingungen, die verhindern, dass Sie nützliche Makros ausführen Ihre Produktivität einschränken. Makrosicherheit ist ein ziemlich komplex und Beteiligten Thema, das Sie studieren und verstehen, wenn Sie mit Makros in PowerPoint arbeiten sollten.

Beachten Sie im Kontext dieses Artikels, dass wenn beim Öffnen einer Arbeitsmappe, die ein Makro enthält, die Leiste Sicherheitswarnung: Makros wurden deaktiviert zwischen dem Menüband und dem Arbeitsblatt angezeigt wird, Sie auf die Schaltfläche Inhalt aktivieren klicken können, um die Makros zu aktivieren.

Achten Sie zudem, dass als Sicherheitsmaßnahme, Sie ein Makro in die Standard-PowerPoint-Präsentation-Format (PPTX); speichern kann Sie müssen stattdessen das Makro speichern, in eine Datei mit einer besonderen Erweiterung PPTM.

Der Visual Basic-Editor

Nachdem Sie die Registerkarte Entwickler anzeigen, können Sie Visual Basic-Editor öffnen, ist das integrierte Tool, mit dem Schreiben und Bearbeiten von VBA-Code für PowerPoint.

Zum Erstellen eines neuen Makros im Visual Basic-Editor

  1. Klicken Sie auf der Registerkarte Entwickler auf die Schaltfläche Makros.

  2. Geben Sie im nun angezeigten Dialogfeld Makro unter Makroname den Namen Hello ein.

  3. Klicken Sie auf die Schaltfläche Erstellen, um den Visual Basic-Editor mit der Gliederung eines neuen Makros zu öffnen.

VBA ist eine umfassende Programmiersprache mit einer entsprechend umfassende Programmierumgebung. Dieser Artikel untersucht nur Tools, die Sie verwenden, um den Einstieg in die Programmierung und, schließt die meisten Tools im Visual Basic-Editor. Schließen Sie das Fenster Eigenschaften auf der linken Seite des Visual Basic-Editor, und ignorieren Sie die zwei Dropdown-Listen, die über dem Code angezeigt werden.



Abbildung 2 – Visual Basic-Editor

Visual Basic-Editor

Der Visual Basic-Editor enthält den folgenden Code.

Sub Hello()

End Sub

Sub bedeutet- Unterroutine, die Sie für die jetzt als "Makro". definieren können Hello-Makro ausgeführt wird Code, der zwischen Hello() Sub und End Sub wird ausgeführt.

Bearbeiten Sie das Makro jetzt, so dass sie den folgenden Code ähnelt.

Sub Hello()
   MsgBox("Hello world")
End Sub

Gehen Sie zurück zu der Registerkarte " Entwickler " in PowerPoint, und klicken Sie dann erneut auf die Schaltfläche Makros . Wählen Sie in der angezeigten Liste das Hallo -Makro, und klicken Sie dann auf Ausführen , um eine kleine Meldungsfeld anzuzeigen, die den Text, die "Hello World" enthält

Sie können einfach erstellt und implementiert benutzerdefinierten VBA-Code in PowerPoint! Klicken Sie auf OK klicken Sie im Meldungsfeld zu schließen und das Makro ausgeführt haben.

Wenn das Meldungsfeld nicht angezeigt wird, überprüfen Sie Ihre Einstellungen für die Makrosicherheit, und starten Sie PowerPoint.

Makros leicht zugänglich machen

Sie können auch auf der Registerkarte Ansicht zum Dialogfeld Makros gelangen. Wenn Sie aber ein Makro häufig benötigen, ist es meist bequemer, wenn Sie es über eine Tastenkombination oder eine Schaltfläche auf der Symbolleiste für den Schnellzugriff ausführen können.

Um eine Schaltfläche für das Hallo -Makro auf der Symbolleiste für den Schnellzugriffvornehmen, gehen Sie folgendermaßen vor:

So erstellen Sie eine Schaltfläche für ein Makro auf der Symbolleiste für den Schnellzugriff

  1. Klicken Sie auf die Registerkarte Datei.

  2. Klicken Sie auf Optionen , um das PowerPoint-Optionen -Dialogfeld zu öffnen, und klicken Sie dann auf Symbolleiste für den Schnellzugriff.

  3. In der Liste unter Wählen Sie Befehle aus:, wählen Sie Makros. Suchen Sie den Text, der Präsentation1 ähnelt!Hallo in der Liste, die angezeigt wird, und wählen Sie diesen Text.

  4. Klicken Sie auf die Schaltfläche Hinzufügen >>, um das Makro in die Liste auf der rechten Seite zu übertragen. Klicken Sie dann auf die Schaltfläche Ändern…, um ein Schaltflächenbild auszuwählen, das dem Makro zugeordnet werden soll.

  5. Klicken Sie auf OK. Die neue Schaltfläche sollte nun auf der Symbolleiste für den Schnellzugriff oberhalb der Registerkarte Datei angezeigt werden.

Jetzt Ihr Makro jederzeit ausgeführt werden kann, ohne die Registerkarte Entwickler – versuchen Sie es.

Ein Makro zum Entfernen von Müll

Manchmal enthält eine Präsentation, die Sie für eine Weile gearbeitet haben leere Textfelder, die Sie nicht benötigen. Beispielsweise Sie möglicherweise sie hinzugefügt haben weil Sie dachten, Sie wurden sie verwenden wollen, aber nicht. Darüber hinaus können Sie sie versehentlich hinzugefügt haben.

Um diese leere Textfelder zu entfernen, können Sie durch die Präsentation und alle manuell zu löschen, oder Sie können ein Makro für Sie tun schreiben. Ein Makro kann auch leer ausgeblendeter Text-Feldern entfernen.

Die folgenden Abschnitte führen Sie durch den Prozess, den zum Erstellen und implementieren Sie dieses Makro.

Objekte suchen

Am besten zu starten, wenn Sie ein neues PowerPoint-Makro erstellen möchten, wird PowerPoint-Objektmodellreferenz, die in PowerPoint 2007 Developer Reference auf der Microsoft Developer Network (MSDN) ist. Der Objektmodellreferenz beschreibt die Objekte, Eigenschaften und Methoden, die verfügbar sind, und bietet viele Beispiele für ihre Verwendung.



Abbildung 3. PowerPoint-Objektmodellreferenz

PowerPoint-Objektmodellreferenz

Wenn wird öffentlich freigegeben, aber PowerPoint 2007-Entwicklerreferenz für die meisten PowerPoint 2010 Zwecke geeignet ist, werden diese Referenzmaterialien für PowerPoint 2010 aktualisiert werden. Auch bewusst sein, dass eine weitere wichtige Ressource – den Visual Basic for Applications Language Reference – innerhalb von PowerPoint 2007-Entwicklerreferenz aus zugegriffen werden kann.

Um die leeren Textfelder aus Ihrer Präsentation zu entfernen, ist die erste Aufgabe zu ermitteln, ob ein TextBox-Objekt im PowerPoint-Objektmodell vorhanden ist. Klicken Sie auf der PowerPoint-Objektmodellreferenz eine lange Liste aller Objekte in PowerPoint finden Sie unter.

Kein TextBox-Objekt vorhanden ist, aber es ist etwas TextFrame-Objekt aufgerufen. Das Thema TextFrame besagt, dass das TextFrame-Objekt "den Textrahmen in einem Shape-Objekt stellt", also vielleicht das Shape Objekt beginnen.

Wenn Sie weiteren unten im Thema TextFrame blättern, besagt, dass Sie "die HasText-Eigenschaft verwenden können, um festzustellen, ob der Textrahmen Text enthält" die klingt wie etwas, das Sie verwenden können, finden Sie leere Textfelder zu löschen. Beachten Sie, und dann sehen Sie, was zu Shapes können Sie herausfinden.

Klicken Sie auf das Thema Shape Object dann Shape Object Members-Unterthema. Versuchen Sie, einige Anzeichen dafür, dass Sie eine Shape als Textfeld verwenden können. Methoden sind Dinge, die ein Shape kann zu tun, aber Sie finden wollen Dinge, die ein Shape kann sein, also einen Bildlauf zur Properties.

Beachten Sie, dass ein Shape-Objekt verfügt über eine Property namens Type; Klicken Sie auf Type, um eine Liste der Konstanten anzuzeigen, die die verschiedenen Arten von Shapes darstellen. Die Liste enthält unter anderem msoTextBox. ( Mso -Präfix gibt an, dass diese Microsoft Office-Typen, in einer Office-Anwendung, nicht nur in PowerPoint verfügbar sind.)

Führen Sie einen Bildlauf zum unteren Rand der Shape.Type Property Thema ein Beispiel für die Verwendung der Property.

For Each sld In ActivePresentation.Slides
    For Each sh In sld.Shapes
        If sh.Type = msoLinkedOLEObject Then
            If sh.OLEFormat.ProgID = "Excel.Sheet" Then
                sh.LinkFormat.AutoUpdate = ppUpdateOptionManual
            End If
        End If
    Next
Next

Lernen aus dem Beispiel

Das Thema Shape.Type besagt, dass dieses Beispiel alle Formen auf allen Folien der aktiven Präsentation durchläuft und legt alle verknüpften Microsoft Office Excel-Arbeitsblätter manuell aktualisiert werden."

In diesem Abschnitt wird erläutert, wie der Code diese Aufgabe ausführt.

If…Dann

Nehmen Sie einen genaueren Blick auf die folgende Codezeile Type verwendet.

        If sh.Type = msoLinkedOLEObject Then

Ein paar Zeilen nach unten, auf der gleichen Ebene eingerückt ist der folgende Code.

        End If

Dies ist ein Beispiel einer If…Then-Anweisung, eine der grundlegendsten Programmierkonstrukte und, Glücklicherweise auch am einfachsten zu verstehen. If…Then-Anweisung weist PowerPoint zu tun, was auf die Linien zwischen den If und End If, aber nur wenn die Bedingung in der Zeile If true ist. Im Beispiel wird der folgende Code die Bedingung ist.

        sh.Type = msoLinkedOLEObject

Verwenden diesen Code als Leitfaden, ist die Bedingung für das Makro die Textfelder aus der Präsentation löschen wahrscheinlich etwas wie den folgenden.

        sh.Type = msoTextBox

Weitere Informationen über die If…Then-Anweisung finden Sie im Abschnitt Visual Basic konzeptionellen Themen von VBA-Sprachreferenz. (Der vollständige Name ist If…Then…Else-Anweisung, Else ist eine optionale Komponente, die hier nicht erforderlich.)

Für Each…Weiter

Der Beispielcode zeigt auch ein gemeinsames Muster in PowerPoint VBA-Programmierung, besonders wenn Sie mit Shapes arbeiten. Insbesondere es "durchläuft alle Shapes auf allen Folien der aktiven Präsentation". Loop bedeutet, dass eine Aktion zu wiederholen, und hier ist die besondere Art der Schleife eine Schleife For Each…Next.

For Each sld In ActivePresentation.Slides
    For Each sh In sld.Shapes
    Next
Next

Die For Each…Next-Schleife ist ein anderes Konstrukt, das grundlegende Programmierung und leicht verständlich ist. Sowohl die Schleifen im Code mit den Worten "For Each" beginnen und enden mit das Wort 'Weiter'. Beachten Sie, dass einer der For Each…Next Schleifen innerhalb der anderen oder geschachtelt, Jargon Programmieren ist. Im folgenden Code untersucht die äußere Schleife jede Folie der Präsentation.

For Each sld In ActivePresentation.Slides

Hier ist sld eine Variable; Das heißt, ist ein Platzhalter für je schieben Sie die Schleife untersuchen. ActivePresentation ist ein Objekt, das die aktive PowerPoint-Präsentation darstellt, und Slides ist ein Auflistungsobjekt, das hier alle Folien der aktiven Präsentation darstellt.

Die innere Schleife untersucht jede Form auf der Folie mit den folgenden Code.

    For Each sh In sld.Shapes

Der sh ist eine andere Variable, aber seine Rolle dienen als Platzhalter für die Form, die untersucht, die Schleife. Die sld-Variable ist wie vor; Es stellt die aktuelle Folie und Shapes ist ein weiteres Collection-Objekt, das hier alle Shapes auf der aktuellen Folie darstellt.

Beispiel-Code etwas Ähnliches ist, was Sie tun, versucht nicht immer finden aber oft können Sie und der Objektmodellreferenz ist einer der besten Orte zum Suchen. Verwenden Sie der Objektmodellreferenz wieder, um herauszufinden, welche Dinge bezeichnet werden und um herauszufinden, wie sie auch verwendet werden. Etwas (z. B. die Type-Eigenschaft) auf eine bestimmte Weise verwenden möchten (z. B. zum Überprüfen der Type jedes Shape auf jeder Slide), dann sind die Chancen gut, dass jemand, der auch getan hat, und es wurde in der Objektmodellreferenz dokumentiert.

Erstellen des Makros

Starten Sie PowerPoint, und speichern Sie die neue Präsentation als Präsentation PowerPoint Macro-Enabled (pptm). Erstellen Sie ein neues Makro namens ClutterRemover und geben Sie den folgenden Code.

For Each SlideToCheck In ActivePresentation.Slides
    For Each ShapeToCheck In SlideToCheck.Shapes
        ShapeToCheck.Delete
    Next
Next

Werden Sie bei der Eingabe der Zeit nach ActivePresentation Visual Basic-Editor ein Popup angezeigt, die Listet alle Eigenschaften und Methoden, die für das ActivePresentation-Objekt verfügbar sind. Das ist ein Beispiel der IntelliSense-Technologie; Das heißt, antwortet der Visual Basic-Editor bestimmt, dass Sie versuchen, und eine Liste der entsprechenden Optionen bietet. Sie können eine Option aus der Liste oder nur die Eingabe fortsetzen.

Nehmen Sie eine genauere Betrachtung der Code, den Sie gerade eingegeben haben. Eingerichteten nested Loops im Beispiel ähnlich, aber statt der sld und sh, haben Sie mehr Variablennamen, die Sie daran erinnern, was Sie im Code zu tun versucht. Manche Programmierer bevorzugen kurze Variablennamen und andere bevorzugen mehr, mehr explizite Namen, die machen es leichter zu sehen, was die Variable darstellt. Der zweite Ansatz macht den Code leichter zu verstehen und zu verwenden, wenn Sie lernen, sind im Allgemeinen besser ist.

Innerhalb von Schleifen hat das Makro so weit den folgenden Code.

        ShapeToCheck.Delete

Warum Delete, statt, sagen wir,.Entfernen oder.GetRidOf? Da entfernen das Textfeld aus einem Shape-Objekt eine Aktion handelt, das Shape-Objekt in der Objektmodellreferenz nachschlagen und suchen Sie unter Methoden. Cut und Delete sind die zwei Möglichkeiten, und da Sie nicht gelöschte Shapes in der Zwischenablage ablegen müssen, ist Delete die richtige Wahl.

Fügen Sie die If…Then-Anweisung durchaus noch nicht. Überprüfen Sie zunächst, dass Sie wissen, wie Formen löschen. In der Programmierung empfiehlt es sich nicht zu versuchen, zu viele Dinge zur gleichen Zeit tun. Sie müssen bereits die geschachtelte For Each-Schleifen testen; Wenn Sie auch versuchen, erhalten die If-Anweisung, die gleichzeitig arbeiten, erhöhen Sie das Risiko, erstellen Sie einen Fehler, den Sie nicht ausfindig machen können. Die ShapeToCheck.Delete-Zeile ist eine einfache Möglichkeit, stellen die Schleifen tun etwas, das Sie sehen können, und daher testen. Sobald Sie überprüfen, ob die Schleifen arbeiten, können Sie eine If Bedingung hinzufügen, damit nur leere Textfelder gelöscht werden.

Klicken Sie auf die Schaltfläche Speichern und schließen Sie den Visual Basic-Editor. Löschen Sie die Standard-Titelfolie in PowerPoint, und fügen Sie zwei leere Folien hinzu. Setzen Sie vier Formen auf jeder Folie. (Da Sie noch nicht überprüfen, alle Shapes tun; Smileys, Blitz Schrauben, was Sie wollen.) Führen Sie das Makro ClutterRemover .

Ein Fehler

Was ist passiert? Es gibt noch zwei Formen auf jeder Folie! Versuchen Sie es erneut, und Sie sehen eine links auf jeder Folie dann wieder schließlich alle zu beseitigen. Was ist passiert?

Das Problem ist, dass die Auflistung jedes Mal neu nummeriert erhält, dass ein Element zu löschen. Sollten Sie eine Situation, in dem eine Auflistung der Elemente durchlaufen und löschen Sie die erste. Die Schleife beginnt auf Element # 1, und Sie löschen. Jetzt das Element, das Element # 2 ursprünglich Element # 1, ist das Element, das ursprünglich Element # 3 wurde ist jetzt Element # 2 und so weiter. Wenn die Schleife auf das neue Element # 2 verschoben wird, hat es tatsächlich das ursprüngliche Element # 2 übersprungen.

Der Beispielcode aus der Objektmodellreferenz verfügt nicht dieses Problem, da es nicht die Elemente löschen ist, die die Schleifen zu untersuchen. Veranschaulicht das Problem hier einen wichtigen Punkt, zum Beispiel-Code - es ist einfach, suchen Code, der ähnlich ist, was Sie benötigen, aber erwarten Sie nicht genau sein, benötigen Sie. Testen und bereit sein, Änderungen vornehmen, die nicht geplant war.

Eine Fehlerkorrektur

Sie können verhindern, dass den Code Elemente überspringen, indem statt nach unten zählen einrichten. Genommen Sie an, dass Sie # 3 von vier Elemente löschen. Obwohl # 4 noch # 3 umnummeriert sein, es ist okay da, wenn der Schleife statt nach unten zählt die Schleife ist, auf # 2, 4 nicht verschieben.

Um eine Schleife erstellen, die nach unten zählt, benötigen Sie eine etwas andere Programmierkonstrukt bezeichnet eine For…Next-Schleife. Jedes Element einer Auflistung ist eine Zahl, die einen Index aufgerufen wird. Wo die für Each…Next-Schleife nur überprüft jedes Element einer Auflistung und kann VBA behandeln die Indizes der For…Next-Schleife gibt explizit die Indizes. Die größere Kontrolle genau den Fehler beheben müssen ist.

Öffnen Sie das ClutterRemover -Makro in der Visual Basic-Editor, und ändern Sie den Code folgendermaßen.

For Each SlideToCheck In ActivePresentation.Slides
    For ShapeIndex = SlideToCheck.Shapes.Count To 1 Step -1
        SlideToCheck.Shapes(ShapeIndex).Delete
    Next
Next

Beachten Sie, dass die zweite Zeile nicht mehr für jeden Code folgende.

    For Each ShapeToCheck In SlideToCheck.Shapes

Stattdessen verwendet es die folgenden For…Nächster Code.

    For ShapeIndex = SlideToCheck.Shapes.Count To 1 Step -1

Der neue Code gibt explizit wie die Mitglieder der Shapes-Auflistung durchlaufen. ShapeIndex ist eine Variable, die den aktuellen Index enthält; Das heißt, die Anzahl der Shape, die derzeit, die Schleife untersucht. SlideToCheck.Shapes.Count gibt die Gesamtzahl der Mitglieder die Shapes-Auflistung hat; die Schleife zählt nach unten von dieser Zahl die Zahl 1. "Auf" 1"weist VBA alle zählen die Möglichkeit, das erste Element der Auflistung, und"Schritt 1,"ihn weist an, anstatt den Countdown bis.

Neue ShapeIndex-Variable wird anstelle der vorherigen ShapeToCheck Variablen auf die Shapes innerhalb der Schleife verweisen. Das bedeutet, dass der folgende Code nicht mehr vorhanden ist.

        ShapeToCheck.Delete

Es wird durch die neue dritte Codezeile ersetzt.

        SlideToCheck.Shapes(ShapeIndex).Delete

Der Code verwendet die ShapeIndex-Variable, um die SlideToCheck.Shapes-Auflistung zu indizieren und verwendet die Delete-Methode vor.

Der Code in die äußere For-Each-Schleife ist identisch, da Sie keine Folien löschen. Wenn Sie Folien gelöscht wurden, können Sie eine For-Schleife verwenden, die in der äußeren Schleife sowie, nach unten gezählt.

Richten Sie den Test erneut aus, und führen Sie die neue Version des Makros. Dieses Mal sollte das Makro alle Shapes auf dem ersten Versuch löschen.

Bewährter Programmierung

Zwei Dinge, die nicht unbedingt in VBA erforderlich sind, aber dringend empfohlen, sind Kommentare und Variablendeklarationen.

Jede Codezeile, die mit einem Apostroph beginnt, ist ein Kommentar und hat keine Auswirkungen auf die Ausführung des Makros. Die Hauptanwendungsgebiete für Kommentare sind wie folgt:

  1. Um den Code leichter zu verstehen, nicht nur für Sie, sondern für alle Personen, die möglicherweise den Code später ändern.

  2. Deaktivieren Sie vorübergehend eine Codezeile (bekannt als kommentieren Sie es aus).

Hier wird das Makro so weit mit einige Kommentare hinzugefügt.

' Visit each slide
For Each SlideToCheck In ActivePresentation.Slides
    ' On each slide, count down through the shapes
    For ShapeIndex = SlideToCheck.Shapes.Count To 1 Step -1
        ' Delete all shapes
        SlideToCheck.Shapes(ShapeIndex).Delete
    Next
Next

Es ist auch eine gute Idee, Deklarationen von Variablen am Anfang des Makros hinzufügen. Eine Variablendeklaration gibt an, welche Art von Entität die Variable darstellt. Variablendeklarationen sind in VBA nicht erforderlich, aber mit Variablendeklarationen wesentlich einfacher zu verfolgen Ihre Variablen und zum Aufspüren von Fehlern im Code.

Dim SlideToCheck As Slide
Dim ShapeIndex As Integer

Dim ist eine Abkürzung für "Dimension", und Slide und Integer sind die Datentypen, die diesen bestimmten Variablen darstellen. Werden Sie nach der Eingabe alsVisual Basic-Editor ein Popup angezeigt, in der alle verfügbaren Datentypen aufgeführt. Dies ist ein weiteres Beispiel für IntelliSense-Technologie; Das heißt, antwortet der Visual Basic-Editor bestimmt, dass Sie versuchen, und eine Liste der entsprechenden Optionen bietet. Sie können wählen Sie eine Option aus der Liste oder nur die Eingabe fortsetzen. Beachten Sie auch, wenn Sie eine Variable mit einem Objekt (wie Slide) deklarieren, IntelliSense eine entsprechende Liste der Eigenschaften und Methoden, die mit diesem Objekt verknüpft ist zeigt, wenn Sie die Objektvariable später im Makro verwenden.

Erstellen die Wenn Bedingung

Um das ClutterRemover -Makro ausführen, ist die letzte Aufgabe, um herauszufinden, wie nur leere Textfelder anstatt alle Shapes löschen löschen. Es gibt zwei Bedingungen, die eine Shape erfüllen müssen gelöscht werden: Es muss ein Textfeld sein und muss leer sein.

Wie weiter oben in diesem Artikel beschrieben, können die .Type-Eigenschaft Sie bestimmen, ob ein Shape ein Textfeld ist. Diese Informationen können Sie den folgenden Code.

SlideToCheck.Shapes(ShapeIndex).Type = msoTextBox

Diese dieselbe Diskussion enthalten die Entdeckung, dass Sie die .HasText-Eigenschaft des Objekts TextFrame verwenden können, um Text zu überprüfen.

SlideToCheck.Shapes(ShapeIndex).TextFrame.HasText

Da Sie die If-Bedingung erfüllt, nur, wenn der Textrahmen, der die Shape ist nicht enthalten Text, den Code das Not-Schlüsselwort hinzufügen.

Not SlideToCheck.Shapes(ShapeIndex).TextFrame.HasText

Kombinieren Sie jetzt zwei Bedingungen in einem mithilfe des Schlüsselworts And. (Weitere Informationen über Not, And und anderen logischen Operatoren finden Sie in der VBA-Sprachreferenz.)

SlideToCheck.Shapes(ShapeIndex).Type = msoTextBox And _
Not SlideToCheck.Shapes(ShapeIndex).TextFrame.HasText

Der Unterstrich ermöglicht eine logische Codezeile über mehrere physikalische Zeile in der Visual Basic-Editor erweitern.

Schließlich fügen Sie ein If am Anfang des logischen Zeile, eine Then am Ende und einen Kommentar, den Code zu erklären.

' If the shape IS a text box and DOES NOT have text
If SlideToCheck.Shapes(ShapeIndex).Type = msoTextBox And _
Not SlideToCheck.Shapes(ShapeIndex).TextFrame.HasText Then

Fazit

Das fertige Makro sollte den folgenden Code ähneln.

Dim SlideToCheck As Slide
Dim ShapeIndex As Integer
' Visit each slide
For Each SlideToCheck In ActivePresentation.Slides
    ' On each slide, count down through the shapes
    For ShapeIndex = SlideToCheck.Shapes.Count To 1 Step -1
    ' If the shape IS a text box and DOES NOT have text
    If SlideToCheck.Shapes(ShapeIndex).Type = msoTextBox And _
    Not SlideToCheck.Shapes(ShapeIndex).TextFrame.HasText Then
        ' Delete the shape
        SlideToCheck.Shapes(ShapeIndex).Delete
    End If
    Next
Next

Löschen Sie alle Folien aus der Präsentation, und fügen Sie dann einen Titel und zwei leere Folien. Fügen Sie vier Textfelder auf jeder der zwei leeren Folien; Geben Sie die Textfelder eine sichtbare Umriss oder Füllung. Geben Sie dann in einigen, aber nicht alle Textfelder. Das Makro ausführen. Die leeren Textfelder sollte verschwinden, aber diejenigen, die nicht leer sind bleiben sollte, zusammen mit den Feldern leerer Platzhalter auf der Titelfolie.

Das Makro führt seine Aufgabe mit einer beliebigen Anzahl von Textfeldern auf eine beliebige Anzahl von Folien.

Weiter?

Sie könnte finden, die die Informationen in diesem Artikel, wenn sie mit einigen experimentieren und qualitätszeit mit dem Studium der Objektmodellreferenz und die VBA-Sprachreferenz kombiniert werden, können Sie genügend Informationen, welcher Aufgabe, die Sie lernen VBA motiviert. Wenn dies der Fall ist, große! Wenn dies nicht der Fall ist, ein guter nächste Schritt ist den Bereich eine weitere allgemeine Verständnis von VBA zu erweitern.

Eine Möglichkeit, Weitere Informationen zu VBA ist Arbeitscode zu studieren. Zusätzlich zu den Beispielen in der Objektmodellreferenz und die VBA-Sprachreferenz steht es eine enorme Menge an PowerPoint VBA-Code aus verschiedenen online-Quellen, einschließlich von Artikeln auf der MSDN-Websites, die von Microsoft Most Valuable Professionals (MVPs), die in PowerPoint spezialisiert sind und andere, die Sie mit eine schnelle Suche im Web finden können verwaltet werden.

Der Code in diesen Ressourcen können Sie Ihre unmittelbare Codierung Probleme lösen und Ihnen Ideen für Projekte, denen Sie nicht noch gedacht haben könnte.

Wenn Sie eine systematischere Studie von VBA zu verfolgen lieber, es gibt mehrere gute Bücher auf VBA und entscheiden, die besten für Ihr Lernstil mehrere gute Bewertungen jedes dieser Bücher im Web, die Ihnen helfen können.

Weitere Ressourcen

Ee814734.note(de-de,office.14).gifHinweis:

Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft