Hej Gör en koll först på Get innan du använde Create... Den kan redan vara öppnad och då kan det bli fel annars. Hej Hej, Hej Hej, Hej Hmmm, HejExcel session blir kvar?
Har skapat en snurra där jag kan öppna Excel filer. Allt fungerar bra så länge jag öppnar endast en fil. När jag har öppnat flera xls filer och sedan skall stänga ner dem i koden blir det fel när sista filen skall stängas. Själva filen stängs ner men en namnlös session av Excel blir hängande kvar. Inte så snyggt.
Koden:
'Öppnar filerna:
Set appXcel = CreateObject("Excel.Application")
'Set visible = True only 1 time
If iOpenXlsFiles = 0 Then
appXcel.Visible = True
End If
Workbooks.Open FileName:=sCurrentPath, ReadOnly:=False
'Stänger filerna:
'If Excel is running close it
For Each w In Workbooks
If w.Name <> "" Then
w.Close savechanges:=False
End If
Next w
appXcel.Quit
Set appXcel = Nothing
Någon som har en lösning på mitt problem.
//PASv: Excel session blir kvar?
<code>
Set appXcel = GetObject("Excel.Application")
If appXcel = Nothing Then
Set appXcel = CreateObject("Excel.Application")
End If
</code>Sv:Excel session blir kvar?
Jag får invalid use of object när jag lade in kontrollen i min kod.
Deklarerade som följer
Public appXcel As Excel.Application
Provade även att deklarera enbart som object. Fick samma fel ändå.
//PASv: Excel session blir kvar?
Du skall declarera "as object" eftersom du kör late-binding för övrigt också. Att du då får detta felmeddelande verkar konstigt. Kolla en gång till att du gjort rätt och posta vilken kodrad som ger felet.
(Förtydligande: Posta hela din kod igen, mend dina ändraingar, men markera vilken rad som går åt skogen och var tydlig med att posta hela felmeddelandet, inlkusive dess numeriska kod.)
Vidare så ser jag att du kör:
If w.Name <> "" Then
och då är det klart att ditt namnlösa fönster inte stängs. Stäng alla fönster så skall det nog funka bättre att stänga applikationen.
// JohanSv:Excel session blir kvar?
Felmeddelandet är:
CompileError
"Invalid use of object"
Jag får inte fram något Err.Number eller Err.Description
Deklaration:
Public appXcel As Object
Koden:
Set appXcel = GetObject("Excel.Application")
If appXcel = Nothing Then 'FELET BLIR PÅ DENNA RAD
Set appXcel = CreateObject("Excel.Application")
End If
Referens är satt till Microsoft Excel 9.0 Object Library
//PASv: Excel session blir kvar?
Till att börja med så behöver du inga referenser satta eftersom du som sagt kör med late binding, så den kan du ta bort för att göra ditt program mindre och dessutom slippa att skicka med en massa extra dll-filer.
Problemet med din kod är att du jämför ett objekt som om det vore en siffra vilket det inte är. Du kan inte använda likhetstecknet utan skall istället använda nyckelordet Is. Så här blir det:
<code>
Set appXcel = GetObject("Excel.Application")
If appXcel Is Nothing Then
Set appXcel = CreateObject("Excel.Application")
End If
</code>
Lycka till!
// JohanSv:Excel session blir kvar?
Klippte in din kod och provade men fick ny felkod
Error -2147221020 (Automation Error Invalid syntax)
Set appXcel = GetObject("Excel.Application") 'NU DYKER DET PÅ DENNA RAD
If appXcel Is Nothing Then
Set appXcel = CreateObject("Excel.Application")
End If
//PASv: Excel session blir kvar?
Jag kanske är lite snurrig för stunden då... Testa att ta tillbaka din referens igen (den som jag uppmanade dig att ta bort i tidigare inlägg).
Om det fortfarande krånglar på samma rad så måste du ha ändrat något annat också eftersom just den raden funkade tidigare och där kan bara du själv veta vad du ändrat på....
Lycka till!
// JohanSv:Excel session blir kvar?
Det var denna rad som stökade till det hela
"Set appXcel = GetObject("Excel.Application")"
När jag tog bort den raden fungerar allt som det skall göra.
Det räcker med dessa rader för att det skall fungera.
If appXcel Is Nothing Then
Set appXcel = CreateObject("Excel.Application")
End If
Tack för hjälpen.
//PA