kato
Junior Member level 3
I have this routine I did for extracting information from a CST project file and save it in an EXCEL workbook.
Most of it works from the EXCEL VBA Editor.
I was not able to get to work a number of things and I have a few questions:
1. Option 3 below : if the project file is already open, how do I get the path and the project file name (through VBA commands)
2. CST does not disappear when VBA executes this command: Set studio = Nothing
3. Are there any examples of how to get the fields/currents through VBA commands?
Thanks
Kato
Public Sub Save_CST_Results()
pname = Sheet1.Cells(5, 2).Value 'read the directory (path) of the project file from excel cell
fln = Sheet1.Cells(6, 2).Value 'read the project file name from excel cell
ifln = pname + "\" + fln
Dim studio As Object
Set studio = CreateObject("CSTStudio.Application") 'Starts CST MICROWAVE STUDIO®
Dim proj As Object
'Set proj = studio.NewMWS ' Option 1 - starts a new project
Set proj = studipenFile(ifln) ' Option 2 - opens an existing project file
' ???????????????? ' Option 3 - referes to an already open project file
Dim brick As Object ' Example of building a box
Set brick = proj.brick
brick.Reset
brick.Name "BrickOne"
brick.Xrange "0", "1"
brick.Yrange "0", "2"
brick.Zrange "0", "4"
brick.Create
Dim lib_ProjectDir As Object '
Set lib_ProjectDir = studio.GetProjectPath("Root") ' Extracts the path of the project file from an open project file
Shell "explorer " & Chr$(34) + lib_ProjectDir + Chr$(34), 1 ' DOES NOT WORK
Dim a11 As Object
Dim p11 As Object
Set a11 = proj.Result1D("a1(1)1(1)")
Set p11 = proj.Result1D("p1(1)1(1)")
Dim n As Integer
Dim frq As Double
n = a11.getN ' gets the number of points
For i = 1 To n
phase = Pi / 180# * p11.GetY(i - 1) ' gets the phase of S11
ampli = a11.GetY(i - 1) ' gets the amplitude of S11
freq = a11.getX(i - 1) ' gets the frequency vector
Sheet2.Cells(i + 1, 3).Value = freq
Sheet2.Cells(i + 1, 4).Value = ampli
Sheet2.Cells(i + 1, 5).Value = phase
Next i
proj.Quit ' close project file
Set studio = Nothing ' unload CST - DOES NOT WORK (CST is still there)End Sub
Most of it works from the EXCEL VBA Editor.
I was not able to get to work a number of things and I have a few questions:
1. Option 3 below : if the project file is already open, how do I get the path and the project file name (through VBA commands)
2. CST does not disappear when VBA executes this command: Set studio = Nothing
3. Are there any examples of how to get the fields/currents through VBA commands?
Thanks
Kato
Public Sub Save_CST_Results()
pname = Sheet1.Cells(5, 2).Value 'read the directory (path) of the project file from excel cell
fln = Sheet1.Cells(6, 2).Value 'read the project file name from excel cell
ifln = pname + "\" + fln
Dim studio As Object
Set studio = CreateObject("CSTStudio.Application") 'Starts CST MICROWAVE STUDIO®
Dim proj As Object
'Set proj = studio.NewMWS ' Option 1 - starts a new project
Set proj = studipenFile(ifln) ' Option 2 - opens an existing project file
' ???????????????? ' Option 3 - referes to an already open project file
Dim brick As Object ' Example of building a box
Set brick = proj.brick
brick.Reset
brick.Name "BrickOne"
brick.Xrange "0", "1"
brick.Yrange "0", "2"
brick.Zrange "0", "4"
brick.Create
Dim lib_ProjectDir As Object '
Set lib_ProjectDir = studio.GetProjectPath("Root") ' Extracts the path of the project file from an open project file
Shell "explorer " & Chr$(34) + lib_ProjectDir + Chr$(34), 1 ' DOES NOT WORK
Dim a11 As Object
Dim p11 As Object
Set a11 = proj.Result1D("a1(1)1(1)")
Set p11 = proj.Result1D("p1(1)1(1)")
Dim n As Integer
Dim frq As Double
n = a11.getN ' gets the number of points
For i = 1 To n
phase = Pi / 180# * p11.GetY(i - 1) ' gets the phase of S11
ampli = a11.GetY(i - 1) ' gets the amplitude of S11
freq = a11.getX(i - 1) ' gets the frequency vector
Sheet2.Cells(i + 1, 3).Value = freq
Sheet2.Cells(i + 1, 4).Value = ampli
Sheet2.Cells(i + 1, 5).Value = phase
Next i
proj.Quit ' close project file
Set studio = Nothing ' unload CST - DOES NOT WORK (CST is still there)End Sub