How to Gestione di eventi PowerPoint con Visual Basic .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 308330 - Visualizza i prodotti a cui si riferisce l?articolo.
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.
Espandi tutto | Chiudi tutto

In questa pagina

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'interfaccia IDispatch per generare gli eventi. Per elaborare correttamente gli eventi, è necessario che l'applicazione Visual Basic .NET utilizzi le interfacce IConnectionPointContainer e IConnectionPoint. 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 menu File scegliere Nuovo, quindi scegliere Progetto. In Tipi progetto, fare clic su Progetti di Visual Basic, quindi su Applicazione Windows in Modelli. In base all'impostazione predefinita viene creato il progetto Form1.
  2. Aggiungere un riferimento a Libreria oggetti di Microsoft PowerPoint. Per eseguire questa operazione, attenersi alla seguente procedura:
    1. Dal menu Progetto scegliere Aggiungi riferimento.
    2. Nella scheda COM individuare Microsoft PowerPoint Object Library e scegliere Seleziona.

      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. Scegliere OK nella finestra di dialogo Aggiungi riferimento per accettare la selezione. Se viene richiesto di generare wrapper per le librerie selezionate, scegliere .
  3. Dal menu Visualizza scegliere Casella degli strumenti per visualizzare la Casella degli strumenti e aggiungere due pulsanti e una casella di riepilogo a Form1.
  4. Fare doppio clic in sequenza su Button1, Button2 e Form1.
  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.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
    con:
    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
    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 sezione Imports nella 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. Scegliere Button1 per impostare i sink di evento.
    3. Creare una nuova presentazione in PowerPoint.

      Gli eventi WindowActivate, NewPresentation, PresentationNewSlide e WindowSelectionChange vengono generati.
    4. Salvare la presentazione.

      Viene generato l'evento PresentationSave.
    5. Chiudere la presentazione.

      Viene generato l'evento PresentationClose.
    6. Attivare Form1 nel programma. Nella casella di riepilogo vengono visualizzati gli eventi generati da PowerPoint e gestiti dal programma.
    7. Scegliere Button2 per disconnettere i sink di evento.
    8. Chiudere Form1.
I seguenti eventi dell'applicazione PowerPoint sono nuovi in PowerPoint 2002 e vengono generati solo automatizzando PowerPoint 2002:

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

Proprietà

Identificativo articolo: 308330 - Ultima modifica: domenica 9 febbraio 2014 - Revisione: 5.1
Le informazioni in questo articolo si applicano a
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
Chiavi: 
kbnosurvey kbarchive kbhowto kbautomation _ik11561 kbgrpdso KB308330
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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