How to Gestione di eventi PowerPoint con Visual Basic .NET

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I308330
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Per la versione di questo articolo relativa a Microsoft Visual C# .NET vedere (gli articoli con prefisso "Q" contengono informazioni in inglese): 308825.
Per la versione di questo articolo relativa a Microsoft Visual C++ .NET vedere (gli articoli con prefisso "Q" contengono informazioni in inglese): 309309.
Sommario
Questo articolo illustra come automatizzare PowerPoint e gestire eventi mediante Visual Basic .NET.
Informazioni
Con Microsoft Visual Studio .NET non è possibile utilizzare delegati per elaborare eventi con PowerPoint. PowerPoint utilizza l'interfacciaIDispatchper generare gli eventi. Per elaborare correttamente gli eventi, è necessario che l'applicazione Visual Basic .NET utilizzi le interfacceIConnectionPointContainereIConnectionPoint. Inoltre gli DISPID degli eventi da elaborare devono essere noti all'applicazione di destinazione. I DISPID non sono elencati nella libreria dei tipi di PowerPoint, ma lo sono nel codice di esempio riportato di seguito per riferimento.

Creazione del client di automazione Visual Basic .NET di esempio

  1. Avviare Microsoft Visual Studio .NET. Dal menuFilescegliereNuovo, quindi scegliereProgetto. InTipi progetto, fare clic suProgetti di Visual Basic, quindi suApplicazione WindowsinModelli. In base all'impostazione predefinita viene creato il progetto Form1.
  2. Aggiungere un riferimento aLibreria oggetti di Microsoft PowerPoint. Per eseguire questa operazione, attenersi alla seguente procedura:
    1. Dal menuProgettoscegliereAggiungi riferimento.
    2. Nella schedaCOMindividuareMicrosoft PowerPoint Object Librarye scegliereSeleziona.

      NOTA: la libreria oggetti di PowerPoint contiene un numero di versione; la versione relativa a PowerPoint 2000 è 9.0, quella relativa a PowerPoint 2002 è 10.0.
    3. ScegliereOKnella finestra di dialogoAggiungi riferimentoper accettare la selezione. Se viene richiesto di generare wrapper per le librerie selezionate, scegliere.
  3. Dal menuVisualizzascegliereCasella degli strumentiper visualizzare la Casella degli strumenti e aggiungere due pulsanti e una casella di riepilogo a Form1.
  4. Fare doppio clic in sequenza suButton1,Button2eForm1.
  5. Nella finestra del codice sostituire il codice riportato di seguito:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickEnd SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickEnd SubPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadEnd Sub
    con:
    Private m_oConnectionPoint As UCOMIConnectionPointPrivate m_Cookie As IntegerPrivate oPPT As PowerPoint.ApplicationPrivate 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.msoTrueEnd SubPrivate 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 SubPrivate 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
    NOTA:il codice qui presentato utilizza la libreria di oggetti di PowerPoint 9.0. Quando si aggiungono riferimenti al progetto selezionando la libreria oggetti di PowerPoint 10.0 anziché quella di PowerPoint 9.0, cercare nel codice i commenti contenenti "'POWERPOINT10" e rimuovere il commento dalle righe di codice relative. Allo stesso modo, cercare nel codice i commenti contenenti "'POWERPOINT9" e impostare come commento la riga o le righe di codice relative.

  6. con:Aggiungere quanto riportato di seguito alla sezioneImportsnella parte superiore della finestra del codice:
    Imports System.Runtime.InteropServices
  7. con:Eseguire la verifica del programma. Per eseguire questa operazione, attenersi alla seguente procedura:
    1. Premere F5 per compilare ed eseguire il programma. Viene avviato PowerPoint.
    2. ScegliereButton1per impostare i sink di evento.
    3. Creare una nuova presentazione in PowerPoint.

      Gli eventiWindowActivate,NewPresentation,PresentationNewSlideeWindowSelectionChangevengono generati.
    4. Salvare la presentazione.

      Viene generato l'eventoPresentationSave.
    5. Chiudere la presentazione.

      Viene generato l'eventoPresentationClose.
    6. AttivareForm1nel programma. Nella casella di riepilogo vengono visualizzati gli eventi generati da PowerPoint e gestiti dal programma.
    7. ScegliereButton2per disconnettere i sink di evento.
    8. ChiudereForm1.
I seguenti eventi dell'applicazione PowerPoint sono nuovi in PowerPoint 2002 e vengono generati solo automatizzando PowerPoint 2002:
DISPID Nome metodo
2016 SlideSelectionChanged
2017 ColorSchemeChanged
2018 PresentationBeforeSave
2019 SlideShowNextClick

RIFERIMENTI

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito (gli articoli con prefisso "Q" contengono informazioni in inglese):
254009 INFO: PowerPoint 2000 Event Demonstration Available for Download
Per ulteriori informazioni sull'automazione di Office, visitare il seguente sito di supporto Microsoft Office Development:
FAQ e proposte per lo sviluppo di Office (informazioni in lingua inglese)
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
powerpoint vb net event power point connection
Proprietà

ID articolo: 308330 - Ultima revisione: 02/09/2014 17:13:31 - Revisione: 5.1

  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • kbnosurvey kbarchive kbhowto kbautomation _ik11561 kbgrpdso KB308330
Feedback