SO WIRD'S GEMACHT: Behandlung von PowerPoint-Ereignissen mit Visual Basic .NET

Dieser Artikel wurde zuvor veröffentlicht unter D308330
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
308330 HOWTO: Handle PowerPoint Events With Visual Basic .NET
In Artikel 308825 wird dieses Thema für Microsoft Visual C# .NET behandelt.
In Artikel 309309 wird dieses Thema für Microsoft Visual C++ .NET behandelt.

Hinweis: Die Verwendung der hier aufgeführten Informationen sowie Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Weitere Informationen zu den von Microsoft angebotenen Supportoptionen finden Sie unter folgender Internetadresse:
Zusammenfassung
Dieser Artikel beschreibt, wie Sie mit Visual Basic .NET PowerPoint automatisieren und Ereignisse behandeln.
Weitere Informationen
In Microsoft Visual Studio .NET können Sie keine Delegate zum Auffangen von Ereignissen mit PowerPoint verwenden. PowerPoint verwendet die Schnittstelle IDispatch, um Ereignisse auszulösen. Um die Ereignisse richtig aufzufangen, muss die Visual Basic .NET-Anwendung die Schnittstellen IConnectionPointContainer und IConnectionPoint verwenden. Die empfangende Anwendung muss außerdem die DISPIDs der aufzufangenden Ereignisse kennen. Diese DISPIDs sind in der Typenbibliothek von PowerPoint nicht aufgeführt, werden jedoch im folgenden Beispielcode aufgelistet.

