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

文書翻訳 文書翻訳
文書番号: 824021 - 対象製品
すべて展開する | すべて折りたたむ

目次

はじめに

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

イベント ハンドラの作成

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

    通常、イベント ハンドラは、Handles キーワードと WithEvents キーワードを使用して作成します。オブジェクトの参照変数を WithEvents キーワードを使用して宣言した場合、Visual Basic .NET は実行時にそのオブジェクトのイベントに自動的に接続します。オブジェクトの特定のイベントを処理するには、コード ビューを表示しているときに、Visual Studio .NET 環境の [クラス名] ボックスおよび [メソッド名] ボックスの一覧を使用して、関連するハンドラを追加します。
  • 方法 2

    Visual Basic .NET には、イベントを処理するための別の方法が用意されています。AddHandler ステートメントと RemoveHandler ステートメントを使用すると、特定のイベントに対するイベント処理を動的に開始することや停止することができます。

    : WithEvents キーワードを使用してイベント処理を作成した場合、System.Reflection.TargetInvocationException 例外が発生することがあります。このため、イベント ハンドラを作成するには、AddHandler イベントを使用してください。

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年1月30日 - リビジョン: 1.1
この資料は以下の製品について記述したものです。
  • Microsoft Office PowerPoint 2003
  • Microsoft Visual Basic .NET 2003 Standard Edition
キーワード:?
kbhowtomaster kbautomation KB824021
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

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