export table access vers excel qui stoppe au niveau d'une table
Bonjour,
Grâce au tuto "Communication entre access et excell" qui décrit la fonction "TransfertExcelAutomation", je transfére les tables de ma base dans différents fichiers excell (1 par table, chacun portant le nom de la table).
Ca fonctionne bien sauf que la fonction s'arrête après avoir exporté les 7 premières tables. Le déboggeur mets en fluo la ligne suivante :
Code:
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 45 46 47 48 49 50 51 52 53 54 55
| For Each oTbl In oDb.TableDefs
Set rec = oDb.OpenRecordset(oTbl.Name, dbOpenSnapshot)
'Initialisations
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.ADD
'Ajouter une feuille de calcul
Set xlSheet = xlBook.Worksheets.ADD
xlSheet.Name = CStr(oTbl.Name)
' le titre
' écriture dans la cellule de ligne 1 et de colonne 1
xlSheet.Cells(1, 1) = "Export de la table Access" & oTbl.Name
' les entetes
' .Fields(Index).Name renvoie le nom du champ
For J = 0 To rec.Fields.Count - 1
xlSheet.Cells(2, J + 1) = rec.Fields(J).Name
' Nous appliquons des enrichissements de format aux cellules
With xlSheet.Cells(2, J + 1)
.Interior.ColorIndex = 15
.Interior.Pattern = xlSolid
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeBottom).weight = xlThin
.Borders(xlEdgeBottom).ColorIndex = xlAutomatic
.HorizontalAlignment = xlCenter
End With
Next J
' recopie des données à partir de la ligne 3
I = 3
Do While Not rec.EOF
For J = 0 To rec.Fields.Count - 1
' .Fields(Index).Type renvoie le type du champ
' si c'est un Texte (dbText) nous insérons "'" pour
' qu'il soit reconnu par Excel comme du Texte
If rec.Fields(J).Type = dbText Then
xlSheet.Cells(I, J + 1) = "'" & rec.Fields(J)
Else
xlSheet.Cells(I, J + 1) = rec.Fields(J)
End If
Next J
I = I + 1
rec.MoveNext
Loop
' code de fermeture et libération des objets
Chemin = Application.CurrentProject.Path & "\BackupBD\" & oTbl.Name & "-" & Format(Now, "mm-dd-yyyy") & ".xls"
xlBook.SaveAs Chemin
xlApp.Quit
rec.Close
Next oTbl |
Je ne vois pas pourquoi ça stoppe ainsi. il n'y a pas de variables particulières dans cette table.
En regardant le contenu de différentes varaibles, je vois que CStr(oTbl.Name) contient le nom MSysAccessObjects (une table temporaire je suppose)
Quant à moi je suppose que si ça bloque c'ets que le format de l'info contenu dans les champs access ne doit pas être compatible avec ceux d'excell....
Une idée ou une piste de solution?
Merci