Home → Techniques and Tips → VBA Programming with @RISK → Which Version of @RISK Is Running?
Applies to: @RISK 4.x–7.x
Can I use Visual Basic code to determine which version of @RISK is running?
Here is a VBA function from our developers:
'Determine the version number of the running copy of @RISK.
'If @RISK 5.x–7.x is running, the exact version number is returned.
'If @RISK 4.x is running, the string '4.x' is returned.
'If no copy of @RISK 4.x–7.x is running, a blank string is returned.
Public Function GetAtRiskVersion() As String
Dim rc As String
Dim addinWorkbook As Workbook
Dim dummyValue As Long
'Make sure the Risk.xla add-in workbook is open. If it isn't, @RISK 4.x–7.x
'isn't loaded:
On Error Resume Next
Set addinWorkbook = Application.Workbooks("Risk.xla")
If Err <> 0 Then Set addinWorkbook = Nothing
On Error GoTo 0
If (addinWorkbook Is Nothing) Then rc = "": GoTo exitPoint
'If @RISK 5.0.1 or higher is loaded, the version number is easy to get. I
'get it here using a late-bound method (using Application.Run) simply because
'it is unlikely this code will have a reference to the @RISK 5.0 object
'library if it needs to call this routine! (In @RISK 5.0.0, itself, the call
'RiskGetAutomationObject didn't exist, so I must look especially for @RISK
'5.0.0 below.)
On Error Resume Next
rc = Application.Run("Risk.xla!RiskGetAutomationObject").ProductInformation.Version()
On Error GoTo 0
If rc <> "" Then GoTo exitPoint
'Now we need to distinguish between @RISK 5.0.0 and @RISK 4.x.
'In the former case the routine RiskGetInterfaceMode should exist. In the
'latter calling that routine will raise an error.
On Error Resume Next
dummyValue = Application.Run("Risk.xla!RiskGetInterfaceMode")
If (Err <> 0) Then rc = "4.x" Else rc = "5.0.0"
On Error GoTo 0
exitPoint:
On Error GoTo 0
GetAtRiskVersion = rc
End Function
Additional keywords: XDK
Last edited: 2015-08-31