Identificativo articolo: 306682 - Ultima modifica: mercoledì 17 gennaio 2007 - Revisione: 5.1 How to Eseguire macro di Office utilizzando l'automazione da Visual Basic .NETQuesto 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/
)
.
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.
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
-
Creare un documento di Word denominato C:\Doc1.doc. Per fare questo, attenersi alla seguente procedura:
-
Creare un nuovo documento in Microsoft Word.
-
Premere ALT+F11 per aprire Visual Basic Editor.
-
Scegliere
Modulo
dal menu
Inserisci.
-
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 -
Chiudere Visual Basic Editor, salvare il documento e chiudere Word.
-
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.
-
Creare una presentazione di PowerPoint denominata C:\Pres1.ppt utilizzando una procedura simile a quella vista per la creazione del documento di Word.
-
Creare un nuovo database di Access denominato C:\Db1.mdb. Per eseguire questa operazione, attenersi alla seguente procedura:
-
Scegliere
Modulo
dal menu
Inserisci.
-
Incollare il codice della macro nel nuovo modulo.
-
Salvare il modulo e chiudere Access.
Creazione del client di automazione di Visual Basic .NET
-
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.
-
Aggiungere un riferimento alle librerie di oggetti di Access, Excel, PowerPoint e Word. Per eseguire questa operazione, attenersi alla seguente procedura:
-
Scegliere
Aggiungi riferimento
dal menu
Progetto.
-
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.
-
Ripetere il passaggio precedente per le librerie di oggetti di Access, Excel e PowerPoint.
-
Scegliere
OK
nella finestra di dialogo
Aggiungi riferimento
per accettare la selezione. Se viene chiesto di generare wrapper per le librerie selezionate, scegliere
Sì.
-
Scegliere
Casella degli strumenti
dal menu
Visualizza. Aggiungere una casella combinata e un pulsante a Form1.
-
Fare doppio clic su
Button1
per generare una definizione per il gestore dell'evento Click del pulsante.
-
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() -
Scegliere
Finestra di progettazione
dal menu
Visualizza
e fare doppio clic su
Form1
per generare una definizione per l'evento Load del modulo.
-
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
-
Premere F5 per eseguire l'applicazione.
-
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.
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:
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
| _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. | |