Erreurs pendant l'export des données access vers excel avec automation
epaule_tatoo
Messages postés3Date d'inscriptionsamedi 15 avril 2006StatutMembreDernière intervention18 juillet 2010
-
18 juil. 2010 à 01:49
epaule_tatoo
Messages postés3Date d'inscriptionsamedi 15 avril 2006StatutMembreDernière intervention18 juillet 2010
-
18 juil. 2010 à 11:56
Bonjour a tous,
je rencontre un soucis dans mon code VBA, je tente d'exporter une table access vers un doc excel, puis mettre ce dernier en forme avec automation.
je rencontre 2 soucis, mais malgré tout mon code fonctionne.
1 - j'ai un message erreur 462 (serveur distant n'existe pas...) cela ce produits de temps a autre et de manière aléatoire.
2 - quand le code fonctionne (pas d'erreur 462) j'ai un message d'erreur une fois mon export terminé qui me dis que excel a rencontré un problème et va être fermé, puis un popup de windows m'informe que mon programme c'est fermé.
Si qlq un a des pistes pour solutionner ce soucis ca serait sympa.
voici mon code :
Function TransfertExcelAutomation()
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
epaule_tatoo
Messages postés3Date d'inscriptionsamedi 15 avril 2006StatutMembreDernière intervention18 juillet 2010 18 juil. 2010 à 10:43
Merci je vais tenter ça,
Je vais donc mettre ma ligne docmd.transferspreadsheet tout en premier et lancer le reste du code.
j'ai déja essayer le copyfromrecordset, en creant un recordset...mais le soucis c'est que le temps d'execution est bcp plus long. (ma table a exporter peut contenir près de 2000 lignes). et je n'arrive pas à avoir un retour type msgbox qui informe de la fin des opérations.
je creuse dans cette direction et si qlq un a d'autre conseil je suis preneur, car ca me rend chevre, ce matin j'ai tester et ca a marcher du premier coup sans erreur ni plantage...
foliv57
Messages postés420Date d'inscriptionvendredi 17 novembre 2006StatutMembreDernière intervention15 juillet 20149 18 juil. 2010 à 11:12
Bonjour,
Il n'est pas judicieux d'utiliser l'ActiveWorkbook lorsqu'on accède à un fichier excel depuis access.
Lors de l'ouverture du fichier excel, affectez le à une variable
Set xlBook = xlApp.Workbooks.Open("c:\EAB.xls")
Ensuite affectez la feuille à une variable, ceci évite d'avoir en permanence à parcourir la collection d'onglets
Set xlSheet = xlBook.Worksheets(1)
Ceci va peut-être éliminer les plantages d'Excel
Exemple :
Function TransfertExcelAutomation()
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "EAB", "c:\eab.xls", True
Set xlApp = CreateObject("Excel.Application")
'Initialisations
Set xlBook = xlApp.Workbooks.Open("c:\EAB.xls")
Set xlSheet = xlBook.Worksheets(1)
'renomme la première feuille
xlSheet.Name = "DETAILS"
xlSheet.Range("A1:P1").Interior.ColorIndex = 16
xlSheet.Range("A1:P1").Font.Bold = True
xlSheet.Range("A1:P1").Font.Name = "Arial"
xlSheet.Range("A1:P1").Font.Size = "10"
xlSheet.Range("A1:P3000").EntireColumn.AutoFit
xlSheet.Range("A2:P3000").Font.Size = "10"
xlSheet.Range("P:P").Clear
xlBook.Save
xlBook.Close
xlApp.Quit
End Function
epaule_tatoo
Messages postés3Date d'inscriptionsamedi 15 avril 2006StatutMembreDernière intervention18 juillet 2010 18 juil. 2010 à 11:56
Merci pour toutes ces infos,
j'ai "épuré" mon code, comme conseillé avec déclaration de variable, j'ai virer le docmd, pour le remplacer par un recordset, et surtout j'ai fixé le format d'enregistrement de mon fichier, car j'utilise excel 2007, et que je tentais d'enregistrer en *.xls
Avec xlBook.SaveAs "c:\eab.xls", FileFormat:=xlWorkbookNormal