VBA 解析 JSON 总报错?一个 JsonConverter.bas 跑通解析与生成 📅 发布时间:2026/8/27 1:51:23 👁 浏览次数: VBA 解析 JSON 总报错一个 JsonConverter.bas 跑通解析与生成【免费下载链接】VBA-JSONJSON conversion and parsing for VBA项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON把天气接口返回的 JSON 填进 Excel我手写的 InStr 解析在第二层数组就崩了只报了一句 Run-time error 13。VBA-JSON 就是干这个的单文件 VBA JSON 解析库Excel、Access 通吃。本文带你装好它跑通第一个完整例子。为什么手写解析撑不住嵌套结构手撕 JSON 撑不住原因很实在结构不可控而每一层嵌套、每个转义都得自己兜底。手写 InStr/Mid每多一层嵌套就多写一套定位逻辑转义\、换行漏一个边界直接 Type mismatch老 VBA 环境连 Dictionary 都要手动引用clone 后三步导入平台差异一张表git clone https://gitcode.com/gh_mirrors/vb/VBA-JSONAltF11打开 VBA 编辑器工程上右键 → Import File选仓库根目录的JsonConverter.bas再补上按系统区分的一步系统要补的依赖仅 Windows工具 → 引用勾选 Microsoft Scripting RuntimeWindows Mac 通吃引入 VBA-Dictionary 项目的Dictionary.cls为什么要这一步ParseJson返回的结果底层就是Dictionary对象和Collection数组没有它们解析出来的东西没地方放。编译一次不报错环境就齐了。从解析到输出的最小闭环 解析对象变 Dictionary数组变 Collection Dim json As Object Set json JsonConverter.ParseJson({a:123,b:[1,2,3],c:{d:456}}) 取值按层剥洋葱 Debug.Print json(a) 123 Debug.Print json(b)(2) 2数组下标从 1 开始 Debug.Print json(c)(d) 456嵌套对象 改数据再转回 JSON 字符串 json(c)(e) 789 Debug.Print JsonConverter.ConvertToJson(json) 紧凑格式 Debug.Print JsonConverter.ConvertToJson(json, Whitespace:2) 缩进 2 格预期输出123 2 456 {a:123,b:[1,2,3],c:{d:456,e:789}}最后一行是带缩进的多行结构层级一眼看清。输入不合法时抛出错误码10001报错信息会直接指向卡住的字符位置排查不盲目。⚠️15 位数字精度陷阱VBA 的 Double 只保 15 位有效数字身份证号、卡号按数字解析会被悄悄截断。VBA-JSON 的默认行为是超过 15 位的纯数字一律按 String 返回需要数字类型才显式开关 未加引号的 18 位数字默认按 String 返回 Dim r As Object Set r JsonConverter.ParseJson([12345678901234567890]) Debug.Print TypeName(r(1)) String精度不丢 确实需要 Double 才打开会丢精度 JsonConverter.JsonOptions.UseDoubleForLargeNumbers True跑官方测试再看进阶用法仓库里的specs/Specs.bas写了几十组断言嵌套数组、转义单引号、null值、日期自动转 ISO 格式。打开specs/VBA-JSON - Specs.xlsm跑一遍能看到作者怎么给一个上千行的单文件库做回归测试。README 里还有个进阶例子读取.json文件直接写入工作表仅 Windows。你下一步可以做的事把你自己的接口返回塞进那个例子数据直接进表。【免费下载链接】VBA-JSONJSON conversion and parsing for VBA项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考