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

使用Excel VBA读取Dymola参数值:2024x返回#REF!问题咨询

Dymola 2024x中Excel DDE宏返回#REF!的解决办法

问题背景

我在Dymola 2020x、2022x版本中,通过Excel宏结合DDE协议读取模型参数一直正常,但升级到2024x后,执行宏后Excel单元格返回#REF!错误,无法获取参数值。

用到的Dymola模型

model Unnamed2
  parameter Real x=1;
  Real y;
equation 
  y=2*x;
  annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(
        coordinateSystem(preserveAspectRatio=false)));
end Unnamed2;

原Excel宏代码

Sub ExcelMacro()
Cells(1, 1) = Application.DDERequest(Application.DDEInitiate("dymola", "xxx"), "ModelicaString:x")
End Sub

可行的解决步骤

1. 确认DDE主题名称正确性

Dymola 2024x可能调整了DDE服务的主题标识,原代码中DDEInitiate的第二个参数"xxx"可能不再有效:

  • 打开Dymola 2024x并加载目标模型,通过Tools > Options > General查看DDE相关配置,获取当前有效的主题名称。
  • 将宏中的"xxx"替换为正确的主题名,重新执行宏测试。

2. 替换为COM接口(推荐方案)

DDE属于老旧协议,Dymola新版本对其支持可能逐步缩减,改用COM接口更稳定可靠:

Sub GetDymolaParamViaCOM()
    Dim dymolaApp As Object
    ' 创建Dymola应用实例
    Set dymolaApp = CreateObject("Dymola.Application")
    
    ' 确保模型已加载(替换为实际模型文件路径)
    dymolaApp.OpenModel("C:/YourModelPath/Unnamed2.mo")
    
    ' 获取参数x的值并写入A1单元格
    Cells(1, 1) = dymolaApp.GetVariable("x")
    
    ' 释放对象
    Set dymolaApp = Nothing
End Sub

3. 检查运行权限与环境设置

  • 同时以管理员权限启动Excel和Dymola,避免权限不足导致通信失败。
  • 调整Excel宏安全设置,允许执行包含外部交互的宏(路径:文件 > 选项 > 信任中心 > 信任中心设置 > 宏设置)。
  • 检查系统防火墙是否阻止了Dymola与Excel的进程通信,必要时将两者添加至白名单。

内容的提问来源于stack exchange,提问作者y.min

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:12:51