VBA JSON erreur dans la lecture du Dictionnary
Bonjour à tous.
Je suis devant une erreur que je ne comprends pas et pour laquelle je n'ai pas trouvé de solution dans tous les posts traitant du sujet ici (ou même ailleurs du reste).
Tout d'abords j'ai installé deux chose dans ACCESS :
- https://github.com/VBA-tools/VBA-JSON/releases VBA JSON
- https://github.com/VBA-tools/VBA-Dictionary VBA-Dictionnary
Mon but est de lire une chaine JSON (un retour de l'API IMDB pour info) et extraire les champs pour fabriquer une table correspondant à la structure de la chaine.
Ensuite, j'importerais les données dans cette table. Comme ça je me conforme au modèle de donnée de IMDB et je suis tranquille.
Ensuite j'ai trouvé cela pour m'aider à récupérer la structure JSON : https://askcodez.com/analyse-de-flux...ms-access.html
J'ai fait un formulaire et j'ai posé un bouton dedans. Voici mon code actuel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
Option Compare Database
Private Sub btnOuvrirJson_Click()
Dim AppExcel As New Excel.Application
Dim pathretourne As Variant
pathretourne = AppExcel.GetopenfileName
If pathretourne <> False Then
JSONImport (pathretourne)
Else
MsgBox "Ce n'est pas une chaine JSON valide"
End If
End Sub
Private Function JSONImport(CheminJson As String)
Dim db As Database, qdef As QueryDef
Dim FileNum As Integer
Dim DataLine As String, jsonStr As String, strSQL As String
Dim p As Object, element As Variant
Set db = CurrentDb
' READ FROM EXTERNAL FILE
FileNum = FreeFile()
Open CheminJson For Input As #FileNum
' PARSE FILE STRING
jsonStr = ""
While Not EOF(FileNum)
Line Input #FileNum, DataLine
jsonStr = jsonStr & DataLine & vbNewLine
Wend
Close #FileNum
Set p = ParseJson(jsonStr)
' ITERATE THROUGH DATA ROWS, APPENDING TO TABLE
For Each element In p
strSQL = "PARAMETERS [col1] Long, [col2] Text(255), [col3] Text(255), " _
& "[col4] Text(255), [col5] Text(255); " _
& "INSERT INTO TableName (col1, col2, col3, col4, col5) " _
& "VALUES([col1], [col2], [col3], [col4], [col5]);"
Set qdef = db.CreateQueryDef("", strSQL)
qdef!col1 = element("col1")
qdef!col2 = element("col2")
qdef!col3 = element("col3")
qdef!col4 = element("col4")
qdef!col5 = element("col5")
'qdef.Execute
MsgBox qdef, vbCritical, "on va voir"
Next element
Set element = Nothing
Set p = Nothing
End Function |
Lorsque je clique sur le bouton le programme démarre bien, me demande d'ouvrir la fichier JSON et ensuite il plante sur la ligne que j'ai mis en rouge et me dit :
Citation:
Erreur d'exécution '438':
Propriété ou méthode non gérée par cet objet
J'en déduit qu'il ne doit pas trouver les 'element' dans p mais je n'arrive pas à comprendre pourquoi parce que je dois bien avouer que je ne comprends pas tout dans le code de VBA-Dictionnary et de VBA-JSON
Ou alors j'ai un souci de version, mais je sais pas.
Pourriez-vous m'aider ?
Merci d'avance.