SetValue löst jeUnsupportedValue aus
SetValue, Add, Insert oder Value = … löst jeUnsupportedValue (vbObjectError + 520) aus, wenn Sie ein
Scripting.Dictionary, eine Collection, ein Recordset oder ein anderes Objekt übergeben.
Umgebung
Alle Versionen von WKL Office JSON.
Ursache
Angenommen werden nur Werte, die eine JSON-Form haben: String, die numerischen Typen, Boolean, Date, Null,
Empty und Nothing (geschrieben als null), eindimensionale Arrays aus diesen Werten sowie JSON-Knoten oder ein
JDoc (Value = … eines Werteknotens nimmt keine Arrays und keine Knoten mit Kindknoten an; diese lösen dort
jeInvalidOperation aus, siehe Werte und Grenzen).
Fremde Objekte, auch Scripting.Dictionary und Collection, und Arrays mit mehr als einer Dimension haben keine
festgelegte JSON-Form.
Lösung
- Bauen Sie die Struktur mit den Methoden der Bibliothek auf:
AddElementfür ein Objekt,AddArrayfür ein Array,SetValuefür jeden Eintrag. Wandeln Sie ein Dictionary in einer Schleife um:
Dim target As JElement, key As Variant If doc.Root Is Nothing Then Set doc.Root = doc.CreateElement ' a new JDoc is empty Set target = doc.Root For Each key In dict.Keys target.SetValue CStr(key), dict(key) Next- Wandeln Sie ein zweidimensionales Array (zum Beispiel aus
GetRows) Zeile für Zeile in Objekte eines Arrays um.