Visual Basic .NET 2003 を使用して Office PowerPoint 2003 のイベントを処理する方法

はじめに

この資料では、Microsoft Visual Basic .NET 2003 を使用してオートメーション クライアントを開発して、Microsoft Office PowerPoint 2003 のイベントを処理する方法について説明します。


先頭に戻る

イベント ハンドラの作成

次のいずれかの方法を使用して、Visual Basic .NET でイベント ハンドラを作成できます。イベント ハンドラをイベントに関連付ける方法に応じて、どちらかの方法を選択します。
先頭に戻る

PowerPoint のイベントを処理する Visual Basic .NET オートメーション クライアントの作成

次の 2 組の手順では、Visual Basic .NET を使用して開発オートメーション クライアントを開発して、AddHandler ステートメントを使用して PowerPoint アプリケーション イベントを処理する方法を示します。


Visual Basic .NET プロジェクトを作成するには、以下の手順を実行します。
  1. Microsoft Visual Studio .NET 2003 を起動します。
  2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
  3. [プロジェクトの種類] ボックスの一覧で [Visual Basic プロジェクト] をクリックします。[テンプレート] ボックスの一覧で [Windows アプリケーション] をクリックします。
  4. プロジェクトに PowerPointEvents という名前を付けて、[OK] をクリックします。


    デフォルトでは、Form1 という名前のフォームが作成されます。
Microsoft PowerPoint Object Library および Microsoft Graph Object Library への参照を追加するには、以下の手順を実行します。
  1. [プロジェクト] メニューの [参照の追加] をクリックします。
  2. [COM] タブで [Microsoft PowerPoint 11.0 Object Library] をクリックし、[選択] をクリックします。
  3. [COM] タブで [Microsoft Graph 11.0 Object Library] をクリックし、[選択] をクリックします。
  4. [参照の追加] ダイアログ ボックスの [OK] をクリックして選択を確定します。
  5. フォームをダブルクリックします。


    コード ウィンドウが表示されます。
  6. Form1.vb ファイルの先頭に、次のコードを追加します。
    Imports PowerPoint = Microsoft.Office.Interop.PowerPoint
    Imports Office = Microsoft.Office.Core
    Imports Graph = Microsoft.Office.Interop.Graph
  7. [表示] メニューの [デザイナ] をクリックします。
  8. [表示] メニューの [ツールボックス] をクリックし、Form1 にボタンを 1 つ追加します。
  9. [Button1] をダブルクリックします。


    コード ウィンドウに Button1_Click イベントが表示されます。
  10. コード ウィンドウで、Button1_Click イベントの直前に以下のコードを配置します。
    Dim oApp As PowerPoint.Application
    Dim oPres As PowerPoint.Presentation
  11. 次のコードを 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. コード ウィンドウで、Button1_Click イベントの下に以下のコードを配置します。
    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. 前のコードの下に次のハンドラを追加します。
    '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
先頭に戻る

サンプルの実行

  1. F5 キーを押してアプリケーションを実行します。
  2. [Button1] をクリックします。


    PowerPoint でスライド ショーが始まります。次の点を確認してください。
    • 最初のスライドでは、ビデオが始まります。
    • マウス ポインタの種類が変更されています。
    • グラフを含んだ 2 枚目のスライドで色が変わります。
  3. プレゼンテーションを閉じます。
先頭に戻る

関連情報

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

308330 [HOWTO] Visual Basic .NET で PowerPoint のイベントを処理する方法
254009 [INFO] ダウンロード可能な PowerPoint 2000 のイベント デモンストレーション

303717 Visual Basic .NET 2002 または Visual Basic .NET 2003 でオートメーションを使用して PowerPoint 2002 プレゼンテーションまたは Office PowerPoint 2003 プレゼンテーションの作成および表示を行う方法
823996 [OFF2003] [PRB] Visual Studio .NET で Office タイプ ライブラリを参照すると PIA が見つからない
先頭に戻る
プロパティ

文書番号:824021 - 最終更新日: 2006/01/30 - リビジョン: 1

フィードバック