如何通过Excel VBA Automation访问HYSYS中液压图的列内部?

时间:2019-01-08 13:23:26

标签: excel vba automation aspen

我已经在Aspen HYSYS V9中构建了一个模拟模板,并希望使用VBA Automation将用于Excel的液压计算的内部类型,塔板/填料类型和末级等色谱柱内部数据传输到HYSYS。最后,我想提取该列的水力图结果。我没有在对象浏览器中找到内部构件,因此我尝试使用后门变量访问内部构件。为了找出这个绰号,我录制了一个脚本,在其中打开了列的“内部”页面,并将类型从托盘式更改为包装式,然后又更改为托盘式。该脚本显示以下内容:

Message "FlowSht.1/UnitOpObject.400(Regenerator)" "view"
Message "FlowSht.1/UnitOpObject.400(Regenerator)/FlowSht.600" "MakeMeActiveColumnOp"
SpecWhileSolving Specify "FlowSht.1/UnitOpObject.400(Regenerator)" ":Enum.590.0"  0.000000000000e+000 
SpecWhileSolving Specify "FlowSht.1/UnitOpObject.400(Regenerator)" ":Enum.590.0"  0.000000000000e+000
SpecWhileSolving Message "FlowSht.1/UnitOpObject.400(Regenerator)/FlowSht.600" "MakeMeActiveColumnOp"
Specify "FlowSht.1/UnitOpObject.400(Regenerator)" ":PageNumber.0"  1.000000000000e+001
SpecWhileSolving Specify "Utility.300(Internals-1@Main Tower@COL4)" ":Index.709"  0.000000000000e+000
Specify "Utility.300(Internals-1@Main Tower@COL4)" ":Index.709"  0.000000000000e+000
SpecWhileSolving Specify "Utility.300(Internals-1@Main Tower@COL4)" ":Selection.711.0"  1.000000000000e+000
Specify "Utility.300(Internals-1@Main Tower@COL4)" ":Index.709"  0.000000000000e+000
Specify "Utility.300(Internals-1@Main Tower@COL4)" ":Index.709"  0.000000000000e+000
SpecWhileSolving Specify "Utility.300(Internals-1@Main Tower@COL4)" ":Selection.711.0"  0.000000000000e+000
Specify "Utility.300(Internals-1@Main Tower@COL4)" ":Index.709"  0.000000000000e+000

然后我编写了以下vba代码:

Dim hyfs As Flowsheet
Dim hyfsBD As BackDoor
Dim hyBDVar As RealVariable

Set hyfs = hycase.Flowsheet
Set hyfsBD = hyfs

Set hyBDVar = hyfsBD.BackDoorVariable("Utility.300(Internals-1@Main Tower@COL1)" & ":Selection.711.0").Variable

hyBDVar.SetValue 1, ""

但是hyBDVar的返回值为-32767,我收到一条错误消息:“对象“ InternalRealVariable”的方法“ Set Value”失败。” HYSYS的返回值-32767通常表示该变量为空。但实际上我指定了一些内部组件。

这个问题是我上一个问题的后续问题,这就是为什么听起来如此相似的原因。

0 个答案:

没有答案