Import d'une table SAS vers Excel via VBA-Excel

Fermé
soficaat Messages postés 5 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 22 juillet 2015 - 21 juil. 2015 à 09:53
f894009 Messages postés 17187 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 1 mai 2024 - 22 juil. 2015 à 09:05
Bonjour à tous,

Je sollicite votre aide pour un petit problème que je rencontre : je cherche à exporter une table SAS (un logiciel de statistiques) qui s'appelle "Delai", et qui se trouve dans la librairie rwork de SAS, vers un doc Excel en utilisant VBA-Excel.
J'ai récupéré un code et je l'ai adapté à ma situation mais j'ai au moins une erreur que je ne sais pas résoudre.

Voici le code :
Sub import_SAS_Excel()

'Declare variables
Dim obConnection As ADODB.Connection
Dim obRecordset As ADODB.Recordset
Dim i As Integer

Set obConnection = New ADODB.Connection
obConnection.Provider = "sas.LocalProvider.1"
obConnection.Properties("Data Source") = rwork
obConnection.Open

Set obRecordset = New ADODB.Recordset
obRecordset.Open delai, obConnection, adOpenDynamic, adLockReadOnly, ADODB.adCmdTableDirect



'format the cells to text
Range(Cells(1, 1), Cells(obRecordset.RecordCount + 1, obRecordset.Fields.Count)).NumberFormat = "@"

'add header row
Cells(1, 1).Select
For i = 0 To obRecordset.Fields.Count - 1
ActiveCell.Offset(0, i).Value = obRecordset.Fields(i).Name
Next i

'add detail rows
obRecordset.MoveFirst
Cells(2, 1).Select
ActiveCell.CopyFromRecordset obRecordset

obRecordset.Close
Set obRecordset = Nothing
obConnection.Close
Set obConnection = Nothing

End Sub


J'ai le message d'erreur à la ligne :
obRecordset.Open delai, obConnection, adOpenDynamic, adLockReadOnly, ADODB.adCmdTableDirect


le message d'erreur est:
Erreur d'exécution '3001'
Les arguments sont de type incorrect, en dehors des limites autorisées, ou en conflit les uns avec les autres

Pouvez-vous m'aider? Tout petit conseil sera vraiment le bienvenu.

merci !
A voir également:

4 réponses

f894009 Messages postés 17187 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 1 mai 2024 1 703
21 juil. 2015 à 11:48
Bonjour,

 ADODB.adCmdTableDirect
enlevez
ADODB.
0
soficaat Messages postés 5 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 22 juillet 2015
21 juil. 2015 à 14:02
Merci pour votre réponse, cependant maintenant j'ai un autre message d'erreur :
"Une erreur propre au fournisseur est survenue
(CODADataSource::EngineTypeFromEngineCode() : Unknown engine code)."

Pouvez-vous m'aider?
0
f894009 Messages postés 17187 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 1 mai 2024 1 703
21 juil. 2015 à 15:58
Re,

Sur quelle ligne ????
et delai est defini ou ????
obRecordset.Open delai
0
soficaat Messages postés 5 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 22 juillet 2015
22 juil. 2015 à 08:15
le message d'erreur est toujours sur la même ligne :
obRecordset.Open delai, obConnection, adOpenDynamic, adLockReadOnly, adCmdTableDirect


Delai est le nom de ma table SAS dans la librairie rwork.

Merci pour vos réponses,
0
f894009 Messages postés 17187 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 1 mai 2024 1 703
Modifié par f894009 le 22/07/2015 à 08:41
Bonjour,

Auriez-vous recupere le code ici:

https://www.lexjansen.com/phuse/2005/as/as11.pdf

Le nom de table est entre double cote (normal), idem pour DataSource qui doit etre le chemin ou sont les tables. Par contre, le ADODB, pour le dernier critere et pas les autres ?????
0
soficaat Messages postés 5 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 22 juillet 2015
22 juil. 2015 à 08:55
Oui, j'ai récupéré le code à cet endroit.

J'ai également tenté de modifier le code ainsi :
requete = "SELECT * FROM [rwork.delai$]"
'ou : requete = "SELECT * FROM [" & rwork.delai & "$]"
Set obRecordset = New ADODB.Recordset

obRecordset.Open requete, obConnection, adOpenDynamic, adLockReadOnly, adCmdTableDirect
0
f894009 Messages postés 17187 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 1 mai 2024 1 703
Modifié par f894009 le 22/07/2015 à 09:24
Re,

Il semblerait que pour
 obConnection.Properties("Data Source")
, ce soit le chemin sur le disque et non la librairy
Docs sur ce site:
https://support.sas.com/documentation/cdl/en/oledbpr/63701/HTML/default/viewer.htm#p0r4uurwrg7925n1ldlbm9p22sdr.htm
0