Help and Support

Identificativo articolo: 306682 - Ultima modifica: mercoledì 17 gennaio 2007 - Revisione: 5.1

How to Eseguire macro di Office utilizzando l'automazione da Visual Basic .NET

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I306682
Per la versione di questo articolo relativa a Microsoft Visual C# .NET vedere (gli articoli con prefisso "Q" contengono informazioni in inglese): 306683  (http://support.microsoft.com/kb/306683/ ) .
Per la versione di questo articolo relativa a Microsoft Visual C++ vedere (gli articoli con prefisso "Q" contengono informazioni in inglese): 306686  (http://support.microsoft.com/kb/306686/ ) .
Espandi tutto | Chiudi tutto

Sommario

Utilizzando l'automazione di Microsoft Office è possibile aprire un documento o crearne uno nuovo che contenga una macro di Visual Basic Applications Edition (VBA) ed eseguire tale macro in fase di esecuzione. In questo articolo viene illustrato come chiamare macro di Office da un client di automazione di Visual Basic .NET.

Informazioni

Il client di automazione di esempio riportato di seguito manipola un server di automazione di Office, ad esempio Access, Excel, PowerPoint o Word, sulla base della selezione eseguita in un modulo. Dopo che il client ha avviato il server di automazione, apre un documento e quindi chiama due macro. La prima macro, DoKbTest, non ha parametri, mentre la seconda, DoKbTestWithParameter, assume un singolo parametro di tipo String.

Creazione di documenti di Office contenenti macro

  1. Creare un documento di Word denominato C:\Doc1.doc. Per fare questo, attenersi alla seguente procedura:
    1. Creare un nuovo documento in Microsoft Word.
    2. Premere ALT+F11 per aprire Visual Basic Editor.
    3. Scegliere Modulo dal menu Inserisci.
    4. Nel nuovo modulo digitare il seguente codice per la macro:
      'Display a message box that displays the application name.
      Public Sub DoKbTest()
         MsgBox "Hello from " & Application.Name
      End Sub
      
      'Display a message box with the string passed from the
      'Automation client.
      Public Sub DoKbTestWithParameter( sMsg As String )
         MsgBox sMsg
      End Sub
    5. Chiudere Visual Basic Editor, salvare il documento e chiudere Word.
  2. Creare una cartella di lavoro di Excel denominata C:\Book1.xls utilizzando una procedura simile a quella vista per la creazione del documento di Word.
  3. Creare una presentazione di PowerPoint denominata C:\Pres1.ppt utilizzando una procedura simile a quella vista per la creazione del documento di Word.
  4. Creare un nuovo database di Access denominato C:\Db1.mdb. Per eseguire questa operazione, attenersi alla seguente procedura:
    1. Scegliere Modulo dal menu Inserisci.
    2. Incollare il codice della macro nel nuovo modulo.
    3. Salvare il modulo e chiudere Access.

Creazione del client di automazione di Visual Basic .NET

  1. Avviare Microsoft Visual Studio .NET. Scegliere Nuovo dal menu File, quindi scegliere Progetto. Selezionare Applicazione Windows dai tipi di progetti di Visual Basic. In base all'impostazione predefinita viene creato il progetto Form1.
  2. Aggiungere un riferimento alle librerie di oggetti di Access, Excel, PowerPoint e Word. Per eseguire questa operazione, attenersi alla seguente procedura:
    1. Scegliere Aggiungi riferimento dal menu Progetto.
    2. Nella scheda COM trovare Microsoft Word Object Library e scegliere Seleziona.

      NOTA: la libreria di oggetti di Microsoft Word contiene un numero di versione, rispettivamente 9.0 per Word 2000 e 10.0 per Word 2002.
    3. Ripetere il passaggio precedente per le librerie di oggetti di Access, Excel e PowerPoint.
    4. Scegliere OK nella finestra di dialogo Aggiungi riferimento per accettare la selezione. Se viene chiesto di generare wrapper per le librerie selezionate, scegliere .
  3. Scegliere Casella degli strumenti dal menu Visualizza. Aggiungere una casella combinata e un pulsante a Form1.
  4. Fare doppio clic su Button1 per generare una definizione per il gestore dell'evento Click del pulsante.
  5. Incollare nella procedura Button1_Click il codice riportato di seguito:
    Select Case ComboBox1.SelectedItem
    
        Case "Access"
    
            Dim oAccess As Access.ApplicationClass
    
            'Start Access and open the database.
            oAccess = CreateObject("Access.Application")
            oAccess.Visible = True
            oAccess.OpenCurrentDatabase("c:\db1.mdb", False)
    
            'Run the macros.
            oAccess.Run ("DoKbTest")
            oAccess.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
    
            'Clean-up: Quit Access without saving changes to the database.
            oAccess.DoCmd().Quit (Access.AcQuitOption.acQuitSaveNone)
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oAccess)
            oAccess = Nothing
    
        Case "Excel"
    
            Dim oExcel As Excel.ApplicationClass
            Dim oBook As Excel.WorkbookClass
            Dim oBooks As Excel.Workbooks
    
            'Start Excel and open the workbook.
            oExcel = CreateObject("Excel.Application")
            oExcel.Visible = True
            oBooks = oExcel.Workbooks
            oBook = oBooks.Open("c:\book1.xls")
    
            'Run the macros.
            oExcel.Run ("DoKbTest")
            oExcel.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
    
            'Clean-up: Close the workbook and quit Excel.
            oBook.Close (False)
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oBook)
            oBook = Nothing
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oBooks)
            oBooks = Nothing
            oExcel.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oExcel)
            oExcel = Nothing
    
        Case "PowerPoint"
    
            Dim oPP As PowerPoint.ApplicationClass
            Dim oPresSet As PowerPoint.Presentations
            Dim oPres As PowerPoint.PresentationClass
    
            'Start PowerPoint and open the presentation.
            oPP = CreateObject("PowerPoint.Application")
            oPP.Visible = True
            oPresSet = oPP.Presentations
            oPres = oPresSet.Open("c:\pres1.ppt", , , True)
    
            'Run the macros.
            oPP.Run ("'pres1.ppt'!DoKbTest")
            oPP.Run("'pres1.ppt'!DoKbTestWithParameter", "Hello from VB .NET Client")
    
            'Clean-up: Close the presentation and quit PowerPoint.
            oPres.Close()
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oPres)
            oPres = Nothing
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oPresSet)
            oPresSet = Nothing
            oPP.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oPP)
            oPP = Nothing
    
        Case "Word"
    
            Dim oWord As Word.ApplicationClass
    
            'Start Word and open the document.
            oWord = CreateObject("Word.Application")
            oWord.Visible = True
            oWord.Documents.Open ("C:\Doc1.doc")
    
            'Run the macros.
            oWord.Run ("DoKbTest")
            oWord.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
    
            'Quit Word.
            oWord.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oWord)
            oWord = Nothing
    
    End Select
    
    GC.Collect()
  6. Scegliere Finestra di progettazione dal menu Visualizza e fare doppio clic su Form1 per generare una definizione per l'evento Load del modulo.
  7. Incollare nella procedura Form1_Load il codice riportato di seguito:
            ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
            Dim a As String() = {"Access", "Excel", "PowerPoint", "Word"}
            ComboBox1.Items.AddRange(a)
            ComboBox1.SelectedIndex = 0

