Newsgroup: it.comp.lang.visual-basic
Titolo: VB6] CreateObject con Excel 2000 e 2007

Sto' notando un comportamento curioso in un mio programma che genera
delle stampe pilotando Excel.
La sintassi che uso e' quella classica: una CreateObject("Excel.Applic
ation"), mi genero il foglio come mi serve, lo salvo e con una shell lo
lancio a video.
Con Excel 2000 e XP nessun problema; con Excel 2007, invece, spesso ho
dei tempi letargici di istanziazione dell'oggetto Excel.Application, e
di apertura del foglio appena salvato. Inoltre, se sul pc Excel e' gia'
stato aperto in precedenza (su un foglio qualsiasi), spesso i tempi si
riducono, come se il primo avvio di Excel caricasse qualcosa in memoria
che resta in background per gli avvii successivi.
Qualche idea/suggerimento?
Bye by SixaM 8-]


Sicuramente non ho capito,
ma perch� l'utilizzo di Shell?
Private Sub Command1_Click()
    Dim objExcel As Object
    Dim objWorkbook As Object
    Dim objWorksheet As Object
On Error GoTo RigaErrore
    Set objExcel = CreateObject("Excel.Application")
    Set objWorkbook = objExcel.Workbooks.Add
    Set objWorksheet = objWorkbook.worksheets("Foglio1")
    objExcel.Visible = True
    With objWorksheet
        .Select
        .Cells(1, 1).Value = "Pippo"
        .Cells(1, 2).Value = "Pluto"
        '.PrintOut
    End With
    'objWorkbook.SaveAs 'codice con Path e NomeFile
RigaChiusura:
    objExcel.Quit
    Set objWorksheet = Nothing
    Set objWorkbook = Nothing
    Set objExcel = Nothing
    Exit Sub
RigaErrore:
    MsgBox Err.Number & vbNewLine & Err.Description
    Resume RigaChiusura
End Sub
Qui scrivo in due celle del Foglio1
di un Workbook creato all'occorrenza.
Commentati la riga di stampa del Foglio1
e l'eventuale salvataggio.
-- 
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/threads
 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 5012 (20100409) __________
Il messaggio � stato controllato da ESET NOD32 Antivirus.
www.nod32.it

 ma perchč l'utilizzo di Shell?
[cut]
La creazione/popolazione dell'excel la faccio praticamente identica alla
tua.
La shell mi serve per aprire l'xls appena creato.
Ad essere precisi, uso l'API ShellExecute, passandogli il nome del file
e come operazione "OPEN"
...ora che ci penso...vuoi vedere che il problema e' che il nome del
file lo creo con estensione .xls, e magari quando cerco di aprirlo con
Excel2007, succede che ho un file Excel2007 (che ha di suo l'estensione
xlsx), salvato con estensione .xls (che arriva fino a Excel2003), e che
Excel2007 cerca di 'convertire'?
Dovrei cercare di capire quale Excel ho sotto banco, per cambiare
l'estensione...
Bye by SixaM 8-]


Non ho capito molto.
Codice per verificare la versione di Excel installata sulla macchina.
Nel caso siano installate più versioni, viene rilevata
quella più nuova o quella di default per il programma.
Public Sub m()
    Dim xlApp As New Excel.Application
    Select Case Val(Mid(xlApp.Version, 1, InStr(1, xlApp.Version, ".") - 1))
        Case Is = 12
            MsgBox "Excel 2007"
        Case Is = 11
            MsgBox "Excel 2003"
        Case Is = 10
            MsgBox "Excel 2002(XP)"
        Case Is = 9
            MsgBox "Excel 2000"
    End Select
End Sub
Questo invece recupera la versione attiva al momento della chiamata alla 
funzione:
Public Function f() As Long
    With Application
        f = Val(Mid(.Version, 1, _
            InStr(1, .Version, ".") - 1))
    End With
End Function
restituendo il numero della versione.
-- 
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/threads
 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 5019 (20100412) __________
Il messaggio è stato controllato da ESET NOD32 Antivirus.
www.nod32.it