none
Problème ADODB connexion à Sharepoint depuis Excel pour récupérer des listes RRS feed

  • Question

  • Bonjour à Tous,

    Je rencontre un problème aléatoire lors de l'exécution d'une macro VBA sous excel. Parfois elle fonctionne sans soucis et parfois je rencontre l'erreur "-2147467259 (80004005) Argument non valide." lors de l'ouverture de la connexion.

    J'ai testé cette macro avec ACCESS et elle s'exécute sans aucun problème (à part bien sur la partie Sheets).

    J'ai chargé le même module complémentaire dans ACCESS et EXCEL pourtant le résultat est différent.

    Si quelqu'un peut m'éclairer je suis preneur. 

    Chose intéressante lorsque que je créais un objet listobject lié à la liste Sharepoint dans un macro séparée, que je lance une fois à l'ouverture du fichier, la macro refonctionne jusqu'à ce que je ferme le fichier puis le réouvre. Il est alors nécessaire de relancer la macro créant un objet listobject.


    Merci d'avance pour votre aide.

    Flavien

    Le code de la fonction:

    Sub Recup_Charge()
    
    
    Dim sp_sdbPath As String, sp_sConnect As String
    Dim SP_List, sSQL As String
    Dim c As Long
    
    
    Dim cnSP As New ADODB.Connection
    Dim rsSP As New ADODB.Recordset
    
    
    sp_sdbPath = "https://XXXX.sharepoint.com/sites/Test/"
    sp_sConnect = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=2;RetrieveIds=Yes;DATABASE=" & sp_sdbPath & ";"
    
    
    SP_List = "LIST={XXXX-XXX-XXX-XXXX-XXXXXXX}"
    
    
    'Establish a connection to the first List
    cnSP.ConnectionString = sp_sConnect + SP_List
    
    cnSP.Open
    
    
    'Write the SQL & Establish a connection to the second List as a sub-query using IN
    sSQL = "SELECT * FROM List"
    
    rsSP.Open sSQL, cnSP, adOpenStatic, 1 'Change cursor & lock type if inserting, updating or deleting
    
    
    'The rest is to drop the results into an empty worksheet named 'Test'
    For c = 0 To rsSP.Fields.Count - 1
        ThisWorkbook.Sheets("Charge_enregistre").Cells(1, c + 1) = rsSP.Fields(c).Name
    Next
    
    ThisWorkbook.Sheets("Charge_enregistre").Cells(2, 1).CopyFromRecordset rsSP
    
    
    rsSP.Close
    cnSP.Close
    End Sub

    mardi 4 avril 2017 10:30