Esecuzione e verifica del client di automazione

  1. Premere F5 per eseguire l'applicazione.
  2. Selezionare un'applicazione di Office da ComboBox1 e fare clic su Button1. L'applicazione di Office selezionata verrà avviata e le macro DoKBTest e DoKBTestWithParameter verranno eseguite.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Knowledge Base riportati di seguito (gli articoli con prefisso "Q" contengono informazioni in inglese):
303871  (http://support.microsoft.com/kb/303871/ ) How to Create an Excel Macro Using Automation from Visual Basic .NET
177760  (http://support.microsoft.com/kb/177760/ ) VBA: How to Run Macros in Other Office Programs
Per ulteriori informazioni e risorse sull'automazione di Office, vedere i seguenti siti Web Microsoft:
Microsoft Office Development with Visual Studio (informazioni in lingua inglese)
http://msdn.microsoft.com/library/techart/VSOfficeDev.htm (http://msdn.microsoft.com/library/techart/VSOfficeDev.htm)

FAQs And Highlights for Office Development (informazioni in lingua inglese)
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx (http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx)

Le informazioni in questo articolo si applicano a
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Access 2002 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Word 2002 Standard Edition
Chiavi: 
_ik11561 kbaccess kbautomation kbexcel kbgrpdso kbhowto kbword KB306682
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.

Traduzione articoli