首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA: 将选中的单元格区域导出为 JSON 文件

VBA: 将选中的单元格区域导出为 JSON 文件

作者头像
Exploring
发布2025-04-17 13:55:11
发布2025-04-17 13:55:11
48800
代码可运行
举报
运行总次数:0
代码可运行

在日常的数据处理中,我们经常会处理表格数据并需要将其导出为标准格式,比如 JSON,方便用于系统对接、前端展示或数据交换。今天我们就用一段简单实用的 VBA 代码,来实现这个功能:将 Excel 中选中的单元格区域导出为 JSON 文件

🧩 功能概览

这段 VBA 代码的功能如下:

  • 支持选中任意区域(只要第一行为列名,其余为数据);
  • 将选中区域转为标准 JSON 数组格式;
  • 弹出保存对话框,导出为 .json 文件;
  • 使用 VBA-JSON 模块实现序列化。

✅ 示例数据

转为 JSON 后如下:

代码语言:javascript
代码运行次数:0
运行
复制
[
  {
    "Name": "Tom",
    "Age": 25,
    "City": "Tokyo"
  },
  {
    "Name": "Alice",
    "Age": 30,
    "City": "Osaka"
  }
]

🔧 第一步:准备 JSON 模块

为了支持 JSON 格式,需要引入第三方的 JSON 模块:

  1. 下载 JsonConverter.bas
  2. 打开 Excel,按下 Alt + F11 进入 VBA 编辑器
  3. 菜单栏选择 文件 > 导入文件,导入 JsonConverter.bas

🧑‍💻 第二步:准备 VBA 代码

✳️ JSON 转换函数 RangeToJson

代码语言:javascript
代码运行次数:0
运行
复制
Function RangeToJson(dataRange As Range) As String
    Dim headerRange As Range, dataBodyRange As Range
    Dim headers As Object
    Dim r As Range, c As Range
    Dim rowIndex As Long
    Dim jsonObject As Object
    Dim collectionToJson As New Collection

    If dataRange.Rows.Count < 2 Then
        RangeToJson = ""
        MsgBox "选区至少需要包含表头和一行数据。", vbExclamation
        Exit Function
    End If

    Set headerRange = dataRange.Rows(1)
    Set dataBodyRange = dataRange.Resize(dataRange.Rows.Count - 1).Offset(1, 0)

    Set headers = CreateObject("Scripting.Dictionary")
    For Each c In headerRange.Cells
        headers.Add c.Column, CStr(c.Value)
    Next

    For rowIndex = 1 To dataBodyRange.Rows.Count
        Set jsonObject = CreateObject("Scripting.Dictionary")
        For Each c In dataBodyRange.Rows(rowIndex).Cells
            If headers.Exists(c.Column) Then
                jsonObject.Add headers(c.Column), c.Value
            End If
        Next
        collectionToJson.Add jsonObject
    Next

    RangeToJson = JsonConverter.ConvertToJson(collectionToJson, Whitespace:=2)
End Function

✳️ 导出功能 ExportJsonFromSelectedRange

代码语言:javascript
代码运行次数:0
运行
复制
Sub ExportJsonFromSelectedRange()
    Dim jsonText As String
    Dim fileSaveName As Variant
    Dim fileNumber As Integer

    If TypeName(Selection) <> "Range" Then
        MsgBox "请先选择一个包含表头的区域。", vbExclamation
        Exit Sub
    End If

    jsonText = RangeToJson(Selection)

    If jsonText = "" Then Exit Sub

    fileSaveName = Application.GetSaveAsFilename(fileFilter:="JSON Files (*.json), *.json")

    If fileSaveName <> False Then
        fileNumber = FreeFile
        Open fileSaveName For Output As fileNumber
        Print #fileNumber, jsonText
        Close fileNumber
        MsgBox "导出成功!"
    End If
End Sub

🏁 第三步:使用方法

  1. 在 Excel 中选中包含“表头 + 数据”的区域;
  2. 在宏菜单中运行 ExportJsonFromSelectedRange
  3. 出现保存对话框后,输入文件名保存为 .json
  4. 完成!

✅ 总结

通过这段 VBA 代码,你可以轻松将 Excel 数据转为 JSON 文件。

参考资料:

[1] VBA-JSON(https://github.com/VBA-tools/VBA-JSON)

[2] Save Excel Table to JSON File using VBA and VBA-JSON(https://syntaxbytetutorials.com/save-excel-table-to-json-file-using-vba-and-vba-json/)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与编程实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🧩 功能概览
  • ✅ 示例数据
  • 🔧 第一步:准备 JSON 模块
  • 🧑‍💻 第二步:准备 VBA 代码
    • ✳️ JSON 转换函数 RangeToJson
    • ✳️ 导出功能 ExportJsonFromSelectedRange
  • 🏁 第三步:使用方法
  • ✅ 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档