L'automazione è un processo che consente alle applicazioni
scritte in linguaggi quali Visual Basic di controllare altre applicazioni a
livello di programmazione. L'automazione di Excel consente di eseguire
operazioni quali la creazione di una nuova cartella di lavoro, l'aggiunta di
dati alla cartella di lavoro e la creazione di grafici. In Excel e in altre
applicazioni di Microsoft Office, l'automazione consente di eseguire a livello
di programmazione teoricamente tutte le azioni che vengono eseguite manualmente
tramite l'interfaccia grafica.
Excel espone questa funzionalità a
livello di programmazione tramite un modello di oggetti. Il modello di oggetti
è un insieme di classi e metodi che corrispondono ai rispettivi componenti
logici di Excel. Esistono, ad esempio, oggetti Application, Workbook e Worksheet, contenenti le funzionalità degli oggetti corrispondenti in Word.
Per accedere al modello di oggetti da Visual Basic .NET, è possibile impostare
un riferimento del progetto alla libreria dei tipi.
In questo articolo
viene spiegato come impostare correttamente il riferimento del progetto alla
libreria dei tipi di Excel per Visual Basic .NET e vengono forniti esempi di
codice per l'automazione di Excel.
Creazione di un client di automazione per Microsoft Excel
Avviare Microsoft Visual Studio .NET.
Scegliere Nuovo dal menu
File, quindi Progetto. Selezionare
Applicazione per Windows dai tipi di progetto di Visual Basic.
Per impostazione predefinita, viene creato il progetto Form1.
Aggiungere un riferimento alla libreria di oggetti
di Microsoft Excel. Per effettuare questa operazione, attenersi alla
seguente procedura:
Scegliere Aggiungi riferimento dal
menu Progetto.
Nella scheda COM individuare la
libreria di oggetti di Microsoft Excel, quindi scegliere
Seleziona.
Nota Microsoft Office 2003 include gli assembly di interoperabilità
primari (PIA, Primary Interop Assembly). Non sono invece inclusi in Microsoft
Office XP, ma possono essere scaricati.
Per ulteriori informazioni sugli assembly di interoperabilità primari di Office
XP, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato
di seguito:
328912
(http://support.microsoft.com/kb/328912/
)
Assembly di interoperabilità primari (PIA) di Microsoft Office XP disponibili per il download
Scegliere OK nella finestra di dialogo
Aggiungi riferimento per accettare le selezioni.
Scegliere Casella degli strumenti dal menu
Visualizza per visualizzare la Casella degli strumenti, quindi
aggiungere un pulsante a Form1.
Fare doppio clic su Button1. Viene
visualizzata la finestra del codice per il form.
Nella finestra del codice individuare il codice seguente:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
End Sub
Sostituire il codice precedente con il seguente:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
' Start Excel and get Application object.
oXL = CreateObject("Excel.Application")
oXL.Visible = True
' Get a new workbook.
oWB = oXL.Workbooks.Add
oSheet = oWB.ActiveSheet
' Add table headers going cell by cell.
oSheet.Cells(1, 1).Value = "First Name"
oSheet.Cells(1, 2).Value = "Last Name"
oSheet.Cells(1, 3).Value = "Full Name"
oSheet.Cells(1, 4).Value = "Salary"
' Format A1:D1 as bold, vertical alignment = center.
With oSheet.Range("A1", "D1")
.Font.Bold = True
.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
End With
' Create an array to set multiple values at once.
Dim saNames(5, 2) As String
saNames(0, 0) = "John"
saNames(0, 1) = "Smith"
saNames(1, 0) = "Tom"
saNames(1, 1) = "Brown"
saNames(2, 0) = "Sue"
saNames(2, 1) = "Thomas"
saNames(3, 0) = "Jane"
saNames(3, 1) = "Jones"
saNames(4, 0) = "Adam"
saNames(4, 1) = "Johnson"
' Fill A2:B6 with an array of values (First and Last Names).
oSheet.Range("A2", "B6").Value = saNames
' Fill C2:C6 with a relative formula (=A2 & " " & B2).
oRng = oSheet.Range("C2", "C6")
oRng.Formula = "=A2 & "" "" & B2"
' Fill D2:D6 with a formula(=RAND()*100000) and apply format.
oRng = oSheet.Range("D2", "D6")
oRng.Formula = "=RAND()*100000"
oRng.NumberFormat = "$0.00"
' AutoFit columns A:D.
oRng = oSheet.Range("A1", "D1")
oRng.EntireColumn.AutoFit()
' Manipulate a variable number of columns for Quarterly Sales Data.
Call DisplayQuarterlySales(oSheet)
' Make sure Excel is visible and give the user control
' of Excel's lifetime.
oXL.Visible = True
oXL.UserControl = True
' Make sure that you release object references.
oRng = Nothing
oSheet = Nothing
oWB = Nothing
oXL.Quit()
oXL = Nothing
Exit Sub
Err_Handler:
MsgBox(Err.Description, vbCritical, "Error: " & Err.Number)
End Sub
Private Sub DisplayQuarterlySales(ByVal oWS As Excel.Worksheet)
Dim oResizeRange As Excel.Range
Dim oChart As Excel.Chart
Dim oSeries As Excel.Series
Dim iNumQtrs As Integer
Dim sMsg As String
Dim iRet As Integer
' Determine how many quarters to display data for.
For iNumQtrs = 4 To 2 Step -1
sMsg = "Enter sales data for" & Str(iNumQtrs) & " quarter(s)?"
iRet = MsgBox(sMsg, vbYesNo Or vbQuestion _
Or vbMsgBoxSetForeground, "Quarterly Sales")
If iRet = vbYes Then Exit For
Next iNumQtrs
' Starting at E1, fill headers for the number of columns selected.
oResizeRange = oWS.Range("E1", "E1").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=""Q"" & COLUMN()-4 & CHAR(10) & ""Sales"""
' Change the Orientation and WrapText properties for the headers.
oResizeRange.Orientation = 38
oResizeRange.WrapText = True
' Fill the interior color of the headers.
oResizeRange.Interior.ColorIndex = 36
' Fill the columns with a formula and apply a number format.
oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=RAND()*100"
oResizeRange.NumberFormat = "$0.00"
' Apply borders to the Sales data and headers.
oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Borders.Weight = Excel.XlBorderWeight.xlThin
' Add a Totals formula for the sales data and apply a border.
oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=SUM(E2:E6)"
With oResizeRange.Borders(Excel.XlBordersIndex.xlEdgeBottom)
.LineStyle = Excel.XlLineStyle.xlDouble
.Weight = Excel.XlBorderWeight.xlThick
End With
' Add a Chart for the selected data.
oResizeRange = oWS.Range("E2:E6").Resize(ColumnSize:=iNumQtrs)
oChart = oWS.Parent.Charts.Add
With oChart
.ChartWizard(oResizeRange, Excel.XlChartType.xl3DColumn, , Excel.XlRowCol.xlColumns)
oSeries = .SeriesCollection(1)
oSeries.XValues = oWS.Range("A2", "A6")
For iRet = 1 To iNumQtrs
.SeriesCollection(iRet).Name = "=""Q" & Str(iRet) & """"
Next iRet
.Location(Excel.XlChartLocation.xlLocationAsObject, oWS.Name)
End With
' Move the chart so as not to cover your data.
With oWS.Shapes.Item("Chart 1")
.Top = oWS.Rows(10).Top
.Left = oWS.Columns(2).Left
End With
' Free any references.
oChart = Nothing
oResizeRange = Nothing
End Sub
Aggiungere il codice riportato di seguito nella parte
superiore di Form1.vb:
Imports Microsoft.Office.Core
Verifica del client di automazione
Premere F5 per compilare ed eseguire il
programma.
Nel form fare clic su Button1. Verrà
avviato Excel e verranno inseriti dati in un nuovo foglio di lavoro.
Quando viene richiesto di immettere dati di vendita
trimestrali, scegliere Yes. Al foglio di lavoro verrà aggiunto
un grafico collegato ai dati di vendita trimestrali.
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.
Lasciare un commento su queste informazioni
Queste informazioni hanno risolto il problema?
Sì
No
Non so
Queste informazioni erano pertinenti?
Sì
No
In che modo possiamo migliorarle?
Per salvaguardare la privacy, non includere informazioni personali nei commenti.
Grazie. I commenti e suggerimenti forniti verranno utilizzati per migliorare la qualità dei contenuti di supporto tecnico. Per ulteriori opzioni di assistenza, visitare la home page del Supporto Tecnico Microsoft.