J'ai été frappé ma tête sur un mur de briques avec le casse-tête belle suivante:Charger une feuille de calcul Excel pour Google Sheets
Le point est d'obtenir des données à partir d'Excel à Google Sheets sans téléchargement de fichiers, mais en passant par le URL. Ce qui suit explique comment haut la main toute cette affaire transpire:
https://www.youtube.com/watch?v=mX2_XNYPGiI http://ramblings.mcpher.com/Home/excelquirks/exceldocsintegration/excelsheetsv4
J'ai essayé d'adapter le code suivant pour le côté VBA des choses, commun aux deux exemples:
Option Explicit
Sub GetDataFromGoogle()
'link to tutorial: https://www.youtube.com/watch?v=mX2_XNYPGiI
Dim link As String
link = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSes7Jb06JRy8KSFyNlpUSzNQxSB_HZay4S8AB2IqzpZP0QdwGO5PFSS-6uzd8v_GsjlkXM31pby2jE/pubhtml"
Sheet4.QueryTables(1).Connection = "URL;" & link
Sheet4.QueryTables(1).Refresh False
Sheet4.Columns(1).ColumnWidth = 10
End Sub
Sub PushDataToGoogle()
Dim link As String
link = "https://docs.google.com/forms/d/e/1FAIpQLSeDHEKJmRDynwOAS4g53T9AVMtpXQkWsRGbAzLpLI7rdsbiFA/formResponse?entry.1155739640=4&fvv=1&draftResponse=%5B%5B%5Bnull%2C1155739640%2C%5B%224%22%5D%0D%0A%2C0%5D%0D%0A%5D%0D%0A%2Cnull%2C%2276341394568976993%22%5D%0D"
'go to that link, refresh it and ensure that the first column isn't too narrow
sheets("Sheet4").QueryTables(1).Connection = "URL;" & link
sheets("Sheet4").QueryTables(1).Refresh True
sheets("Sheet4").Columns(1).ColumnWidth = 10
End Sub
sur Du côté de Google Sheets, j'ai utilisé un formulaire pour créer une feuille de calcul qui est à la fois la source de données pour une importation Excel et la destination pour l'exportation de données. Replacer POST et GET dans le HTML de la page de formulaire est le moyen d'obtenir l'URL de destination. Par la suite, cette URL peut être codée en dur ou éditée avec des variables pour obtenir diverses entrées pour la partie "entrée. ######" de l'URL, puis elle est transmise à la feuille dans la ligne disponible suivante, ce qui convient à mes fins.
J'ai rencontré un problème avec la partie oAuth2 de l'opération. À partir de l'exemple sur le site Desktop Liberation (deuxième lien ci-dessus), les informations d'identification sont créées à partir de Google, puis insérées dans un code qui authentifie la connexion avant de transmettre les données. En tant que tel:
Private Function sheetsOnceOff()
getGoogled "sheets", , _
"1023445954023-hq8gkdcmo9sue822d23gy9ak5hmun27.apps.googleusercontent.com", _
"dX7ABCDEGFBETFWtvX5ShmDfrgrQ"
End Function
Si cela n'est pas fait, les lignes de code précédentes retourneront simplement la page de connexion Google principale. J'ai fait les informations d'identification, déterminé que la clé de destination pour la feuille de calcul, mais je reçois une erreur dans la routine getGoogled qui dit:
Runtime-error: '-2147024809 (80070057)': The parameter is incorrect."
valeurs des paramètres sont les suivantes: - scope = « feuilles », comme il devrait être - paquet de remplacement = "" - clientID est OK - clientSecret est OK - se plaindre = true - cloneFromScope = "" - apikey = ""
Je pense le paquet de remplacement ne doit pas être vide si la plainte est vraie, mais je sens que je suis hors de ma profondeur ici. Au moins, la logique de ce qui doit se passer est logique pour moi, et j'ai réussi à faire fonctionner le transfert à partir de Google Sheets, mais je ne suis pas sûr de savoir comment gérer l'authentification oAuth2.
Merci à l'avance.