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字符串。
核心实现步骤
- 发送GET请求拉取接口数据
- 解析返回的JSON字符串得到结构化数据集
- 遍历数据集,匹配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
相关产品推荐
相关产品推荐

