none
Excel 2007 - ADODB.Connection & chart sheets RRS feed

  • Question

  • Hello,

    J'essaie de lire un range dans un classeur fermé qui contient des feuilles graphiques

    j'essaie avec l'objet ADODB.Connection mais j'obtient l'erreur -2147467259 : "External table is not in the expected format."

    Je pense que c'est parce-que j'ai des feuilles graphiques dans mon classeur mais je n'en suis pas sur.

    Avez vous une idée de la solution à ce bug?

    Merci par avance

    Cordialement,

    P.

    Le code code :

    Sub RequeteClasseurFerme_Excel2007()
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Dim Rst As ADODB.Recordset
        
        'Définit le classeur fermé servant de base de données
        Fichier = "D:\UBD\ExempleBIPV.xlsx"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "Brut"
        
        Set Cn = New ADODB.Connection
        
        '--- Connexion ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
            .Open '<--- ICI SE TROUVE L'ERREUR
        End With
        '-----------------
        
        
        '
        '... la requête ...
        '
        
        
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
    
    End Sub


    • Modifié 7ider5 lundi 14 mai 2012 12:39
    lundi 14 mai 2012 12:30

Réponses

  • Bonjour,

    Vous avez inscrit/mélangé le fournisseur (4.0 au lieu de 12.0)

    Supposant que j'ai un classeur sus nommé ci-dessous comportant une feuille "Brut" avec un tableau en A1:C10... voici un exemple :

    Sub RequeteClasseurFerme_Excel2007()
    Dim oCnct                                       As ADODB.Connection
    Dim oRst                                        As ADODB.Recordset
    Dim strWorkbookFilename                         As String
    Dim strSheetName As String, SQLStatement        As String
    
        strWorkbookFilename = "D:\_ S U P P O R T\Excel\_tests\adoTest.xlsx"
        strSheetName = "Brut"
        Set oCnct = New ADODB.Connection
        With oCnct
            .Provider = "Microsoft.ACE.OLEDB.12.0"
            .ConnectionString = "Data Source=" & strWorkbookFilename & ";" & "Extended Properties=""Excel 12.0;HDR=Yes"";"
            .Open
        End With
    
        SQLStatement = "SELECT * FROM [" & strSheetName & "$]"
        Set oRst = New ADODB.Recordset
        With oRst
            .Open SQLStatement, oCnct, adOpenStatic
            Do While Not .EOF
                Debug.Print .Fields(0) & " " & .Fields(1) & " " & .Fields(2)
                .MoveNext
            Loop
            .Close
        End With
        oCnct.Close
        Set oRst = Nothing
        Set oCnct = Nothing
    End Sub


    Argy


    mercredi 16 mai 2012 07:14
    Modérateur