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 자동화 클라이언트 만들기

아래에 나와 있는 여러 단계에서는 Visual Basic .NET을 사용하여 개발된 자동화 클라이언트에서 AddHandler 문을 사용하여 PowerPoint 응용 프로그램 이벤트를 처리하는 방법을 보여 줍니다.

Visual Basic .NET 프로젝트를 만들려면 다음과 같이 하십시오.
  1. Microsoft Visual Studio .NET 2003을 시작합니다.
  2. 파일 메뉴에서 새로 만들기를 누른 다음 프로젝트를 누릅니다.
  3. 프로젝트 형식 목록에서 Visual Basic 프로젝트를 누릅니다. 템플릿 목록에서 Windows 응용 프로그램을 누릅니다.
  4. 프로젝트 이름을 PowerPointEvents로 지정한 다음 확인을 누릅니다.

    기본적으로 Form1이라는 폼이 만들어집니다.
Microsoft PowerPoint 개체 라이브러리 및 Microsoft Graph 개체 라이브러리에 대한 참조를 추가하려면 다음과 같이 하십시오.
  1. 프로젝트 메뉴에서 참조 추가를 누릅니다.
  2. COM 탭에서 Microsoft PowerPoint 11.0 개체 라이브러리를 누른 다음 선택을 누릅니다.
  3. COM 탭에서 Microsoft Graph 11.0 개체 라이브러리를 누른 다음 선택을 누릅니다.
  4. 참조 추가 대화 상자에서 확인을 눌러 선택한 내용을 적용합니다.
  5. 폼을 두 번 누릅니다.

    코드 창이 열립니다.
  6. Form1.vb 파일 맨 위에 다음 코드를 추가합니다.
    	Imports PowerPoint = Microsoft.Office.Interop.PowerPoint	Imports Office = Microsoft.Office.Core
    	Imports Graph = Microsoft.Office.Interop.Graph
    
  7. 보기 메뉴에서 디자이너를 누릅니다.
  8. 보기 메뉴에서 도구 상자를 누른 다음 Form1에 단추를 추가합니다.
  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에서 슬라이드 쇼가 시작됩니다. 다음 사항을 확인하십시오.
    • 첫 번째 슬라이드에서 동영상이 시작됩니다.
    • 포인터 종류가 바뀝니다.
    • 차트가 포함된 두 번째 슬라이드에서 색상이 바뀝니다.
  3. 프레젠테이션을 닫습니다.

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
308330 HOWTO: Visual Basic .NET으로 PowerPoint 이벤트 처리
254009 INFO: 다운로드할 수 있는 PowerPoint 2000 이벤트 데모
303717 HOWTO: Visual Basic .NET에서 자동화를 사용하여 PowerPoint 프레젠테이션을 만들고 표시하기
823996 PRB: Visual Studio .NET에서 Office 형식 라이브러리를 참조할 때 PIA를 찾을 수 없다

속성

기술 자료: 824021 - 마지막 검토: 2005년 12월 1일 목요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office PowerPoint 2003
  • Microsoft Visual Basic .NET 2003 Standard Edition
키워드:?
kbhowtomaster kbautomation KB824021

피드백 보내기

 

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