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

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 308330 - Produkte anzeigen, auf die sich dieser Artikel bezieht
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:
http://support.microsoft.com/
Alles erweitern | Alles schließen

Auf dieser Seite

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.Click
    
    End Sub
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    
    End Sub
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    End Sub
    durch:
    Private m_oConnectionPoint As UCOMIConnectionPoint
    Private m_Cookie As Integer
    Private oPPT As PowerPoint.Application
    
    Private 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.msoTrue
    End Sub
    
    Private 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 Sub
    
    
    Private 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:

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.

Eigenschaften

Artikel-ID: 308330 - Geändert am: Montag, 3. Februar 2014 - Version: 3.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
Keywords: 
kbnosurvey kbarchive _ik11561 kbautomation kbgrpdso kbhowto KB308330
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com