Excel.Application errore di run time 429

giovedì 13 dicembre 2007 - 10.39

ciccios100 Profilo | Junior Member

Ciao a tutti,
ho un problema con un programma che sto creando in VB6.Il programma mi deve andare a leggere una riga di un file excel...
per fare questo ho caricato la libreria microsoft excel 11.0 object library.In un modulo dichiaro un oggetto
Dim appOrario as excel.application
e nel form load
set appOrario=getObject (, "Excel.Application")
set appOrari= CreateObject ("Excel.Application")
quando lancio l'eseguibile il programma un errore di run time 429 dicendo che il componente ActiveX non può creare l'oggetto;come mai ? è sbagiato il codice o devo inserire qualche altra libreria?
ringrazio tutti coloro mi vorranno dare un mano! ciao ciao!
Ciccio Biagioni

StefanoLep Profilo | Senior Member

Ciao, se usi Getobject o CreateObject non ti serve impostare nessun riferimento, però per utilizzare excel devi anche specificare un foglio di lavoro.

Esmpio per un nuovo foglio excel

Dim oXL As Object 'Excel.Application
Dim oWB As Object 'Excel.Workbook
Dim oSheet As Object 'Excel.Worksheet

' Lancio Excel
oXL = CreateObject("Excel.Application")
oXL.Visible = False

' Aggiungo il foglio di lavoro
oWB = oXL.Workbooks.Add()
oSheet = oWB.ActiveSheet


E' la passione che genera il progresso :-)

ciccios100 Profilo | Junior Member

guarda questo è il mio codice(questo nel modulo)
Dim apporario As Excel.Application
Dim wborario As Excel.Workbook

'riempimento della lista
Sub caricalista()
Dim shtlab As Excel.Worksheet
Dim rngclassi As Excel.Range
Dim i As Integer
Set shtlab = wborario.Sheets(foglio1)
Form1.List1.Clear
Set rngclassi = shtlab.Columns(1)
For i = 2 To 6
Form1.List1.AddItem rngclassi.Cells(i, 1)
Next i
End Sub

(questo nel form load)

Private Sub Form_Load()
Set apporario = GetObject(, "excel.application")
Set apporario = CreateObject("excel.application")
Set wborario = apporario.Workbooks.Open("C:\Documents and Settings\Ciccio doc\orario.xls")
caricalista
End Sub
...ho soltanto preso dei pezzi di codice da un programmino già fatto su un libro perche mi serve vedere come pescare con vb i dati che risiedono in un foglio excel esistente,ma mi da quell'errore....non è che mi potresti dare una mano a capire dov'è l'errore???cmq grazie 1000 x l'aiuto che mi hai dato fin qui....ciao ciao
Ciccio Biagioni

StefanoLep Profilo | Senior Member

Se mi alleghi il file excel posso fare una prova completa.
E' la passione che genera il progresso :-)

ciccios100 Profilo | Junior Member

ti ho allegato il file orario.xls,come vedrai è un file molto semplice, vorrei leggerlo e inserire i dati presenti nella colonna A del file excel nella mia list_box(list1).....grazie ancora per l'aiuto
Ciccio Biagioni

StefanoLep Profilo | Senior Member

Ciao, ho modificato un pò il codice, non c'è bisogno di nessun riferimento nè ad Excel nè ad altre librerie

[code]
Dim apporario As Object
Dim wborario As Object

Private Sub Form_Load()

Set apporario = CreateObject("excel.application")
Set wborario = apporario.Workbooks.Open("C:\_A\orario.xls")
caricalista

apporario.quit
Set apporario = Nothing

End Sub


Private Sub caricalista()

Dim shtlab As Object 'Excel.Worksheet
Dim rngclassi As Object 'Excel.Range
Dim i As Integer

Set shtlab = wborario.Sheets("foglio1")

Form1.List1.Clear
Set rngclassi = shtlab.Columns(1)

For i = 2 To 6
Form1.List1.AddItem rngclassi.Cells(i, 1)
Next i

End Sub

[code\]

Fammi sapere se va bene :-)

E' la passione che genera il progresso :-)

ciccios100 Profilo | Junior Member

