Microsoft 365 VBA - Excel mettre le CodeName dans un SQLStatement.

Excel6689

XLDnaute Nouveau
Bonjour,
j'essaie d'utiliser les CodeName et là je bloque sur la façon d'écrire le SQLStatement.

Mon code fonctionne si je garde le nom que j'ai donné à l'onglet Base mais quand je passe par le CodeName shBase cela coince.
J'ai testé shBase.Name, avec ou sans [... en mettant des simples cotes... mais rien, Il ne retrouve plus la base de données :mad:
VB:
'          With WordDoc.MailMerge
                .OpenDataSource Name:=strFileExcel, _
                Connection:="Driver={Microsoft Excel Driver (*.xlsx)};" & _
                "DBQ=" & strFileExcel & "; ReadOnly=True;", SQLStatement:="SELECT TOP " & (intCountShBase - 1) & " * FROM [Base$] "
                
            End With

intCountShBase est un compteur et cela ne pose pas de problème

Je suis à court d'idées, par avance merci
 
Solution
Bonjour,

A ma connaissance rien n'a été prévu pour que SQL, le driver ou fournisseur de données sachent reconnaître le codename d'une feuille comme table de données.

Essayez ceci en mettant le chemin vers votre fichier à la place de 'CheminCompletVersLeFichier'.

Vous verrez dans la fenêtre d'exécution les noms de tables reconnues par le driver et interrogeables en sql :

VB:
Sub demo()

    Dim cat As Object, cnx As Object, Table As Object

    Set cnx = CreateObject("adodb.connection")
    cnx.cursorlocation = 3
    Set cat = CreateObject("adox.catalog")


    cnx.Open "DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" _
           & "DBQ=CheminCompletVersLeFichier"

    Set cat.ActiveConnection = cnx

    For Each...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

A ma connaissance rien n'a été prévu pour que SQL, le driver ou fournisseur de données sachent reconnaître le codename d'une feuille comme table de données.

Essayez ceci en mettant le chemin vers votre fichier à la place de 'CheminCompletVersLeFichier'.

Vous verrez dans la fenêtre d'exécution les noms de tables reconnues par le driver et interrogeables en sql :

VB:
Sub demo()

    Dim cat As Object, cnx As Object, Table As Object

    Set cnx = CreateObject("adodb.connection")
    cnx.cursorlocation = 3
    Set cat = CreateObject("adox.catalog")


    cnx.Open "DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" _
           & "DBQ=CheminCompletVersLeFichier"

    Set cat.ActiveConnection = cnx

    For Each Table In cat.Tables
        Debug.Print Table.Name
    Next
 
    cnx.Close
    Set cat = Nothing
    Set cnx = Nothing
End Sub

Ce qui est étonnant dans ce que vous nous dites, est que "FROM [" & shBase.Name & "$]" ne fonctionne pas ! Ne manquerait-il pas le $ final ?

cordialement
 
Dernière édition:

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16