Bonjour,
J'ai créer une procédure dans un module standard qui:
1. ouvre un fichier excel et chaque ligne
2. enregistre chacune des lignes dans une table de ma base de données distantes
3.ferme enfin le fichier excel
Voici le code:
Mon soucis, lorsque je ferme le fichier excel, il ne le ferme pas complètement. Et je me retrouve donc avec une instance de Excel (visible dans le GESTIONNAIRE DES TACHES WINDOWS) cachée. Lorsque je veux à nouveau lire les données, j'ai une erreur parce que le fichier est occupé ou pas bien fermé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Public Sub PiloterExcelDepuisAccess(fileexcel As String) Dim xlApp As Excel.Application Dim xlSheet As Excel.Worksheet Dim xlBook As Excel.Workbook Dim nbrelignes As Long Dim nbrecolonnes As Long Dim i As Long Dim j As Long 'J'initialise mes variables Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(fileexcel) 'je récupère le nombre de lignes du fichier Excel nbrelignes = ActiveSheet.UsedRange.Rows.Count nbrecolonnes = ActiveSheet.UsedRange.Columns.Count 'référence à la requête Set qdf = CurrentDb.QueryDefs("RQTLECTUREFICHIEREXCEL") For i = 2 To 3 'nbrelignes InitialiserVariables For j = 1 To nbrecolonnes 'traitement Next 'enregistrement dans la base de donnees qdf.Parameters("param1") = valeur1 qdf.Parameters("param2") = valeur2 qdf.Parameters("param3") = valeur3 qdf.Execute '<== si requête action Next 'libération de la référence Set qdf = Nothing 'Code de fermeture xlBook.Close SaveChanges:=False xlApp.Application.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub
Comment faire pour fermer complètement l'application Excel?
Partager