ciao Stefano,la cosa sembra inizire a girare,ma c'è ancora qualcosa che non va....non riesce a trovarmi il nome del foglio contenuto in orario.xls,infatti quando cerca di eseguire l'istruzione
Set shtlab = wborario.Sheets("Foglio1")
mi viene fuori errore di run time 91,variabile oggetto o variabile del blocco with non impostato,e quando faccio il debug mi si ferma sull'istruzione sopra citata....eppure il foglio di excel si chiama Foglio1,ho provato anche senza apici ma nulla....
P.S. nel modulo non puoi mettere private sub caricalista() ma solo private caricalista() altrimenti non può utilizzare la funzione nel form_load()
Ciccio Biagioni

StefanoLep Profilo | Senior Member

Ciao hai provato a copiare tutto il codice che ti dato in nuovo progetto? Senza riferimenti, senza moduli solo una form e una listbox? Ti assicuro che funziona perchè ho provato con il file excel che mi hai allegato tu.

Set wborario = apporario.Workbooks.Open("C:\_A\orario.xls") '---- tuo percorso

Dim shtlab As Object '----- hai impostato questa come object Excel.Worksheet
Dim rngclassi As Object '----- e questa? Excel.Range


Se anche dopo questi controlli (che magari sono superflui) il tuo progetto non va, puoi inviarmi tutto il progetto e gli do uno sguardo entro domani. A presto :-)

E' la passione che genera il progresso :-)

ciccios100 Profilo | Junior Member

Penso di aver settto tuttuo in maniera corretta,cmq ti invio in allegato.zip il mio progetto....ci sentiamo,e grazie ancora!
Ciccio Biagioni

StefanoLep Profilo | Senior Member

Ho modificato CaricaLista

Sub caricalista(ByVal FOGLIO As Object) Dim shtlab As Object '<------Excel.Worksheet Dim rngclassi As Object '<------As Excel.Range Dim i As Integer Set shtlab = FOGLIO.Sheets("Foglio1") Form1.List1.Clear Set rngclassi = shtlab.Columns(1) For i = 2 To 6 Form1.List1.AddItem rngclassi.Cells(i, 1) Next i End Sub

quando la richiami dal form_load:

caricalista wborario

Così funziona, nell'esempio precedente non avevo usato nessun modulo. Ciao
E' la passione che genera il progresso :-)

ciccios100 Profilo | Junior Member

Ciao Stefano,
scusa se non ti ho risposto prima,ma sai in questi giorni di festa ho avuto poco tempo per provare i tuoi suggerimenti,a proposito colgo l'occasione per farti gli auguri di buon anno!
Cmq volevo dirti che ho apportato al progetto i cambiamenti che mi hai suggerito,ma nel momento della compilazione riscontro lo stesso errore che ti ho postato in precedenza,cioè:
>>Set shtlab = wborario.Sheets("Foglio1")
>>errore di run time 91,variabile oggetto o variabile del blocco with non impostato
proprio per questo volevo chiederti se mi puoi mandare in allegato il progetto da te modificato,così,visto che a te funziona posso vedere dove contino a sbagliare....
Ti ringrazio di tutto ciao e ancora auguri!

Ciccio Biagioni

StefanoLep Profilo | Senior Member

Ciao auguri anche a te :-), il progetto ce l'ho (spero di averlo ancora...) in ufficio, a casa non ho VB6 quindi credo che ci dobbiamo aggiornare il 2. All'anno prossimo :-)

E' la passione che genera il progresso :-)

ciccios100 Profilo | Junior Member

Ciao Stefano,
oggi ho riprovato il tuo codice in un nuovo progetto....come mi hai suggerito il nuovo progetto è formato solo da un form e da una ListBox.Il codice che inserisco è identico a quello che mi hai postato tu,ad eccezione del percorso del file di excel....provo a lanciarlo e anche così mi si blocca all'interno della funzione caricalista,all'istruzione
shtlab = FOGLIO.Sheets("Foglio1")..............ti riposto in allegato quest'ultima prova,cmq se riesci a mandarni la tua prova funzionante te ne sarei molto grato...e grazie mille ancora!

StefanoLep Profilo | Senior Member

Ciao, ti allego il codice, fammi sapere se va bene.

E' la passione che genera il progresso :-)

ciccios100 Profilo | Junior Member

Ok,Stefano con il tuo codice sono riuscito a far partire anche il mio progetto.........
Grazie mille!

Ciccio Biagioni
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5