HOWTO: Visual Basic .NET으로 PowerPoint 이벤트 처리

기술 자료 번역 기술 자료 번역
기술 자료: 308330 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR308330
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
본 문서의 Microsoft Visual C# .NET 버전에 대한 내용은 308825를 참조하십시오.
본 문서의 Microsoft Visual C++ .NET 버전에 대한 내용은 309309를 참조하십시오.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 Visual Basic .NET을 사용하여 PowerPoint를 자동화하고 이벤트를 처리하는 방법을 설명합니다.

추가 정보

Microsoft Visual Studio .NET에서는 PowerPoint의 이벤트 싱크에 위임을 사용할 수 없습니다. PowerPoint는 IDispatch 인터페이스를 사용하여 이벤트를 발생시킵니다. 이벤트 싱크를 올바르게 수행하려면 Visual Basic .NET 응용 프로그램은 IConnectionPointContainerIConnectionPoint 인터페이스를 사용해야 합니다. 또한 수신 응용 프로그램이 싱크할 이벤트의 DISPID를 알고 있어야 합니다. 이러한 DISPID는 PowerPoint의 형식 라이브러리에 나타나지 않지만 아래 예제 코드에는 참조를 위하여 표시했습니다.

예제 Visual Basic .NET 자동화 클라이언트 만들기

  1. Microsoft Visual Studio .NET을 시작합니다. 파일 메뉴에서 새로 만들기를 누른 다음 프로젝트를 누릅니다. 프로젝트 형식에서 Visual Basic 프로젝트를 누른 다음 템플릿에서 Windows 응용 프로그램을 누릅니다. 기본적으로 Form1이 만들어집니다.
  2. Microsoft PowerPoint 개체 라이브러리에 대한 참조를 추가합니다. 이렇게 하려면 다음과 같이 하십시오.
    1. 프로젝트 메뉴에서 참조 추가를 누릅니다.
    2. COM 탭에서 Microsoft PowerPoint Object Library를 찾아 선택을 누릅니다.

      참고: PowerPoint 개체 라이브러리에는 버전 번호가 포함되어 있는데, PowerPoint 2000의 버전은 9.0이고 PowerPoint 2002의 버전은 10.0입니다.
    3. 참조 추가 대화 상자에서 확인을 눌러 선택한 내용을 적용합니다. 선택한 라이브러리에 대해 래퍼를 만들 것인지 묻는 메시지가 나타나면 를 누릅니다.
  3. 보기 메뉴에서 도구 상자를 눌러 도구 상자를 표시하고 Form1에 단추 둘과 목록 상자 하나를 추가합니다.
  4. Button1, Button2Form1을 순서대로 두 번씩 누릅니다.
  5. 코드 창에서 아래의 코드를
    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
    다음 코드로 대체합니다.
    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
    참고: 예제에 나와 있는 것처럼 이 코드는 PowerPoint 9.0 개체 라이브러리를 사용합니다. 프로젝트의 참조 추가에 PowerPoint 9.0 개체 라이브러리 대신 PowerPoint 10.0 개체 라이브러리를 선택했다면 코드에서 "POWERPOINT10"이 포함되어 있는 주석을 찾아 해당 주석이 참조하는 코드의 행에서 주석 표시를 제거합니다. 마찬가지로, 코드에서 "POWERPOINT9"가 포함되어 있는 주석을 찾아 해당 주석이 참조하는 코드의 행에 주석을 답니다.

  6. 다음 코드로 대체합니다. 코드 창의 맨 위에 있는 Imports 구역에 다음 코드를 추가합니다.
    Imports System.Runtime.InteropServices
  7. 다음 코드로 대체합니다. 프로그램을 테스트합니다. 이렇게 하려면 다음과 같이 하십시오.
    1. F5 키를 눌러 프로그램을 빌드하고 실행합니다. PowerPoint가 시작됩니다.
    2. Button1을 눌러 이벤트 싱크를 설정합니다.
    3. PowerPoint에서 새 프레젠테이션을 만듭니다.

      WindowActivate, NewPresentation, PresentationNewSlideWindowSelectionChange 이벤트가 발생합니다.
    4. 프레젠테이션을 저장합니다.

      PresentationSave 이벤트가 발생합니다.
    5. 프레젠테이션을 닫습니다.

      PresentationClose 이벤트가 발생합니다.
    6. 프로그램에서 Form1을 활성화합니다. PowerPoint에 의해 트리거되고 프로그램에서 처리한 이벤트가 목록 상자에 나타납니다.
    7. Button2를 눌러 이벤트 싱크 연결을 끊습니다.
    8. Form1을 닫습니다.
다음 PowerPoint 응용 프로그램 이벤트는 PowerPoint 2002에서 새로 소개된 것이며 PowerPoint 2002를 자동화할 때만 발생합니다.

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
254009 INFO: PowerPoint 2000 Event Demonstration Available for Download
Office 자동화에 대한 자세한 내용은 다음 Microsoft Office 개발 지원 사이트를 참조하십시오.
Office 개발에 대한 FAQ 및 중요 사항
http://support.microsoft.com/ofd

속성

기술 자료: 308330 - 마지막 검토: 2014년 2월 13일 목요일 - 수정: 3.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
키워드:?
kbnosurvey kbarchive kbhowto kbautomation _ik11561 kbgrpdso KB308330

피드백 보내기

 

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