Descrizione :
Un esempio semplice di lettura e scrittura di files Excel da VB6.
+ Articolo :
Scopo principale di questo articolo è di mettere in chiaro alcuni aspetti importanti ( almeno per me lo sono ) della gestione di documenti Office - in questo caso files di Excel 2007.
1. Si può ottenere un sensibile miglioramento sulla velocità delle operazioni impostando a False la visibilità dell'Application Excel.
2. Ottima cosa è creare un Oggetto per ogni WorkBook da gestire.
3. Le operazioni di Selezione - i vari .Select, e conseguenti richiami ad ActiveSheet, ActiveCell, e quant'altro, al 99% NON sono affatto necessari nelle operazioni di lettura o scrittura, e vanno evitate. Non solo perchè espongono a risultati spesso indesiderati, ma anche perchè rallentano il processo.
4. Una volta che ogni enità Excel è rappresentata dal proprio Oggetto, ci si riferisce sempre a quello, per ogni operazione.
Al termine del processo si chiudono e si scaricano sempre tutti gli Oggetti.
--> Nell'esempio ho due File Excel 2007 : ADD_1.xlsx e ADD_2.xlsx su cui eseguo operazioni di lettura cella per cella.
Un terzo file : SUM.xlsx destinato a contenere la somma delle celle da A1 ad A10 dei primi due.
--> N.B.: nel caso di Excel 2007 occorre aggiungere al Progetto un
RIF. a Microsoft Excel 12.0 Object Library.
--> Codice Esempio :
'Esempio con Excel 2007 : 'RIF. a Microsoft Excel 12.0 Object Library 'Percorso relativo WorkBooks Dim percorso As String percorso = App.Path & "\" 'Applicazione Excel : UNA sola per tutti i WorkBooks 'coinvolti nell'operazione Dim AppExcel As Excel.Application Set AppExcel = New Excel.Application 'Visibilità Applicazione Excel AppExcel.Visible = False 'Oggetti WorkBooks Dim WBAdd1 As Excel.Workbook Set WBAdd1 = AppExcel.Workbooks.Open(percorso & "ADD_1.xlsx") Dim WBAdd2 As Excel.Workbook Set WBAdd2 = AppExcel.Workbooks.Open(percorso & "ADD_2.xlsx") Dim WBSum As Excel.Workbook Set WBSum = AppExcel.Workbooks.Open(percorso & "SUM.xlsx") 'Operazioni Dim addendo1 As Integer Dim addendo2 As Integer Dim somma As Integer Dim i As Long For i = 1 To 10 addendo1 = WBAdd1.Worksheets("Foglio1").Range("A" & i).Value addendo2 = WBAdd2.Worksheets("Foglio1").Range("A" & i).Value somma = addendo1 + addendo2 WBSum.Worksheets("Foglio1").Range("A" & i).Value = somma Next i 'Salvataggio / Chiusura Oggetti WBAdd1.Close SaveChanges:=False Set WBAdd1 = Nothing WBAdd2.Close SaveChanges:=False Set WBAdd2 = Nothing WBSum.Close SaveChanges:=True Set WBSum = Nothing 'Chiusura Applicazione Excel AppExcel.Quit Set AppExcel = Nothing MsgBox "Processo completato", vbInformation, "OK"
+ Fine Articolo.
0 commenti:
Posta un commento