VBA 处理 JSON 数据一步到位:VBA-JSON 解析与生成完整上手攻略

发布时间:2026/8/19 7:45:43
VBA 处理 JSON 数据一步到位:VBA-JSON 解析与生成完整上手攻略 VBA 处理 JSON 数据一步到位VBA-JSON 解析与生成完整上手攻略【免费下载链接】VBA-JSONJSON conversion and parsing for VBA项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON用 VBA 处理 JSON 数据是很多 Office 开发者绕不开的一道坎接口返回的数据看不懂、取不出来只能干瞪眼。VBA-JSON 正是为这个场景而生的轻量级库——单个文件导入、两个核心函数就能让 Excel、Access 把 JSON 当自家数据一样读和写。这篇文章不铺垫虚的直接带你从安装一路走到实战。VBA 处理 JSON 前先花 30 秒认识这种数据格式JSON 可以理解成一张快递单左边是标签键右边是内容值内容本身还能再套一张单子。比如{order_id:A001,amount:88.5}就是在说这张单子叫 order_id内容是 A001还有一项 amount内容是 88.5。它不挑编程语言几乎所有系统都认所以成了接口之间传数据时约定俗成的通用语言。麻烦的地方在于VBA 这门老前辈语言从诞生起就没内置 JSON 支持。你不装任何工具它连这是一段 JSON都识别不了只能把整段内容当普通字符串一个字符一个字符地抠。手动解析 JSON 到底有多痛三行代码暴露真相假设你只想从一段 JSON 里取出订单金额纯手写是这样的Dim 文本 As String 文本 {order_id:A001,amount:88.5} Dim 金额 As Double Dim 起点 As Long, 终点 As Long 先定位 amount: 这个键再把它的值从原文本里切出来 起点 InStr(文本, amount:) Len(amount:) 终点 InStr(起点, 文本, }) 金额 CDbl(Mid(文本, 起点, 终点 - 起点))字段一多、层级一深这种字符串考古式的代码会指数级膨胀多层嵌套要写递归、数组要写循环、转义字符要逐个处理。更要命的是不同接口返回的格式略有差异改一处常常崩一片。这不是你不够细心而是这个方向本身就走错了。VBA-JSON 用两个函数包办读和写VBA-JSON 的全部功力浓缩在两个公开函数里一个负责读一个负责写ParseJson(JSON文本)把 JSON 文本解析成 VBA 能直接操作的对象ConvertToJson(对象, Whitespace:n)把 VBA 对象反向生成 JSON 文本它做的映射非常直白JSON 对象对应 VBA 的 Dictionary字典按键取值JSON 数组对应 Collection集合按下标取值。也就是说JSON 里的大括号{}变成字典方括号[]变成集合拿到手就是你熟悉的数据结构用(键名)或(下标)直接取。用 VBA-JSON 重写上面取金额的代码Dim 解析结果 As Object Set 解析结果 JsonConverter.ParseJson(文本) 金额 解析结果(amount) 一行搞定嵌套再深也不怕同样的需求手写代码和工具调用放在一起对比差距一眼就能看出来。新手用 VBA 解析 JSON 最常见的 5 个坑及对症解法坑 1大数字变成科学计数法。订单号、身份证号一超过 15 位解析完就变1.23457E17。原因是 VBA 的数值类型只存 15 位有效数字。VBA-JSON 的默认策略是把超过 15 位的纯数字按字符串保存你原样取出来就是完整编号确实需要当数值用时再打开JsonConverter.JsonOptions.UseDoubleForLargeNumbers True。坑 2编译直接报用户定义类型未定义。导入 .bas 文件后一编译就标红多半是 Dictionary 依赖没就位。Windows 下在工具→引用里勾选 Microsoft Scripting RuntimeMac 下则要导入 VBA-Dictionary 项目的 Dictionary.cls。坑 3运行时报 10001 解析错误。错误码 10001 表示JSON parse error即文本本身不合法——常见于键没加双引号、字符串里的引号转义写错、末尾多逗号。另外记得在 VBA 代码里写 JSON 字符串时每个双引号都要写成两个。坑 4输出的 JSON 挤成一长行没法看。给同事核对字段时眼睛都花了。解决办法是给ConvertToJson传第二个参数Whitespace:2自动缩进美化想要更宽的缩进传 4想用 Tab 就传vbTab。坑 5换一台 Mac 就崩。Windows 上跑得好好的代码拷到 Mac 的 Excel 里就报错。VBA-JSON 在内部用#If Mac Then条件编译自动切换平台实现你的业务代码一行都不用改。安装 VBA-JSON从克隆到跑通只需 5 分钟整个过程三件事顺序别乱git clone https://gitcode.com/gh_mirrors/vb/VBA-JSON打开你的 Excel 或 Access按AltF11进入 VBA 编辑器在左侧工程资源管理器里右键你的工程 →导入文件选中克隆下来的JsonConverter.bas按你的平台补上 Dictionary 依赖Windows 勾引用Mac 导类详见坑 2。⚡ 到这一步你的 VBA 工程已经具备了完整的 JSON 读写能力总共花不了 5 分钟。实战用 VBA-JSON 把接口 JSON 写入 Excel 表格先看读假设接口返回一份订单列表你要把它们逐行写进工作表。Sub 订单入表() 模拟接口返回一个包含两条订单的 JSON 数组 Dim 原始文本 As String 原始文本 {orders:[{id:20250819001,amount:88.5,paid:true},{id:20250819002,amount:120,paid:false}]} Dim 数据 As Object Set 数据 JsonConverter.ParseJson(原始文本) 整个 JSON 变成一个字典 Dim 订单 As Object Dim 行 As Long 行 2 从第 2 行开始写第 1 行留给表头 For Each 订单 In 数据(orders) orders 是数组对应一个集合 ActiveSheet.Cells(行, 1).Value 订单(id) ActiveSheet.Cells(行, 2).Value 订单(amount) ActiveSheet.Cells(行, 3).Value IIf(订单(paid), 已支付, 未支付) 行 行 1 Next 订单 End Sub再看写把 Excel 里的数据打包成 JSON准备提交给 Web 端接口。Sub 报表打包() Dim 报表 As Object Set 报表 CreateObject(Scripting.Dictionary) 字典的键值一一对应 JSON 字段 报表.Add title, 月度销售 报表.Add generated, Now() 日期会自动转成 ISO 8601 格式对方系统直接能认 Dim 明细(1 To 2) As Variant 明细(1) ActiveSheet.Cells(2, 1).Value 明细(2) ActiveSheet.Cells(3, 1).Value 报表.Add rows, 明细 VBA 数组对应 JSON 数组 Whitespace:2 输出带缩进的 JSON方便调试正式调用时可省略该参数 Debug.Print JsonConverter.ConvertToJson(报表, Whitespace:2) End Sub两个示例分别对应接口数据进表和表格数据出接口这两个最常见的方向跑通它们日常工作的大头就覆盖了。进阶VBA-JSON 的 3 个配置开关分别怎么用JsonConverter.JsonOptions提供了三个可选项平时不用动遇到特殊需求再打开UseDoubleForLargeNumbers默认 False大数字按字符串保存如果对方接口明确要求数值类型再设为 True。AllowUnquotedKeys默认 False严格按标准要求键带引号解析某些不守规矩的老接口时可以放宽。EscapeSolidus默认 False若输出必须把/写成\/某些安全扫描的要求打开它。设置方式统一比如JsonConverter.JsonOptions.EscapeSolidus TrueVBA-JSON 高频报错3 个现象、原因与解决办法现象原因解决编译报用户定义类型未定义Dictionary 依赖缺失Windows 勾选 Microsoft Scripting RuntimeMac 导入 VBA-Dictionary运行时报 10001 解析错误JSON 文本不合法检查键是否带引号、引号是否成对、是否多了逗号大数字变成科学计数法VBA 只存 15 位有效数字默认按字符串取出确需数值再开 UseDoubleForLargeNumbers收尾把第一步走完回到开头那句话VBA 没有原生 JSON 支持但这件事本来就该由工具代劳而不是靠人肉截字符串。VBA-JSON 的全部价值可以浓缩成三个字——少造轮子单文件、跨平台、两个函数覆盖读写再用三个选项兜住大数字、非标键这些边角情况。下一步非常具体克隆仓库 → 导入JsonConverter.bas→ 把上面的订单入表示例换成你自己接口的真实字段跑通它。✅ 跑通的那一刻你就正式跨过了 VBA 接 JSON 这道坎后面再遇到什么接口数据心里都有底了。【免费下载链接】VBA-JSONJSON conversion and parsing for VBA项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考