Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
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:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…