Now, we're trying to access pipesegment on Aspen Hysys 7.3 through VBA. This post is an answer of previous post comment. Here is the example Create a table as shown figure
Then add following VBA code Option Explicit Public hyApp As HYSYS.Application Public simCase As SimulationCase Public pStream As ProcessStream Public psegment As PipeSegment
Public Sub StartHYSYS() Dim filename As String Dim ITEM As Integer Dim lengthVar As Variant Dim p_length, p_elev, p_rough, p_idiam, p_odiam, p_cond As Variant ' HYSYS CUSTOMATION THROUGH EXCEL TO ACCESS PIPE SEGMENT ' LOADING HYSYS SIMULATION FILE Set hyApp = CreateObject("HYSYS.Application") hyApp.Visible = True Set simCase = hyApp.ActiveDocument If simCase Is Nothing Then filename = Worksheets("HYSYS").Range("C4").Text If filename <> "False" And simCase Is Nothing Then Set simCase = GetObject(filename, "HYSYS.SimulationCase") simCase.Visible = True End If End If ' define operation Set psegment = simCase.Flowsheet.Operations("pipeseg").ITEM("pipe-100") ' define pipesegment's parameters p_length = psegment.SegmentLengthValue p_elev = psegment.SegmentElevationChangeValue p_rough = psegment.RoughnessValue p_idiam = psegment.SegmentInnerDiamValue p_odiam = psegment.SegmentOuterDiamValue p_cond = psegment.PipeConductValue ' collecting data as variant For ITEM = 1 To 4 p_length(ITEM - 1) = Cells(6, ITEM + 2) p_elev(ITEM - 1) = Cells(7, ITEM + 2) p_odiam(ITEM - 1) = Cells(8, ITEM + 2) p_idiam(ITEM - 1) = Cells(9, ITEM + 2) p_rough(ITEM - 1) = Cells(10, ITEM + 2) p_cond(ITEM - 1) = Cells(11, ITEM + 2) Next ITEM ' inputting data to hysys psegment.SegmentLength.Values = p_length psegment.SegmentElevationChange.Values = p_elev psegment.Roughness.Values = p_rough psegment.SegmentInnerDiam.Values = p_idiam psegment.SegmentOuterDiam.Values = p_odiam psegment.PipeConduct.Values = p_cond ' FINISH End Sub As you can see, Hysys model is just as simple as following figure.
It has been so long time not to update this blog. And now I'm posting how to access stream component fraction, component molar flowrate and mass flowrate.
Here is the VBA example
Option Explicit Public hyApp As HYSYS.Application Public simCase As SimulationCase Public pStream As ProcessStream Public Sub StartHYSYS() Dim filename As String Dim ITEM As Integer Dim Compositions As Variant ' HYSYS CUSTOMATION THROUGH EXCEL TO ACCESS STREAM COMPONENTS ' LOADING HYSYS SIMULATION FILE Set hyApp = CreateObject("HYSYS.Application") hyApp.Visible = True Set simCase = hyApp.ActiveDocument If simCase Is Nothing Then filename = Worksheets("HYSYS").Range("C4").Text If filename <> "False" And simCase Is Nothing Then Set simCase = GetObject(filename, "HYSYS.SimulationCase") simCase.Visible = True End If End If ' READ DATA FROM EXCEL TO "STREAM 1" Set pStream = simCase.Flowsheet.MaterialStreams.ITEM("STREAM 1") Compositions = pStream.ComponentMolarFractionValue For ITEM = 0 To 11 'collect composition data as variant Compositions(ITEM) = Worksheets("HYSYS").Range("D" & ITEM + 7).Value Next ITEM ' apply composition data pStream.ComponentMolarFraction.Values = Compositions ' WRITE COMPOSITION DATA FROM HYSYS TO EXCEL FROM "STREAM 3" Set pStream = simCase.Flowsheet.MaterialStreams.ITEM("STREAM 3") For ITEM = 0 To 11 ' number of components are 12 ' component molar fraction Worksheets("HYSYS").Range("E" & ITEM + 7).Value = pStream.ComponentMolarFraction(ITEM) ' component mass flowrate Worksheets("HYSYS").Range("F" & ITEM + 7).Value = pStream.ComponentMassFlow(ITEM) ' component molar fraction Worksheets("HYSYS").Range("G" & ITEM + 7).Value = pStream.ComponentMolarFlow(ITEM) Next ITEM ' FINISH End Sub
Spreadsheet is look like this figure
Please note, hysys file source is located in Cell C4, refer to following code filename = Worksheets("HYSYS").Range("C4").Text
Hysys stream is configured as following figure