Как я могу получить доступ к внутренним компонентам колонок для гидравлических участков в HYSYS через Excel VBA Automation? - PullRequest
0 голосов
/ 08 января 2019

Я построил шаблон моделирования в Aspen HYSYS V9 и хочу перенести данные для внутренних элементов столбца, таких как внутренний тип, тип лотка / упаковки и конечный этап гидравлических расчетов, из листа Excel в HYSYS с использованием VBA Automation. В конце хочу извлечь результаты гидравлических графиков колонны. Я не нашел внутренних объектов в браузере объектов, поэтому я попытался получить доступ к внутренним объектам с помощью переменной backdoor. Чтобы выяснить это прозвище, я записал скрипт, в котором я открыл «внутреннюю» страницу столбца и изменил тип с лотка на упакованный и обратно на лоток. Скрипт показывает следующее:

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 »». Возвращаемое значение -32767 из HYSYS обычно означает, что переменная пуста. Но на самом деле у меня были указаны некоторые внутренние данные.

Этот вопрос является продолжением моего предыдущего вопроса, поэтому он звучит так похоже.

...