[VB] Fermer Excel depuis Access

Fermer Excel depuis Access [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 30-06-2005 à 14:43:09    

Bonjour a tous,
Je n'arrive pas a fermer excel depuis Access; Excel est toujours visible dans le gestionnaire des taches sous Win XP SP2. Voici le code que j'utilise:
 

Citation :


...
Set ApplicationExcel = CreateObject("Excel.Application" )
ApplicationExcel.Application.Workbooks.Open nomCompletFichierCanevas
Set ClasseurExcel = ApplicationExcel.Application.ActiveWorkbook
ClasseurExcel.Application.Visible = True
...
...
ClasseurExcel.SaveAs (nomFichierEXCEL)
ClasseurExcel.Close savechanges:=False
ApplicationExcel.Application.Quit
Set ClasseurExcel = Nothing
Set ApplicationExcel = Nothing


 
Quelqu'un aurait une idée? une piste?
 
EDIT: Petite précision: Excel 2000 et Access 2000 :hello:

Reply

Marsh Posté le 30-06-2005 à 14:43:09   

Reply

Marsh Posté le 01-07-2005 à 08:25:14    

Personne pour m'aider?

Reply

Marsh Posté le 01-07-2005 à 09:29:49    

Essaye en fermant le workbook (quand j'avais travaillé avec Excel je fermais le worksheet, le workbook puis l'application, sans quoi Excel devenait out process).


Message édité par Juntao2k2 le 01-07-2005 à 09:30:11
Reply

Marsh Posté le 01-07-2005 à 09:37:04    

Ce n'est pas deja ce que je fais avec "ClasseurExcel.Close savechanges:=False" ?

Reply

Marsh Posté le 01-07-2005 à 15:34:53    

Pas d'autre idée ?

Reply

Marsh Posté le 04-07-2005 à 01:37:02    

Désolé, y'avais pas fait attention à ca  
Quel est le traitement représenté par les 2 lignes ... ?

Reply

Marsh Posté le 04-07-2005 à 09:28:54    

Merci a toi Juntao2k2 de m'apporter ton aide :)
 
Sans rentrer dans les details, les 2 lignes ... permettent:
- la création de multiples feuilles excel par copie de feuille contenues dans nomCompletFichierCanevas
- l'insertion de données provenant de requetes d'access
- l'insertion de plan Autocad avec leur redimensionnement
- la supression des feuilles "modeles" dans le classeur excel d'origine
 
Toutes les opérations se déroulent sans aucun problème, sans aucun message d'erreur.
 
Le gros soucis, sans parler de générer un code fonctionnant proprement, c'est que l'instance Excel atteint 360 Mo en mémoire  :pfff:  

Reply

Marsh Posté le 05-07-2005 à 08:28:18    

Plus personne ?

Reply

Marsh Posté le 06-07-2005 à 00:18:19    

Il me semble que pour quitter Excel et libérer la mémoire utilisée il faut juste utiliser :  
 
 

Citation :


'Quitte Excel
ApplicationExcel.Quit
'Libère la mémoire
Set ApplicationExcel = Nothing  


 
(Sous Access 2003 car je n'ai plus sous la main le 2000 :p )
 
En espérant t'aider
 
[Edit]  
Il me semble que ClasseurExcel.Close savechanges:=False est le code de vb sous excel
Sous Access , ça s'apparente plutôt à ApplicationExcel .ActiveWorkbook.Saved = True (Pour qu'il ne nous pose pas la question)


Message édité par Krocc le 06-07-2005 à 00:46:23
Reply

Marsh Posté le 06-07-2005 à 08:16:38    

Krocc, merci d'essayer de m'aider  :hello:  

Citation :

ApplicationExcel.Quit

donne le même résultat que

Citation :

ApplicationExcel.Application.Quit


 
Pour

Citation :

ClasseurExcel.Close savechanges:=False


j'ai déja sauvegarder le classeur avant avec un nom différent de celui sous lequel je l'ai ouvert, donc je le ferme sans sauvegarder et sans poser la question.
 
Vraiment je suis perdu, je pense maintenant a un bug excel  :cry:

Reply

Marsh Posté le 06-07-2005 à 08:16:38   

Reply

Marsh Posté le 06-07-2005 à 15:02:41    

J'ai trouvé!!!
 
Tout d'abbord, merci a ceux qui m'ont aidé  :)  
 
La solution:
pour la suppresion de feuilles dans excel, j'ai remplacé

Citation :

ClasseurExcel.Worksheets(i).Select
ActiveWindow.SelectedSheets.Delete


par

Citation :

ClasseurExcel.Worksheets(i).Delete


 
et par miracle mon process Excel.exe disparait a la fin du traitement.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed