Export SQL vers Excel

Signaler
Messages postés
4
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
12 janvier 2005
-
Messages postés
1
Date d'inscription
lundi 7 avril 2003
Statut
Membre
Dernière intervention
9 avril 2003
-
Je souhaiterai faire l'export du resultat de ma requete dans un fichier excel, mais je ne sais pas comment faire.
Merci d'avance pour votre aide.

4 réponses

Messages postés
59
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
29 janvier 2004

'Faire Projets/Références et Cocher Microsoft Excel X.X Object Library
'Déclarer un objet excel 
Dim XlApp as Excel.Application
Dim i_Ligne as Long
'Instancier
Set XlApp as New Excel.Application
XlApp.Visible=True
'Ouvrir le fichier xls
XlApp.WorkBooks.Open <Chemin Fichier>
'ou bien en créer un nouveau
XlApp.WorkBooks.Add
'Lire la requète via un recordset
i_Ligne=1
Do Until <Recordset>.EOF = true
'Ecrire la ligne du recordset dans le fichier xls
XlApp.WorkBooks(1).WorkSheets(1).Cells(i_Ligne,1) = <Recordset>.Fields(1)
XlApp.WorkBooks(1).WorkSheets(1).Cells(i_Ligne,2) = <Recordset>.Fields(2)
XlApp.WorkBooks(1).WorkSheets(1).Cells(i_Ligne,3) = <Recordset>.Fields(3)
...
i_Ligne=i_Ligne+1
Loop
'Enregistrer le fichier xls
XlApp.WorkBooks(1).Save
'ou bien si nouveau fichier
XlApp.WorkBooks(1).SaveAs <Chemi Fichier>
If XlApp.Visible = False
XlApp.Quit
Set XlApp = Nothing
End If
0
Messages postés
4
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
12 janvier 2005

2 petites choses :
La première la commande "Set XlApp As New Excel.Applicatione ne fonctionne pas, il faut remplacezr "As" par "=".
Et seconde chose plus importante ca ne fonctionne pas, il n'y a pas de message d'erreur, mais ma feuille excel ne se remplit pas.

Peut etre sais tu pourquoi?!!

:sad)
0
Messages postés
59
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
29 janvier 2004

Autre erreur : faire un MoveNext sur le Recordset avant l'instruction Loop ...
Si rien ne sécrit dans la feuille excel c'est qu'il n'y a rien dans les champs du recordset ou que celui ci est vide.
Envoies moi le code
0
Messages postés
1
Date d'inscription
lundi 7 avril 2003
Statut
Membre
Dernière intervention
9 avril 2003

Salut les gars... oui il faut bien un <RECORDSET>.movenext avnt le Loop sinon il se contante de recopier la premiere lignes indéfiniment!!!!!

de plus il ne fo pas que le nombre de champs specifie dans le code vb soit supérieur o nbre de champs extrait par la requete.... de plus il fo que le premier champ soit 0 sinon il oubli la premiere colonne!!!!

XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 1) = dbsRec.Fields(0)

Voila mon code... il permet de se connecter à une base oracle...excécuter une requete SQL et de copier le resultat dans une feuille EXcel :

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 07/04/2003 par BTHEVIN

Dim dbs As Database
Dim enreg As Variant
Dim cmd As Variant
Dim strAttributs As String
Dim nomBase, nomServeur, nomUt, mdp As String
Dim wrkJet As Workspace
Dim Rec As Recordset
Dim dbsLoop As Database
Dim prpLoop As Property
Dim dbsRec As Recordset

Dim XlApp As Excel.Application
Dim i_Ligne As Long

nomBase = "Goldorak" 'Nom de la base (Data source name de la source ODBC)
nomServeur = "KEN" 'Nom du serveur (Service name de la source ODBC)
nomUt = "APGXXX" 'Nom d'utilisateur de connexion à la base
mdp = "x" 'Mot de passe de l'utilisateur pour la connexion

Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
Set dbs = wrkJet.OpenDatabase( _
nomBase, dbDriverCompleteRequired, True, _
"ODBC;DATABASE=" + nomBase + ";UID=" + nomUt + ";DSN=" + nomBase + ";pwd=" + mdp _
)

Set dbsRec = dbs.OpenRecordset("select * from BATCHJOB")

'Lire la requète via un recordset
Set XlApp = New Excel.Application
XlApp.Visible = True
XlApp.Workbooks.Add
i_Ligne = 1
Do Until dbsRec.EOF = True
'Ecrire la ligne du recordset dans le fichier xls
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 1) = dbsRec.Fields(0)
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 2) = dbsRec.Fields(2)
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 3) = dbsRec.Fields(3)
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 4) = dbsRec.Fields(4)
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 5) = dbsRec.Fields(5)
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 6) = dbsRec.Fields(6)
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 7) = dbsRec.Fields(7)
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 8) = dbsRec.Fields(8)
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 9) = dbsRec.Fields(9)
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 10) = dbsRec.Fields(10)
XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 11) = dbsRec.Fields(11)
' XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 12) = dbsRec.Fields(12)
' XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 13) = dbsRec.Fields(13)
' XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 14) = dbsRec.Fields(14)
' XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 15) = dbsRec.Fields(15)
' XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 16) = dbsRec.Fields(16)
' XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 17) = dbsRec.Fields(17)
' XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 18) = dbsRec.Fields(18)
' XlApp.Workbooks(1).Worksheets(1).Cells(i_Ligne, 19) = dbsRec.Fields(19)

i_Ligne = i_Ligne + 1
dbsRec.MoveNext
Loop
dbs.Close
wrkJet.Close
End Sub

Voila Bon courage @ tous..... et n'oublions jamais : SQL VAINCRA

SQL for Ever
0