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.



20:53
MarcoGG

Posted in:
0 commenti:
Posta un commento