На основе кода, предоставленного файлом Excel pvd402aaX.xlsm
В этой статье объясняется, как работает JSON с использованием JavaScript в VBA в Excel 2016. Если у вас нет доступа к файлу Excel 2016 pvd402aaX.xlsm, попросите его у автора Ника. В этой статье и сопутствующем файле Excel показано, как выполнить все следующие задачи:
- Включить логику JavaScript как часть кода VBA в Excel
- Преобразование данных JSON в объект в памяти
- Извлечение ключей и значений из структуры JSON
- Используйте функцию VBA для инкапсуляции функции JavaScript
- Создайте ArrayLen как универсальный способ подсчета элементов массива в VBA.
- Безопасная оценка выражения без использования метода Eval из ScriptControl
- Получите компонент ScriptControl для работы в 64-разрядной версии Excel.
А | Демонстрационная процедура
[2] Чтобы увидеть интерактивную часть демонстрации, выполните следующие действия:
- Откройте файл Excel 2016 pvd402aaX.xlsm.
- Нажмите кнопку [Примеры кода Dashboard 404].
- На предыдущем шаге будет выполнена подпрограмма Dashboard404ActiveXButton_Click, которая отобразит форму Dashboard404TestCode.
- Выберите третий элемент в списке «03 — JavaScript и JSON».
- Нажмите кнопку [Взять выбранный пример].
- На предыдущем шаге будет выполнена подпрограмма DoSelectedExample, которая, в свою очередь, выполнит подпрограмму DoCodeSample03_JsonDemo1, которая, в свою очередь, выполнит подпрограмму DoTheFirstJsonDemo.
[3] Демонстрационный код DoTheFirstJsonDemo представит следующее интерактивное сообщение:
- Демонстрация Шаг 1 | ObjectAsAStringInJsonFormat содержит следующее в формате JSON, но без двойных кавычек: {key1:val1, key2:{key3,val3}}
- Демонстрация Шаг 2 | В PropertyNames есть 2 элемента: key1и key2.
- Демонстрация Шаг 3 | ValueOfTheFirstProperty равно val1
- Демонстрация Шаг 4 | В PropertyNames есть 1 элемент: key3
- Демонстрация Шаг 5 | ValueOfProperty1OfProperty2 равно val3
Б | Внутри демонстрационной подпрограммы DoTheFirstJsonDemo
[4] Подпрограмма DoTheFirstJsonDemo выполняет следующие шаги:
- DCS1 | Инициализировать движок JavaScript
- DCS2 | Используйте текстовую строку в формате JSON для представления основного объекта с двумя свойствами, второе из которых содержит второстепенный объект только с одним свойством.
- DCS3 | Превратите объект JSON в основной объект в памяти.
- DCS4 | Получите имена всех свойств верхнего уровня в основном объекте. Результатом являются key1 и key2.
- DCS5 | Получите значение первого свойства основного объекта. Результатом является val1.
- DCS6 | Получите содержимое второго свойства активного объекта. Результатом является второстепенный объект в памяти. Безусловно, второстепенный объект — это содержимое второго свойства основного объекта, а именно key2.
- DCS7 | Получите имена всех свойств верхнего уровня в второстепенном объекте. Результатом является key3.
- DCS8 | Получите значение первого свойства второстепенного объекта. Результатом является val3.
С | Как создать движок JavaScript
[5] Существует пять шагов по созданию и использованию JavaScript Engine в VBA в Excel 2016. Первый шаг — зарезервировать блок памяти, достаточно большой для хранения объекта ScriptControl, который определен в библиотека Microsoft Script Control 1.0. Напоминаем, что используйте команду меню [Инструменты\Справочники].
Частный JavaScriptEngine как ScriptControl
[6] Второй шаг — активировать элемент управления скриптом с помощью общедоступного исходного кода, как определено двумя подпрограммами CreateObjectx86 и CreateWindow. Они необходимы, поскольку следующий оператор не может быть выполнен в 64-разрядной версии Excel 2016:
Установите JavaScriptEngine = Новый ScriptControl
[7] Третий шаг — сообщить элементу управления сценарием, что мы хотим использовать JavaScript, а не VBScript.
JavaScriptEngine.Language = «JScript»
[8] Четвертый шаг — использование метода элемента управления сценария AddCode, чтобы добавить столько пользовательских функций JavaScript, сколько необходимо.
[9] Пятый шаг — использование метода элемента управления скриптом Run для вызова добавленного кода JavaScript.