domenica 30 ottobre 2011

[VB6] Interazione con Excel

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.


Un Click su "Mi Piace" è il modo migliore per ringraziare l'autore di questo articolo.



0 commenti:

Posta un commento

Favorites Twitter Facebook Delicious Digg Stumbleupon More

 
Design by Free WordPress Themes Modificato da MarcoGG