ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

VBA-JSON 完整入门:一个文件让 Excel 和 Access 轻松解析 JSON

2026/8/19 18:38:34 拓冰建站 浏览量
VBA-JSON 完整入门:一个文件让 Excel 和 Access 轻松解析 JSON VBA-JSON 完整入门一个文件让 Excel 和 Access 轻松解析 JSON【免费下载链接】VBA-JSONJSON conversion and parsing for VBA项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON文章关键词核心关键词——「VBA JSON 解析」长尾关键词——Excel VBA 解析 JSON、VBA JSON 转 Dictionary、Excel 读取 API 数据、JsonConverter.bas 导入、Access 读取 JSON 配置。当 API 返回一长串 JSON你只能对着 Excel 叹气时你有没有过这样的经历费尽周折从某个接口拿到一份 JSON 数据想整理进 Excel 表格结果打开一看全是一行挤成几万字符的大括号文本缩进、换行全无你只能一边叹气一边手工复制粘贴又或者你的 Access 系统想读取一个配置文件对方偏偏只提供 JSON 格式。这种JSON 近在眼前却无从下手的挫败感正是无数 VBA 开发者的日常。而今天要介绍的VBA-JSON就是来终结这种痛苦的——它让 Excel、Access 等 Office 应用解析 JSON简单到只差一次导入。项目速览VBA-JSON 是什么、给谁用一句话定义VBA-JSON 是一个纯 VBA 编写的 JSON 解析与生成库核心只有一个JsonConverter.bas文件。它把 JSON 字符串解析成 VBA 熟知的字典Dictionary和集合Collection也能把字典、集合、数组反向转成 JSON 字符串。它适合谁所有在 Excel、Access、Word、Outlook 里写过 VBA 宏的人——尤其是那些需要对接 Web API、处理配置文件、在系统间交换数据却苦于 VBA 没有原生 JSON 支持的朋友。它的核心亮点✅极致简单整个库就一个文件导入即用零依赖安装仅需一个 Windows 自带引用✅双向转换既能ParseJson把 JSON 读进来也能ConvertToJson把数据写出去还支持缩进美化输出✅跨平台兼容通过条件编译同时支持 Windows 和 Mac覆盖 Excel 2007 及以上版本Access 等其他 Office 应用同样适用✅细节处理扎实内置大数字保护、转义字符、日期时间ISO 8601/UTC转换并附有一套完整的测试用例specs/Specs.bas✅开源免费MIT 许可可直接用于商业项目有它 vs 没有它JSON 处理的差距有多大先说结论没有 VBA-JSON你要么手工复制粘贴要么写上百行字符串处理代码有了它核心操作一行搞定。场景没有 VBA-JSON有 VBA-JSON从接口拿数据手动复制、逐段拆分、反复调试ParseJson一行转成对象直接取值给别的系统传数据手工拼字符串少个引号全盘报错ConvertToJson自动生成合法 JSON修改嵌套数据每层都要写定位逻辑头大像操作字典一样obj(a)(b) 1处理时间戳手写格式转换容易踩时区坑内置 ISO 8601 与 UTC 转换函数举个生活化的例子你要把一份商品清单传给公司的 Web 系统没有 VBA-JSON 时你得自己拼{name:笔记本,price:5999}这种字符串一旦某个值里带了引号或反斜杠整个字符串就废了你还得满屏找 bug。有了 VBA-JSON你把数据放进字典ConvertToJson自动帮你处理所有转义几秒钟生成标准 JSON——是不是瞬间安心了再比如你每天要从天气 API 拉数据更新报表。没有它你只能开着两个窗口来回切换复制有了它写一个循环把数据写进单元格以后每天一键刷新。差距就是这么直观。上手实操三关跑通你的第一个 JSON 示例既然心动了我们就直接动手。整个过程分成三关每一关都有明确的通关现象帮你确认成功。第一关拿到 JsonConverter.bas 并导入先获取项目源码在命令行执行git clone https://gitcode.com/gh_mirrors/vb/VBA-JSON然后打开你的 Excel或 Access按Alt F11进入 VBA 编辑器在菜单栏选择文件 → 导入文件选中项目里的JsonConverter.bas并确定。通关现象左侧项目资源管理器里出现名为JsonConverter的模块双击能看到大约 1100 行代码。看到它第一关就过了。配图建议此处可放置一张「VBA 编辑器中导入 JsonConverter.bas 后的项目资源管理器」截图帮助读者对照确认建议分辨率 600×300 以上。第二关配好字典Dictionary依赖VBA-JSON 把 JSON 对象解析成字典而字典在 VBA 里不是一个内置类型需要手动声明依赖Windows 用户在 VBA 编辑器菜单点击工具 → 引用在弹出的窗口中勾选Microsoft Scripting Runtime点确定。Mac 用户需要额外引入 VBA-Dictionary 项目里的Dictionary.cls类文件Mac 版 VBA 不带 Scripting Runtime。通关现象这一步没有直接的可视反馈但你可以在代码窗口随便打一个Dim d As Dictionary如果不弹用户定义类型未定义的编译错误就说明依赖配好了。第三关运行你的第一段 JSON 代码在 VBA 编辑器里插入一个标准模块粘贴下面的代码这是我特意挑的极简版本完整演示解析 → 改数据 → 生成全流程Sub 我的第一个JSON程序() 注意VBA 字符串里的引号要写两遍这是 VBA 的语法规则 Dim jsonText As String jsonText {a:123,b:[1,2,3,4],c:{d:456}} 核心一步把 JSON 字符串解析成对象 Dim obj As Object Set obj JsonConverter.ParseJson(jsonText) 取值对象用键名数组解析成 Collection下标从 1 开始 Debug.Print obj(a) 输出 123 Debug.Print obj(b)(2) 输出 2b 是数组第二项 Debug.Print obj(c)(d) 输出 456嵌套对象 改数据像操作字典一样直接赋值 obj(c)(e) 789 反向生成带 2 空格缩进的美化版 JSON Debug.Print JsonConverter.ConvertToJson(obj, Whitespace:2) End Sub把光标停在子过程里按F5运行然后按Ctrl G打开立即窗口。通关现象你能依次看到123、2、456最后是一段缩进整齐的 JSON——其中c里多了你刚加进去的e: 789。三关全过恭喜你已经会用 VBA-JSON 了真实案例三个贴近日常的实战场景会跑示例只是开始下面三个场景都是平时最容易遇到的代码只保留最关键部分。案例一把天气 API 的 JSON 写进 Excel 表格背景你每天要更新一张天气对比表数据来自某个接口返回的 JSON。操作解析 JSON 后遍历天数组逐行写入单元格Sub 导入天气数据() Dim jsonText As String jsonText {city:上海,days:[{date:2026-08-19,temp:31},{date:2026-08-20,temp:29}]} Dim root As Object Set root JsonConverter.ParseJson(jsonText) Dim row As Long row 2 从第 2 行开始写 Dim day As Object For Each day In root(days) days 数组被解析成 Collection Cells(row, 1).Value root(city) Cells(row, 2).Value day(date) Cells(row, 3).Value day(temp) row row 1 Next day MsgBox 已写入 root(days).Count 天天气数据 End Sub结果运行后表格里出现 2 行数据城市、日期、温度一目了然。之后把jsonText换成真实接口返回的内容就是一张全自动更新的报表。案例二Access 用 config.json 管理配置背景你的 Access 小系统的连接参数、重试次数想放在外部配置文件里改配置不用动代码。操作用文件系统对象读取config.json再交给ParseJsonFunction 读取配置() As Object 用 CreateObject 晚绑定避免额外的引用配置 Dim fso As Object, ts As Object Set fso CreateObject(Scripting.FileSystemObject) Set ts fso.OpenTextFile(CurrentProject.Path \config.json, 1) 1 只读 Dim text As String text ts.ReadAll ts.Close Set 读取配置 JsonConverter.ParseJson(text) JSON 对象 → Dictionary End Function Sub 测试配置读取() Dim cfg As Object Set cfg 读取配置() Debug.Print cfg(database)(host) 取嵌套配置config.json 里的 database.host Debug.Print cfg(retryTimes) 取普通配置项 End Sub结果只要config.json结构不变改参数就改文件代码零改动。给不懂代码的同事用特别省心。案例三把 Excel 报表一键导出为 JSON背景Web 端同事要接你的销售数据你不想手工整理希望一键生成标准 JSON 文件。操作把数据装进字典用ConvertToJson生成带缩进的 JSON再写入文件Sub 导出报表为JSON() Dim data As Object Set data CreateObject(Scripting.Dictionary) data.Add 报表名称, 8月销售数据 data.Add 更新时间, Format(Now(), yyyy-mm-dd hh:nn:ss) data.Add 产品, Array(手机, 笔记本, 平板) data.Add 销量, Array(120, 85, 66) Dim json As String json JsonConverter.ConvertToJson(data, Whitespace:2) 2 缩进 2 个空格 Dim fso As Object, ts As Object Set fso CreateObject(Scripting.FileSystemObject) Set ts fso.CreateTextFile(report.json, True) ts.Write json ts.Close MsgBox 已导出 report.json End Sub结果当前目录下生成report.json格式美观、转义正确Web 端直接拿去用省掉了两边的扯皮。避坑指南别人踩过的坑你提前绕开以下四个坑是新手最容易踩的提前知道能省下大量排查时间坑 1编译报用户定义类型未定义。几乎都是字典依赖没配好。Windows 用户请检查是否勾选了工具 → 引用 → Microsoft Scripting RuntimeMac 用户确认已导入 VBA-Dictionary 的Dictionary.cls。⚠️坑 2obj(b)(0)报下标越界。VBA-JSON 把 JSON 数组解析成 VBA 的Collection下标从1开始不是很多编程语言习惯的 0这是新手最常见、最容易忽略的差异。坑 3身份证号、订单号被截断。VBA 本身只保存 15 位有效数字超过就会丢精度。VBA-JSON 的默认策略很聪明超过 15 位的纯数字一律按字符串处理所以默认是安全的。如果你确实需要数值类型再显式设置JsonConverter.JsonOptions.UseDoubleForLargeNumbers True但要接受精度损失。坑 4解析时报错 10001JSON parse error。常见诱因是 JSON 里有多余的尾逗号或键没有加引号。标准 JSON 要求键必须用引号包裹如果你对接的是不规范的内部接口可以设置JsonConverter.JsonOptions.AllowUnquotedKeys True放宽限制。坑 5手写 JSON 字符串时引号爆炸。在 VBA 代码里写 JSON内部所有引号都要翻倍稍不留神就写错。更稳妥的做法是把 JSON 存成文件再读或通过接口实时获取。进阶思路从会用走向用精跑通案例之后沿着下面这条路径你能把这套库用到飞起吃透日期时间函数。VBA-JSON 内置了ParseIso、ConvertToIso、ParseUtc、ConvertToUtc对接带时区的时间戳再也不用自己硬算偏移量。配合 HTTP 请求做真正的接口调用。用 VBA 自带的WinHttpRequest或MSXML2.XMLHTTP发 GET/POST 请求把响应文本直接喂给ParseJson你的 Excel 就拥有了实时数据驾驶舱。读懂测试用例。打开specs/Specs.bas里面覆盖了几十个边界场景——转义字符、Unicode、null、多层嵌套、畸形输入等。看一遍这些用例你对 JSON 各种坑的理解会直接上一个台阶。研究JsonOptions的其余开关。比如EscapeSolidus把/转义成\/某些安全要求严格的接口会用到。关注生态整合。VBA-JSON 出身于 VBA-Web 项目熟悉它之后再接触 VBA-Web 等周边库就能组合出请求 → 解析 → 展示的完整 API 客户端方案。结尾别收藏了现在就动手还记得开头对着 JSON 长文本叹气的自己吗解决它的钥匙其实只是导入一个文件、勾一个引用、写一行ParseJson。今天的三个步骤——克隆项目、导入JsonConverter.bas、跑通第一段示例代码——你现在就能完成全部耗时不超过 10 分钟。下一步去找一份真实的 JSON 数据比如某个公开天气接口照着案例一把它变成你的 Excel 表格。把收藏换成运行你的 Office 应用从此就拥有和现代语言一样的 JSON 处理能力了。【免费下载链接】VBA-JSONJSON conversion and parsing for VBA项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考