You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBA读取JSON并提取性别值至Excel?代码遇类型不匹配报错

问题分析与修正方案

错误原因

原代码存在两个核心问题触发类型不匹配错误:

  1. JSON对象处理逻辑错误:你提取的Array_need是单个JSON对象,解析后得到的Jsonobject是Dictionary类型。For Each Item In Jsonobject循环中,Item是对象的键名字符串(如"Name""Gender"),而非对象本身,此时执行Item("Gender")会因字符串无法作为字典调用而报错。
  2. 未正确利用原始JSON结构:手动拆分JSON字符串的方式既不严谨,也忽略了原始数据是嵌套数组的结构,应该直接解析完整JSON来定位目标数据。

修正后的代码

Option Explicit

Sub GetGenderFromJson()
    Dim rawJson As String
    Dim jsonRoot As Object, outerItem As Object, innerItem As Object
    
    ' 获取单元格中的JSON字符串
    rawJson = Worksheets("sheet1").Cells(1, 1).Value
    
    ' 解析完整JSON(需确保已引入JsonConverter模块)
    Set jsonRoot = JsonConverter.ParseJson(rawJson)
    
    ' 遍历外层数组
    For Each outerItem In jsonRoot
        ' 遍历外层数组中的每个内层数组
        For Each innerItem In outerItem
            ' 检查当前对象是否包含Gender键
            If innerItem.Exists("Gender") Then
                Worksheets("sheet1").Cells(1, 2).Value = innerItem("Gender")
                Exit Sub ' 找到目标后直接退出,避免多余循环
            End If
        Next innerItem
    Next outerItem
End Sub

关键说明

  • 完整解析JSON:直接解析原始嵌套数组结构,避免手动拆分字符串带来的错误和不稳定性。
  • 逐层遍历嵌套结构:原始JSON是数组→数组→对象的嵌套结构,通过两层循环逐层遍历,精准定位包含Gender键的对象。
  • 优化运行效率:找到目标值后立即退出子程序,减少不必要的循环执行。

内容的提问来源于stack exchange,提问作者Yes_par_row

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:21:00