Newsgroup: it.comp.lang.visual-basic
Titolo: Routine crea foglio Excel, come verifico che Excel sia installato ?

Ciao ragazzi, ho una routine che esporta un recordset su un foglio Excel,
vorrei inserire un controllo che abiliti la funzione verificando che Excel
sia installato altrimenti ovviamente gli oggetti non sono disponibili, gia'
che ci sono vi metto la routine cosi' se volete darmi consigli.... grazie.
                    Dim xlApp As Excel.Application
                    Dim xlBook As Excel.Workbook
                    Dim xlSheet As Excel.Worksheet
                    Set xlApp = New Excel.Application
' Qui ho trovato solo questo modo per creare un solo foglio col nome che
voglio:
                    xlApp.SheetsInNewWorkbook = 1
                    Set xlBook = xlApp.Workbooks.Add
                    Set xlSheet = xlBook.Worksheets(1)
                    xlSheet.Name = "NOMEDELFOGLIO"
'HeaderLine e' un array con i dati relativi al foglio dati
                    For i = 0 To UBound(HeaderLine)
                        xlSheet.Cells(i + 1, 1).Value = HeaderLine(i)
                    Next i
                    i = i + 1
'ColumnTitle e' un array con i titoli delle colonne
                    For J = 0 To UBound(ColumnTitle)
                        xlSheet.Cells(i, J + 1).Value = ColumnTitle(J)
                    Next J
                    J = i + 1
'Qui sparo i dati letti dal recordset rs non descrivo i campi, il primo e'
data poi numeri
                    Do While Not rs.EOF
                        i = i + 1
                        xlSheet.Cells(i, 1).Value = rs!Dataora
                        xlSheet.Cells(i, 1).NumberFormat = "dd/MM/yyyy
hh:mm:ss"
                        xlSheet.Cells(i, 2).Value = rs!num
                        Select Case MeasureUnit
                            Case "mg":
                                xlSheet.Cells(i, 2).NumberFormat = "0"
                            Case "mmol":
                                xlSheet.Cells(i, 2).NumberFormat = "0.00"
                            Case Else:
                                xlSheet.Cells(i, 2).NumberFormat = "0" &
DecSeparator$ & "0"
                        End Select
                        xlSheet.Cells(i, 3).Value = rs!val1
                        xlSheet.Cells(i, 3).NumberFormat = "0.00"
                        xlSheet.Cells(i, 4).Value = rs!val2
                        xlSheet.Cells(i, 4).NumberFormat = "0.00"
                        xlSheet.Cells(i, 5).Value = rs!val3
                        xlSheet.Cells(i, 5).NumberFormat = "0.00"
                        xlSheet.Cells(i, 6).Value = rs!a_id
                        xlSheet.Cells(i, 7).Value = rs!a_desc
                        xlSheet.Cells(i, 8).Value = rs!a_vat
                        xlSheet.Cells(i, 8).NumberFormat = "0.00"
                        rs.MoveNext
                    Loop
'questo da' errore alla seconda volta che parte la routine, forse occorre
deselezionare i range ?
'fatto sta che sopra vedete che imposto il formato per ogni singola cella,
bleah
'                    xlSheet.Range(Cells(J, 1), Cells(i, 1)).NumberFormat =
"dd/MM/yyyy hh:mm:ss"
'                    xlSheet.Range(Cells(J, 6), Cells(I, 6)).NumberFormat =
"" 'attivita'
                    xlSheet.SaveAs FileSave ' Save the Worksheet.
                    xlBook.Close ' Close the Workbook
                    Set xlSheet = Nothing
                    Set xlBook = Nothing
                    xlApp.quit ' Close Microsoft Excel with the Quit method.
                    Set xlApp = Nothing ' Release the objects.
With best regards, Mike De Petris.  E-mail: 
mike...@triesterivista.it

 sia installato
codice costruito tempo fa
ricordo che senza quel
 On Error Resume Next , non funzionava. Motivo , ad oggi per me ,
sconosciuto.
    Dim objExcel As Excel.Application
    On Error Resume Next
    Set objExcel = GetObject(, "Excel.application")  'verifica se Excel è
aperto
    If objExcel Is Nothing Then 'Se è vero Excel non è aperto
        Set objExcel = CreateObject("Excel.application")
        If objExcel Is Nothing Then 'Se vero, MS Excel non è installato
            MsgBox "MS Excel non è installato.", vbExclamation, "Warning !
Operazione annullata"
            Set objExcel = Nothing
            Exit Sub
        End If
    End If
giuseppeD

 ha scritto nel messaggio
news:amflfd$4tk$1...@fe1.cs.interbusiness.it...


     End If
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

Hello, Vincenzo!
You wrote  on Fri, 20 Sep 2002 22:13:38 GMT:
 VP> "Potresti controllare nel registro...
E tu ti fideresti ? Se disinstalli Excel poi credi che le chiavi nel
registro spariscano ? Io devo verificare se excel e' installato disponibile,
cioe' posso creare i detti oggetti.


Hello, Maurizio!
You wrote  on Sat, 21 Sep 2002 13:17:12 +0200:
 MB>     Il motivo? Quello di Battisti che dice
 MB>         ... andare a fari spenti nella notte ...
 MB> Ecco, "On Error Resume Next" produce lo stesso effetto.
Che risposta utile, tu devi essere un tecnico, vero ?


 tu devi essere un tecnico, vero ?
    Prova a chiudere gli occhi per fermare qualcosa che e' dentro me ma
nella mente tua non c'e'.


 ha scritto nel messaggio
news:amig25$395$2...@fe2.cs.interbusiness.it...


Hello, Maurizio!
You wrote  on Sun, 22 Sep 2002 00:44:54 +0200:
 MB>     Prova a chiudere gli occhi per fermare qualcosa che e' dentro me ma
 MB> nella mente tua non c'e'.
Guarda lei, e' proprio come ti vorrei, guarda lei, lo ama non si lamenta
mai, guarda lei, guardala.
Una vela, una vela e' la mia mente...


Hello, Vincenzo!
You wrote  on Sun, 22 Sep 2002 12:59:47 GMT:
 VP> detto questo, potresti controllare il valore delle chiavi, ad esempio,
 VP> cerchi la path di excel e verifichi l'esistenza... e di conseguenza....
 VP> sai se il programma è installato..
Si hai ragione cerchi l'excel.exe ma non e' certo il modo corretto, se
voglio istanziare degli oggetti devo controllare se ho le risorse per farlo
e deve esserci un modo uficiale, standard, elegante, pulito o chiamalo come
vuoi, oltretutto potrebbe essrci excel installato e comunque non funzionare
la libreria di accesso. Il suggerimento di creare l'oggetto e vedere se
ritorna errore va sicuramente bene, ma ci sara' pure una indicazione fornita
da Microsoft su come si deve fare.


 ha scritto nel messaggio
news:aml78g$17a$2...@fe2.cs.interbusiness.it...
