Behandlung von PowerPoint-Ereignissen mit Visual Basic .NET 2003

Einführung

Dieser Artikel beschreibt, wie Microsoft Office PowerPoint ein Automatisierungsclient Ereignisse behandeln, die mit Microsoft Visual Basic .NET 2003 entwickelt.

Erstellen Sie einen Ereignishandler

Eines der folgenden Verfahren können Sie einen Ereignishandler erstellen, indem Visual Basic .NET. Die Methode hängt davon ab, wie den Ereignishandler mit einem Ereignis verknüpft werden soll.

Erstellen Sie Visual Basic .NET Automatisierungsclient, der PowerPoint-Ereignisse behandelt.

Nachfolgend Schritte zeigen, wie die AddHandler -Anweisung verwenden, um PowerPoint-Anwendungsereignisse bei verarbeiten, die mit Visual Basic .NET entwickelt.

Zum Erstellen eines Projekts von Visual Basic .NET folgendermaßen Sie vor:
  1. Starten Sie Microsoft Visual Studio .NET 2003.
  2. Klicken Sie im Menü Datei auf neuund klicken Sie dann auf Projekt.
  3. Klicken Sie in der Liste Projekttypen auf Visual Basic-Projekte. Klicken Sie in der Liste Vorlagen auf Windows-Anwendung.
  4. Nennen Sie das Projekt PowerPointEvents, und klicken Sie dann auf OK.

    Standardmäßig wird ein Formular mit dem Namen Form1 erstellt.
