行业资讯
📅 2026/8/27 16:08:07
VBA-JSON 快速上手指南:一份 .bas 文件搞定 Excel 里的 JSON 解析与生成
VBA-JSON 快速上手指南一份 .bas 文件搞定 Excel 里的 JSON 解析与生成【免费下载链接】VBA-JSONJSON conversion and parsing for VBA项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON结论先行VBA-JSON 解决什么问题VBA-JSON 是一个面向 VBA 的免费开源 JSON 解析库让 Excel、Access 等 Office 应用能够直接解析与生成 JSON。整个库只有JsonConverter.bas一个文件约 1100 行导入即用Windows 与 Mac 通用——在没有原生 JSON 组件的 VBA 环境里它是成本最低的解法。能力地图VBA JSON 解析用在哪类业务场景说明 拉接口数据填表调用订单、物流、库存接口把返回的 JSON 自动写入工作表区域️ 用 JSON 文件存取配置把用户自定义选项存成 .json 文件避免在 Access 里预留几十个字段 向 Web 端输出数据把表格内容转成 JSON 字符串交给 Web 应用或第三方接口消费三个场景的共同难点JSON 结构往往不受控而 VBA 本身没有内置字典类型所有取值都要放进手动引用的容器里。环境搭建JsonConverter.bas 用法与平台差异先获取源码仓库git clone https://gitcode.com/gh_mirrors/vb/VBA-JSON然后打开 VBA 编辑器AltF11在工程窗口右键工程 → 导入文件选择仓库根目录的JsonConverter.bas。导入后补一项平台依赖平台需要准备的依赖Windows工具 → 引用中勾选Microsoft Scripting RuntimeMac引入 VBA-Dictionary 项目的Dictionary.cls这一步的原因ParseJson的返回值底层就是Dictionary对象与Collection数组没有字典类解析结果无处安放。配置完成后编译一次无报错即环境就绪。API 速查ParseJson 与 ConvertToJson 完整闭环API输入返回说明JsonConverter.ParseJsonJSON 字符串Object对象→Dictionary数组→Collection下标从 1 开始JsonConverter.ConvertToJsonObject可选Whitespace:nJSON 字符串指定Whitespace时输出缩进 n 空格的多行格式下面是一段可直接在模块里运行的闭环示例订单场景 解析订单快照对象变 Dictionary数组变 Collection Dim order As Object Set order JsonConverter.ParseJson({order_id:1024,qty:[2,5,1],warehouse:{city:Suzhou}}) Debug.Print order(order_id) 1024 Debug.Print order(qty)(2) 5数组下标从 1 开始 Debug.Print order(warehouse)(city) Suzhou嵌套对象取值 order(warehouse)(zone) B3 补一个字段 Debug.Print JsonConverter.ConvertToJson(order) 紧凑单行便于传接口 Debug.Print JsonConverter.ConvertToJson(order, Whitespace:2) 缩进 2 格便于人读后两行输出同一份数据的两种形态紧凑版适合传给接口缩进版适合肉眼核对结构。三个反直觉细节1. 错误码 10001 怎么排查ParseJson遇到非法输入会抛错误码10001提示Expecting { or [——解析器期望 JSON 以对象或数组开头。排查顺序开头是否有多余逗号、引号是否缺失、是否混入全角字符或首个有效字符确实不是{/[。2. 15 位数字为什么会丢精度VBA 的Double只能可靠保存15 位有效数字。订单号、卡号这类超过 15 位的纯数字若按数字解析尾数会被静默改写如123456789012345678→123456789012345670。VBA-JSON 的默认策略是长度超过 15 位的纯数字一律按字符串返回避免精度丢失 19 位订单号默认以 String 返回不会变成被四舍五入的 Double Dim r As Object Set r JsonConverter.ParseJson({order_no:2026082617000012345}) Debug.Print TypeName(r(order_no)) 输出 String确需数字类型时再显式打开对应开关见下节。3. JsonOptions 三个开关的默认值各是什么意图开关位于JsonConverter.JsonOptions默认设计意图UseDoubleForLargeNumbersFalse大数字按Double存会丢精度字符串更安全AllowUnquotedKeysFalse标准 JSON 要求键必须带引号关闭即严格合规EscapeSolidusFalse/本可不转义仅在输出需\/时置True一行JsonConverter.JsonOptions.EscapeSolidus True即可生效。记住默认值本身是设计过的这一点比背下所有签名更有用。验证与延伸把官方测试当作跑通自查仓库specs/Specs.bas内置数十组回归断言覆盖嵌套数组、转义字符、null值、日期 ISO 化等场景。打开VBA-JSON - Specs.xlsm完整执行一遍是确认环境配置无误的最快方式。建议按顺序行动导入JsonConverter.bas确认编译通过运行 API 速查一节的闭环示例对照两种输出格式试 README 中的进阶例子读取.json文件并把结果写入 Sheet执行 Specs 工程一遍确认全部断言通过。收尾VBA-JSON 把 Excel 的 JSON 处理从自写一串字符串操作压缩到导入一份文件。下次接口返回 JSON 时只需要记住一句话VBA 解析 JSON一个 .bas 文件就够。【免费下载链接】VBA-JSONJSON conversion and parsing for VBA项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考