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

Visio 2019 VBA实现API JSON数据填充形状及代码可行性咨询

Visio 2019 VBA调用API填充形状数据问题解答

代码可用性判断

你贴出的代码属于Power Query M语言,仅能在Excel、Power BI等内置Power Query组件的环境中运行,完全无法直接在Visio的VBA编辑器中执行。

Visio VBA实现需求的正确方案

前置准备

在Visio VBA编辑器的「工具-引用」中勾选以下两个库:

  • Microsoft WinHTTP Services, version 5.1(用于发送HTTP请求拉取接口数据)
  • Microsoft Scripting Runtime(用于配合JSON解析工具处理结构化数据)

VBA没有原生JSON解析能力,你可以将通用的VBA-JSON模块导入到你的VBA工程中,即可直接调用方法解析接口返回的JSON字符串。

核心实现步骤

  1. 发送GET请求拉取接口数据
  2. 解析返回的JSON字符串得到结构化数据集
  3. 遍历数据集,匹配Visio页面中的对应形状,将数据写入形状的自定义属性(形状数据)字段

示例代码片段

Sub 从API拉取数据填充Visio形状()
    Dim http As WinHttp.WinHttpRequest
    Dim jsonData As Object
    Dim shp As Shape
    Dim dataItem As Object
    
    ' 1. 发送请求获取接口返回内容
    Set http = New WinHttp.WinHttpRequest
    http.Open "GET", "http://test.com/", False
    http.Send
    
    ' 2. 解析JSON获取数据集
    Set jsonData = JsonConverter.ParseJson(http.ResponseText)("dataset")
    
    ' 3. 遍历数据匹配填充形状数据
    For Each dataItem In jsonData
        ' 可根据实际业务逻辑调整形状匹配规则,示例按形状名称匹配接口返回的label字段
        For Each shp In ActivePage.Shapes
            If shp.Name = dataItem("label") Then
                ' 字段名可根据你的实际需求调整,字符串类型值需要加双引号包裹
                shp.CellsU("Prop.Meas").FormulaU = """" & dataItem("meas") & """"
                shp.CellsU("Prop.ValueY").FormulaU = dataItem("data")(1)("y")
            End If
        Next shp
    Next dataItem
    
    ' 释放对象
    Set http = Nothing
    Set jsonData = Nothing
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:27:03