Verweise auf die Objektbibliothek Microsoft PowerPoint und Microsoft Graph-Objektbibliothek hinzuzufügen, gehen Sie folgendermaßen vor:
  1. Klicken Sie im Menü Projekt auf Verweis hinzufügen.
  2. Auf der Registerkarte COM auf eine der folgenden und klicken Sie auf auswählen:
    • Klicken Sie auf Microsoft PowerPoint 12.0-Objektbibliothekfür Microsoft Office PowerPoint 2007.
    • Microsoft Office PowerPoint 2003 klicken Sie auf Microsoft PowerPoint 11.0 Object Library.
  3. Auf der Registerkarte COM auf eine der folgenden und klicken Sie auf auswählen:
    • Microsoft Graph 12.0 klicken Sie auf Microsoft Graph 12.0-Objektbibliothek.
    • Microsoft Graph 11.0 klicken Sie auf Microsoft Graph 11.0-Objektbibliothek.
  4. Klicken Sie im Dialogfeld Verweise hinzufügen auf OK , um Ihre Auswahl zu bestätigen.
  5. Doppelklicken Sie auf das Formular.

    Das Code-Fenster wird geöffnet.
  6. Fügen Sie am Anfang der Datei Form1.vb folgenden Code hinzu:
    Imports PowerPoint = Microsoft.Office.Interop.PowerPointImports Office = Microsoft.Office.Core
    Imports Graph = Microsoft.Office.Interop.Graph

  7. Klicken Sie im Menü Ansicht auf Designer.
  8. Klicken Sie im Menü Ansicht auf Toolboxund fügen Sie eine Schaltfläche zu Form1 hinzu.
  9. Doppelklicken Sie auf Button1.

    Und das Ereignis Button1_Click wird das Codefenster geöffnet.
  10. Fügen Sie folgenden Code vor dem Ereignis Button1_Click im Code-Fenster:
    Dim oApp As PowerPoint.ApplicationDim oPres As PowerPoint.Presentation

  11. Fügen Sie folgenden Code zum Ereignis Button1_Click :
    Const sTemplate = "C:\Program Files\Microsoft Office\Templates\Presentation Designs\Orbit.pot"        ' If the previous template is not available, change the template name to a template name that is on your system.
    Const sVideo = "C:\WINDOWS\system32\oobe\images\intro.wmv"

    Dim oPresentations As PowerPoint.Presentations
    Dim oSlides As PowerPoint.Slides
    Dim oSlide As PowerPoint.Slide
    Dim oShapes As PowerPoint.Shapes
    Dim oShape As PowerPoint.Shape
    Dim oMovie As PowerPoint.Shape
    Dim oAnimationSettings As PowerPoint.AnimationSettings
    Dim oPlaySettings As PowerPoint.PlaySettings
    Dim oTextFrame As PowerPoint.TextFrame
    Dim oTextRange As PowerPoint.TextRange
    Dim oFont As PowerPoint.Font
    Dim oOLEFormat As PowerPoint.OLEFormat
    Dim oShadow As PowerPoint.ShadowFormat
    Dim oForeColor As PowerPoint.ColorFormat
    Dim oRange As PowerPoint.SlideRange
    Dim oSlideShowTransition As PowerPoint.SlideShowTransition

    'Start PowerPoint and then make the PowerPoint window visible but minimized.
    oApp = New PowerPoint.Application

    'Add event handlers.
    AddHandler oApp.SlideShowBegin, AddressOf oApp_SlideShowBegin
    AddHandler oApp.SlideShowNextSlide, AddressOf oApp_SlideShowNextSlide
    AddHandler oApp.PresentationClose, AddressOf oApp_PresentationClose

    oApp.Visible = True
    oApp.WindowState = PowerPoint.PpWindowState.ppWindowMinimized

    'Create a new presentation that is based on the specified template.
    oPresentations = oApp.Presentations
    oPres = oPresentations.Open(sTemplate, , , True)

    'Build slide 1.
    'Add text to the slide, change the font, and then insert or position a
    'movie on the first slide.
    oSlides = oPres.Slides
    oSlide = oSlides.Add(1, PowerPoint.PpSlideLayout.ppLayoutTitleOnly)
    oShapes = oSlide.Shapes
    oShape = oShapes.Item(1)
    oTextFrame = oShape.TextFrame
    oTextRange = oTextFrame.TextRange
    oTextRange.Text = "My sample presentation"
    oFont = oTextRange.Font
    oFont.Name = "Comic Sans MS"
    oFont.Size = 48

    oMovie = oShapes.AddMediaObject(sVideo, 150, 150, 500, 350)
    oAnimationSettings = oMovie.AnimationSettings
    oPlaySettings = oAnimationSettings.PlaySettings
    oPlaySettings.PlayOnEntry = True
    oPlaySettings.HideWhileNotPlaying = True

    'NAR to release references.
    NAR(oPlaySettings)
    NAR(oAnimationSettings)
    NAR(oMovie)
    NAR(oFont)
    NAR(oTextRange)
    NAR(oTextFrame)
    NAR(oShape)
    NAR(oShapes)
    NAR(oSlide)
    NAR(oSlides)

    'Build slide 2.
    'Add text to the slide title and then format the text. Also, add a chart to the
    'slide and then change the chart type to a 3D Column Clustered.
    oSlides = oPres.Slides
    oSlide = oSlides.Add(2, PowerPoint.PpSlideLayout.ppLayoutTitleOnly)
    oShapes = oSlide.Shapes
    oShape = oShapes.Item(1)
    oTextFrame = oShape.TextFrame
    oTextRange = oTextFrame.TextRange
    oTextRange.Text = "My chart"
    oFont = oTextRange.Font
    oFont.Name = "Comic Sans MS"
    oFont.Size = 48

    Dim oChart As Graph.Chart
    oShape = oShapes.AddOLEObject(150, 150, 480, 320, "MSGraph.Chart.8")
    oOLEFormat = oShape.OLEFormat
    oChart = oOLEFormat.Object
    oChart.ChartType = Graph.XlChartType.xl3DColumnClustered

    'NAR to release references.
    NAR(oChart)
    NAR(oOLEFormat)
    NAR(oFont)
    NAR(oTextRange)
    NAR(oTextFrame)
    NAR(oShape)
    NAR(oShapes)
    NAR(oSlide)
    NAR(oSlides)


    'Build slide 3.
    'Add a text effect to the slide and then apply shadows to the text effect.
    oSlides = oPres.Slides
    oSlide = oSlides.Add(3, PowerPoint.PpSlideLayout.ppLayoutBlank)
    oSlide.FollowMasterBackground = False
    oShapes = oSlide.Shapes
    oShape = oShapes.AddTextEffect(Office.MsoPresetTextEffect.msoTextEffect27, _
    "The End", "Impact", 96, False, False, 230, 200)

    oShadow = oShape.Shadow
    oForeColor = oShadow.ForeColor
    oForeColor.SchemeColor = PowerPoint.PpColorSchemeIndex.ppForeground
    oShadow.Visible = True
    oShadow.OffsetX = 3
    oShadow.OffsetY = 3

    'NAR to release references.
    NAR(oShadow)
    NAR(oForeColor)
    NAR(oShape)
    NAR(oShapes)
    NAR(oSlide)
    NAR(oSlides)


    'Modify the slide show transition settings for all three slides in
    'the presentation.
    Dim SlideIdx(3) As Integer
    SlideIdx(0) = 1
    SlideIdx(1) = 2
    SlideIdx(2) = 3

    oSlides = oPres.Slides
    oRange = oSlides.Range(SlideIdx)
    oSlideShowTransition = oRange.SlideShowTransition
    oSlideShowTransition.AdvanceOnTime = False
    oSlideShowTransition.EntryEffect = PowerPoint.PpEntryEffect.ppEffectBoxOut


    'Run the slide show in a separate method.
    RunSlideShow()

    'NAR to release references.
    NAR(oSlideShowTransition)
    NAR(oRange)
    NAR(oSlides)

    'Close the presentation without saving changes and then quit PowerPoint.
    oPres.Saved = True
    oPres.Close()

    'NAR the presentation objects.
    NAR(oPres)
    NAR(oPresentations)

    'Remove all event handlers.
    RemoveHandler oApp.SlideShowBegin, AddressOf oApp_SlideShowBegin
    RemoveHandler oApp.SlideShowNextSlide, AddressOf oApp_SlideShowNextSlide
    RemoveHandler oApp.PresentationClose, AddressOf oApp_PresentationClose

    'Quit PowerPoint.
    oApp.Quit()
    NAR(oApp)

    GC.Collect()

  12. Fügen Sie im Codefenster den folgenden Code unter dem Button1_Click -Ereignis:
    Private Sub RunSlideShow()            Dim oSettings As PowerPoint.SlideShowSettings
    Dim oSlideShowWindows As PowerPoint.SlideShowWindows

    oSettings = oPres.SlideShowSettings
    oSettings.StartingSlide = 1
    oSettings.EndingSlide = 3

    'Run the slide show. Wait for the slide show to finish.
    oSettings.Run()

    oSlideShowWindows = oApp.SlideShowWindows

    On Error Resume Next
    Do While oSlideShowWindows.Count >= 1
    System.Windows.Forms.Application.DoEvents()
    Loop

    NAR(oSlideShowWindows)
    NAR(oSettings)
    End Sub

    'NAR function to remove reference.
    Private Sub NAR(ByVal o As Object)
    Try
    System.Runtime.InteropServices.Marshal.ReleaseComObject(o)
    Catch
    Finally
    o = Nothing
    End Try
    End Sub

  13. Fügen Sie die folgenden Ereignishandler unter dem vorherigen Code hinzu:
    'Event Handlers
    Private Sub oApp_SlideShowBegin(ByVal Wn As Microsoft.Office.Interop.PowerPoint.SlideShowWindow)
    'Change the position and the size of the slide show window.
    Dim oView As PowerPoint.SlideShowView

    With Wn
    .Height = 325
    .Width = 400
    .Left = 100
    .Activate()
    End With

    'Start the movie at the first slide.
    oView = Wn.View
    oView.Next()

    NAR(oView)
    NAR(Wn)
    End Sub

    Private Sub oApp_SlideShowNextSlide(ByVal Wn As Microsoft.Office.Interop.PowerPoint.SlideShowWindow)
    'Change the color and the type of pointer depending on the slide.
    Dim Showpos As Integer
    Dim oView As PowerPoint.SlideShowView
    Dim oColorFormat As PowerPoint.ColorFormat

    oView = Wn.View
    Showpos = oView.CurrentShowPosition + 1

    If Showpos = 3 Then
    oColorFormat = oView.PointerColor
    oColorFormat.RGB = RGB(255, 0, 0)
    oView.PointerType = PowerPoint.PpSlideShowPointerType.ppSlideShowPointerPen
    Else
    oColorFormat = oView.PointerColor
    oColorFormat.RGB = RGB(0, 0, 0)
    oView.PointerType = PowerPoint.PpSlideShowPointerType.ppSlideShowPointerArrow
    End If

    NAR(oColorFormat)
    NAR(oView)
    NAR(Wn)
    End Sub

    Private Sub oApp_PresentationClose(ByVal Pres As Microsoft.Office.Interop.PowerPoint.Presentation)
    'Before you close the presentation, save the presentation as HTML.
    Pres.SaveAs("C:\TestEvents.htm", PowerPoint.PpSaveAsFileType.ppSaveAsHTML)
    NAR(Pres)
    End Sub

Probieren Sie es aus

  1. Drücken Sie F5, um die Anwendung auszuführen.
  2. Klicken Sie auf Button1.

    PowerPoint startet die Bildschirmpräsentation. Beachten Sie Folgendes:
    • Die erste Folie startet einen Film.
    • Der Zeiger ändert.
    • Ändert sich die Farbe auf die zweite Folie mit einem Diagramm.
  3. Schließen Sie die Präsentation.

Referenzen

Klicken Sie für weitere Informationen auf die folgenden Artikelnummern, um die betreffenden Artikel in der Microsoft Knowledge Base anzuzeigen:

308330 Behandlung von PowerPoint 2002 Ereignissen mit Visual Basic .NET 2002

254009 PowerPoint 2000 Ereignis Demo zum Download zur Verfügung

303717 Verwendung Automatisierung erstellen und Anzeigen von PowerPoint 2002-Präsentation oder Office PowerPoint 2003-Präsentation mit Visual Basic .NET 2002 und Visual Basic .NET 2003

823996 Wenn Sie eine Office-Typbibliothek in Visual Studio .NET verweisen PIA nicht gefunden

Eigenschaften

Artikelnummer: 824021 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback