Newsgroup: it.comp.lang.visual-basic
Titolo: Aggiornare file excel.

Salve al N.G. vorrei sapere come aggiungere dei valori nelle celle in un
file excel già esistente dopo averlo aperto con il seguente codice:
Dim Excel As Object
    Set Excel = CreateObject("Excel.Application")
    Excel.Workbooks.Open "miofile.xls", , True
    Excel.Visible = True
Grazie in anticipo.
--------------------------------
Inviato via 
http://usenet.libero.it

 file excel già esistente dopo averlo aperto con il seguente codice:
Strumenti -> Macro -> Registra Nuova Macro -> ...operazioni... -> Stop ->
Visual Basic Editor -> Copia -> VB -> Incolla
Alberto

Ho seguito il tuo consiglio scrivendo il seguente codice, ma nel file excell
aperto non mi aggiorna le celle.
    Set Excel = CreateObject("Excel.Application")
    Excel.Workbooks.Open App.Path & "\Nokia.xls", , True
 
    Set WKS = Excel.ActiveWorkbook.Worksheets.Add
    Excel.ActiveWorkbook.Sheets(1).Delete
 
    Range("A6").Select
    FormulaR1C1 = "MIA STRINGA 1"
    Range("B6").Select
    ActiveCell.FormulaR1C1 = "MIA STRINGA 2"
    Range("C6").Select
    ActiveCell.FormulaR1C1 = "MIA STRINGA 3"
 
    Excel.Visible = True
    Excel.Workbooks(1).Close False
    Excel.Workbooks.Close
    Excel.Quit
    Set Excel = Nothing
Credo ci sia qualcosa che mi sfugge.
Grazie


 Credo ci sia qualcosa che mi sfugge.
    Probabile. Vediamo se riusciamo a venirne a capo.
    Prima di tutto: questo codice dove gira? In un progetto di Excel o in
una applicazione Visual Basic?
    Quel "CreateObject" iniziale ci fa pensare alla seconda che ho detto.
    Altra questione: l'applicazione ha fra i riferimenti la Library Excel?
Si direbbe di si', altrimenti la compilazione non andrebbe a buon fine.
    In altri recenti post ho usato l'espressione "qualificare perfettamente"
a proposito degli oggetti che manipoliamo nei nostri codici. Con questo
intendo che dobbiamo seguire scrupolosamente e completamente la gerarchia
indicata dal modello degli oggetti della Library che stiamo usando.
    Quindi che ci fanno nel tuo codice quei "Range" appesi al nulla???
    La "gerarchia" e':
        Application
            Workbook
                Worksheet
                    Range
    "Qualificare perfettamente" vuol dire che quando scrivi "Range" devi
precisare "Range" *di quale* "Worksheet", "Worksheet" *di quale* "Workbook".
    Poi non mi sembra il caso, come dicevo in altro 3d, di usare "Excel"
come nome di variabile. Esiste gia' una cosa che si chiama Excel, la Library
Excel, appunto. Perche' "confondere" il programma confondendo anche noi
stessi?
    Esiste la notazione ungherese, e' semplice da applicare e fa proprio al
caso nostro. Adottiamone magari una versione "personalizzata" ma
adottiamola! Lo scopo e' quello di sapere, consocere, capire, qualsiasi riga
di codice si stia leggendo, cosa esattamente rappresentano le parole che
abbiamo scritto.
    Allora se, per esempio, ad una nostra variabile, valida a livello di
modulo (m_) assegniamo l'oggetto (o) Excel.Application (XlApp) perche' non
chiamare tale variabile:
        m_oXlApp
?
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

     ActiveCell.FormulaR1C1 = "MIA STRINGA 3"
Gli oggetti range e ActiveCell (che comunque è un Range), sono figli di
altri oggetti del modello.
Prima di questo devi mettere With WKS ed alla fine End With.
Il fatto però che tu non abbia chiaro questo mi fa pensare che tu non abbia
neppure guardato un po' di documentazione sull'object model di Excel. Il
registratore di macro è un ottimo aiuto, ma un po' di formazione di base
credo sia indispensabile.
Alberto

Grazie dell'aiuto. Ma vorrei approfondire la cosa. Puoi mandarmi degli
esempi o dirmi dove cercarli??
