Visual Basic 6 avec Excel

Signaler
Messages postés
2
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
6 janvier 2003
-
Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
-
J'utilise le code suivant pour générer et enregistrer un fichier Excel à partir d'une requête SQL SERVER :

*************************************************
Dim xlapp As Object
Dim xlbook As Object
Dim xlsheet As Object
Dim ligne As Integer
Dim col As Integer

Set xlapp = CreateObject("Excel.Application")
Set xlbook = xlapp.Workbooks.Add
Set xlsheet = xlbook.Worksheets(1)
'Set xlbook = CreateObject("Excel.Workbooks")
'Set xlsheet = CreateObject("Excel.Sheet")


'debut du traitement
With xlsheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER=SQL Server;SERVER=WST106;UID=toto;PWD=toto;APP=gafa;WSID=WST103;DATABASE=GAFA" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT Vw_Database.NUM_FICHE, Vw_Database.INDIC_COORD, Vw_Database.INDIC_ANTENNE, Vw_Database.MATRICULE, Vw_Database.NOM, Vw_Database.PRENOM, Vw_Database.LIBELLE, Vw_Database.NUM_TEL_PRINC, Vw_Databas" _
, _
"e.PRENOM2, Vw_Database.NUM_TEL_SEC, Vw_Database.SEXE, Vw_Database.AGE, Vw_Database.LIBELLE_CSP, Vw_Database.CODE_EMISSION, Vw_Database.TITRE, Vw_Database.JOUR_DIFFUSION, Vw_Database.HORAIRE_DEB, Vw_Da" _
, _
"tabase.HORAIRE_FIN, Vw_Database.HORODATAGE, Vw_Database.DPTMT_APPEL, Vw_Database.SUJET, Vw_Database.CONTENU, Vw_Database.QUAL_LIAISON, Vw_Database.EXPRESSION, Vw_Database.IMPLICATION, Vw_Database.REMA" _
, _
"RQUE, Vw_Database.DUREE_TRAITEMENT, Vw_Database.NOTE" & Chr(13) & "" & Chr(10) & "FROM GAFA.dbo.Vw_Database Vw_Database" _
)
.Name = "Lancer la requête à partir de GAFA"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
xlbook.SaveAs FileName:=App.Path & "\BDGAFA.xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False

'fermeture des variables objets
Set xlsheet = Nothing
Set xlbook = Nothing
Set xlapp = Nothing
***********************************************

Cependant, si ce code fonctionne très bien lors de sa première utilisation, il bug lorsque on l'execute plus d'une fois, car le processus Excel.exe ne se ferme pas au niveau du gestionnaire des taches.

Aussi, est ce que quelqu'un pourrait-il me dire si mon code contient une erreur, ou bien est ce que quelqu'un pourrait me donner la commande me permettant de killer ce processus Excel.exe qui ne veut pas disparaitre.

En vous remerciant d'avance.

CrystalMan.

3 réponses

Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
8
Set xlbook = Nothing
xlapp.quit
Set xlapp = Nothing

@++

Crazyht
Messages postés
148
Date d'inscription
dimanche 13 octobre 2002
Statut
Membre
Dernière intervention
13 novembre 2008

Par rapport aup roblème de fermeture de EXcel, hervé a donné une solution efficace dans

http://www.vbfrance.com/forum.aspx?Article=25629

extrait:

Set selection = Nothing
Set feuille = Nothing
' On ferme tous les classeurs
for each classeur IN tableauExcel.Workbooks
classeur.close
next
set classeur = nothing

tableauExcel.Quit

Set tableauExcel = Nothing
Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
8
lol ben wi je suis le meilleur :)

Et j'aime bien me repeter :)

A++

:-p Crazyht :)

[Admin Codes-Sources]
[Membre Developer-Association]