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 :
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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-JSONErreur d'exécution '438':
Propriété ou méthode non gérée par cet objet
Ou alors j'ai un souci de version, mais je sais pas.
Pourriez-vous m'aider ?
Merci d'avance.
Partager