Import d'une table SAS vers Excel via VBA-Excel
soficaat
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
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 :
J'ai le message d'erreur à la ligne :
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 !
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:
- Import d'une table SAS vers Excel via VBA-Excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
- Si ou excel - Guide
- Table ascii - Guide
4 réponses
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?
"Une erreur propre au fournisseur est survenue
(CODADataSource::EngineTypeFromEngineCode() : Unknown engine code)."
Pouvez-vous m'aider?
le message d'erreur est toujours sur la même ligne :
Delai est le nom de ma table SAS dans la librairie rwork.
Merci pour vos réponses,
obRecordset.Open delai, obConnection, adOpenDynamic, adLockReadOnly, adCmdTableDirect
Delai est le nom de ma table SAS dans la librairie rwork.
Merci pour vos réponses,
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 ?????
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 ?????
Oui, j'ai récupéré le code à cet endroit.
J'ai également tenté de modifier le code ainsi :
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
Re,
Il semblerait que pour
Docs sur ce site:
https://support.sas.com/documentation/cdl/en/oledbpr/63701/HTML/default/viewer.htm#p0r4uurwrg7925n1ldlbm9p22sdr.htm
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