Beispiel-Automatisierungsclient in Visual Basic .NET erstellen

  1. Starten Sie Microsoft Visual Studio .NET. Klicken Sie im Menü Datei auf Neu und klicken Sie dann auf Projekt. Klicken Sie unter Projekttypen auf Visual Basic-Projekte und dann unter Vorlagen auf Windows-Anwendung. Form1 wird standardmäßig erstellt.
  2. Fügen Sie zur Microsoft PowerPoint-Objektbibliothek einen Verweis hinzu. Gehen Sie dazu folgendermaßen vor:
    1. Klicken Sie im Menü Projekt auf Verweis hinzufügen.
    2. Suchen Sie Microsoft PowerPoint Object Library unter der Registerkarte COM und klicken Sie auf Auswählen.

      Hinweis: Die PowerPoint-Objektbibliothek hat eine Versionsnummer. Für PowerPoint 2000 ist das die Version 9.0, für PowerPoint 2002 die Version 10.0.
    3. Klicken Sie im Dialogfeld Verweise hinzufügen auf OK, um Ihre Auswahl zu bestätigen. Klicken Sie auf Ja, wenn Sie gefragt werden, ob für die ausgewählten Bibliotheken Wrapper erstellt werden sollen.
  3. Klicken Sie im Menü Ansicht auf Toolbox, um die Toolbox anzuzeigen, und fügen Sie zu Form1 zwei Schaltflächen und ein Listenfeld hinzu.
  4. Doppelklicken Sie nacheinander auf Button1, Button2 und Form1.
  5. Ersetzen Sie im Codefenster folgenden Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickEnd SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickEnd SubPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadEnd Sub
    durch:
    Private m_oConnectionPoint As UCOMIConnectionPointPrivate m_Cookie As IntegerPrivate oPPT As PowerPoint.ApplicationPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load    ' Create a new instance of PowerPoint.    oPPT = New PowerPoint.Application()    ' Show PowerPoint to the user.    'POWERPOINT9    oPPT.Visible = Office.MsoTriState.msoTrue    'POWERPOINT10    'oPPT.Visible = Microsoft.Office.Core.MsoTriState.msoTrueEnd SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click    ' Call Unadvise to remove the sink to the connection.    m_oConnectionPoint.Unadvise(m_Cookie)    System.Runtime.InteropServices.Marshal.ReleaseComObject(oPPT)    GC.Collect()End SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click    Dim oConnPointContainer As UCOMIConnectionPointContainer    ' QI for IConnectionPointContainer.    oConnPointContainer = CType(oPPT, UCOMIConnectionPointContainer)    ' Create a new variable that contains the GUID of the PowerPoint.EApplication interface.    Dim guid As New Guid("914934C2-5A91-11CF-8700-00AA0060263B")    ' Find the connection point.    oConnPointContainer.FindConnectionPoint(guid, m_oConnectionPoint)    ' Call Advise to sink up the connection.    m_oConnectionPoint.Advise(Me, m_Cookie)End Sub<DispId(2001)> Public Sub WindowSelectionChange(ByVal Sel As PowerPoint.Selection)    Me.ListBox1.Items.Add("WindowSelectionChange")End Sub<DispId(2002)> Public Sub WindowBeforeRightClick(ByVal Sel As PowerPoint.Selection, ByVal Cancel As Boolean)    Me.ListBox1.Items.Add("WindowBeforeRightClick")End Sub<DispId(2003)> Public Sub WindowBeforeDoubleClick(ByVal Sel As PowerPoint.Selection, ByVal Cancel As Boolean)    Me.ListBox1.Items.Add("WindowBeforeDoubleClick")End Sub<DispId(2004)> Public Sub PresentationClose(ByVal Pres As PowerPoint.Presentation)    Me.ListBox1.Items.Add("PresentationClose")End Sub<DispId(2005)> Public Sub PresentationSave(ByVal Pres As PowerPoint.Presentation)    Me.ListBox1.Items.Add("PresentationSave")End Sub<DispId(2006)> Public Sub PresentationOpen(ByVal Pres As PowerPoint.Presentation)    Me.ListBox1.Items.Add("PresentationOpen")End Sub<DispId(2007)> Public Sub NewPresentation(ByVal Pres As PowerPoint.Presentation)    Me.ListBox1.Items.Add("NewPresentation")End Sub<DispId(2008)> Public Sub PresentationNewSlide(ByVal Sld As PowerPoint.Slide)    Me.ListBox1.Items.Add("PresentationNewSlide")End Sub<DispId(2009)> Public Sub WindowActivate(ByVal Pres As PowerPoint.Presentation, ByVal Wn As PowerPoint.DocumentWindow)    Me.ListBox1.Items.Add("WindowActivate")End Sub<DispId(2010)> Public Sub WindowDeactivate(ByVal Pres As PowerPoint.Presentation, ByVal Wn As PowerPoint.DocumentWindow)    Me.ListBox1.Items.Add("WindowDeactivate")End Sub<DispId(2011)> Public Sub SlideShowBegin(ByVal Wn As PowerPoint.SlideShowWindow)    Me.ListBox1.Items.Add("SlideShowBegin")End Sub<DispId(2012)> Public Sub SlideShowNextBuild(ByVal Wn As PowerPoint.SlideShowWindow)    Me.ListBox1.Items.Add("SlideShowNextBuild")End Sub<DispId(2013)> Public Sub SlideShowNextSlide(ByVal Wn As PowerPoint.SlideShowWindow)    Me.ListBox1.Items.Add("SlideShowNextSlide")End Sub<DispId(2014)> Public Sub SlideShowEnd(ByVal Pres As PowerPoint.Presentation)    Me.ListBox1.Items.Add("SlideShowEnd")End Sub<DispId(2015)> Public Sub PresentationPrint(ByVal Pres As PowerPoint.Presentation)    Me.ListBox1.Items.Add("PresentationPrint")End Sub'BEGIN POWERPOINT10'<DispId(2016)> Public Sub SlideSelectionChanged(ByVal SldRange As 'PowerPoint.SlideRange)'    Me.ListBox1.Items.Add("SlideSelectionChanged")'End Sub'<DispId(2017)> Public Sub ColorSchemeChanged(ByVal SldRange As 'PowerPoint.SlideRange)'    Me.ListBox1.Items.Add("ColorSchemeChanged")'End Sub'<DispId(2018)> Public Sub PresentationBeforeSave(ByVal Pres As 'PowerPoint.Presentation, ByVal Cancel As Boolean)'    Me.ListBox1.Items.Add("PresentationBeforeSave")'End Sub'<DispId(2019)> Public Sub SlideShowNextClick(ByVal Wn As 'PowerPoint.SlideShowWindow, ByVal nEffect As PowerPoint.Effect)'    Me.ListBox1.Items.Add("SlideShowNextClick")'End Sub'END POWERPOINT10
    Hinweis: Wie bereits beschrieben, verwendet dieser Code die Objektbibliothek von PowerPoint 9.0. Wenn Sie Ihrem Projekt Verweise hinzugefügt haben und die Objektbibliothek von PowerPoint 10.0 anstelle der Objektbibliothek von PowerPoint 9.0 ausgewählt haben, durchsuchen Sie den Code nach Kommentaren, in denen "//POWERPOINT10" vorkommt. Entfernen Sie die Kommentarzeichen vor der Codezeile bzw. den Codezeilen, auf die der Kommentar verweist. Durchsuchen Sie ebenso den Code nach Kommentaren, in denen "//POWERPOINT9" vorkommt, und stellen Sie der Codezeile bzw. den Codezeilen, auf die der Kommentar verweist, Kommentarzeichen voran.

  6. durch:Fügen Sie zum Abschnitt Imports am Anfang des Codefensters folgenden Code hinzu:
    Imports System.Runtime.InteropServices
  7. durch:Testen Sie das Programm. Gehen Sie dazu folgendermaßen vor:
    1. Drücken Sie F5, um das Programm zu erstellen und auszuführen. PowerPoint wird gestartet.
    2. Klicken Sie auf Button1, um die Ereignisdatensenken einzurichten.
    3. Erstellen Sie in PowerPoint eine neue Präsentation.

      Die Ereignisse WindowActivate, NewPresentation, PresentationNewSlide und WindowSelectionChange werden ausgelöst.
    4. Speichern Sie die Präsentation.

      Das Ereignis PresentationSave wird ausgelöst.
    5. Schließen Sie die Präsentation.

      Das Ereignis PresentationClose wird ausgelöst.
    6. Aktivieren Sie Form1 im Programm. Die Ereignisse, die von PowerPoint ausgelöst und vom Programm behandelt wurden, werden im Listenfeld angezeigt.
    7. Klicken Sie auf Button2, um die Ereignisdatensenken zu trennen.
    8. Schließen Sie Form1.
Folgende PowerPoint-Anwendungsereignisse sind neu in PowerPoint 2002 und werden nur bei Automatisierung von PowerPoint 2002 ausgelöst:
DISPID Method Name
2016 SlideSelectionChanged
2017 ColorSchemeChanged
2018 PresentationBeforeSave
2019 SlideShowNextClick

Informationsquellen

Weitere Informationen finden Sie in folgendem Artikel der Microsoft Knowledge Base:
254009 INFO: PowerPoint 2000 Event Demonstration Available for Download
Weitere Informationen zur Office-Automatisierung finden Sie auf folgender Microsoft-Support-Site für die Office-Entwicklung:
FAQs and Highlights for Office Development
http://support.microsoft.com/ofd


Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
powerpoint vb net event power point connection
Eigenschaften

Artikelnummer: 308330 – Letzte Überarbeitung: 02/03/2014 10:05:03 – Revision: 3.0

Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft PowerPoint 2000 Standard Edition, Microsoft PowerPoint 2002 Standard Edition

  • kbnosurvey kbarchive _ik11561 kbautomation kbgrpdso kbhowto KB308330
Feedback