|
-
Oct 25th, 2005, 08:48 PM
#1
[FAQ's: OD] How do I programmatically determine the version of an Office App?
When writting programs that need to support multiple versions of an Office app you need a way to evaluate the installed app. There are only two methods to obtain the version/build information for all Office apps. Once you have the version info you can branch out and perform vertain functions that are only supported in that version or set a flag variable to use throughout your app to handle executing certain lines of code or not.
1.) The code in Command1_Click procedure is only for Outlook and InfoPath applications. In these two apps the .Version information contains the Major, Minor, Revision and Build (14.0.0.6359).
2.) The code in command2_Click procedure covers the rest of the Office applications. The .Version information only contains the Major and Minor numbers (14.0).
Visual Basic 6.0 Early Binding Code Example:
VB Code:
Option Explicit 'Add a reference to your desired office app 'MS [i][inset app name here][/i] xx.0 Object Library Private Sub Command1_Click() 'Format for Outlook and InfoPath (Outlook shown) 'Requires trimming of the build info Dim oApp As Outlook.Application Dim sBuild As String Dim sVersion As String Set oApp = New Outlook.Application 'Get major build only to make it easier to determine version sBuild = Left$(oApp.Version, InStr(1, oApp.Version, ".") + 1) Select Case sBuild Case "7.0" sVersion = "97" 'Outlook Case "8.0" sVersion = "98" 'Outlook Case "9.0" sVersion = "2000" 'Outlook Case "10.0" sVersion = "2002" 'Outlook Case "11.0" sVersion = "2003" 'Outlook & InfoPath Case "12.0" sVersion = "2007" 'Outlook & InfoPath Case "14.0" sVersion = "2010" 'Outlook Case "15.0" sVersion = "2013" 'Outlook Case "16.0" sVersion = "2016" 'Outlook Case Else sVersion = "Undetermined!" End Select MsgBox "Outlook Build: " & oApp.Version & vbNewLine & "Outlook Version: " & sVersion, _ vbOKOnly + vbInformation, "Office Version" oApp.Quit Set oApp = Nothing End Sub Private Sub Command2_Click() 'Format for most other Office Apps 'MS Access used for this example Dim oApp As Access.Application Dim sVersion As String Set oApp = New Access.Application Select Case oApp.Version Case "7.0" sVersion = "95" Case "8.0" sVersion = "97" Case "9.0" sVersion = "2000" Case "10.0" sVersion = "2002" Case "11.0" sVersion = "2003" Case "12.0" sVersion = "2007" Case "14.0" sVersion = "2010" Case "15.0" sVersion = "2013" Case "16.0" sVersion = "2016" Case else sVersion = "Undetermined!" End Select MsgBox "Outlook Build: " & oApp.Version & vbNewLine & "Outlook Version: " & sVersion, _ vbOKOnly + vbInformation, "Office Version" oApp.Quit Set oApp = Nothing End Sub
Visual Basic 6.0 Late Binding Code Example:
VB Code:
Option Explicit 'Excel example being used Private Sub Form_Load() On Error GoTo MyError Dim oApp As Object Dim sVersion As String Set oApp = GetObject(, "Excel.Application") If TypeName(oApp) = "Nothing" Then Set oApp = CreateObject("Excel.Application") End If Select Case Left$(oApp.Version, InStr(1, oApp.Version, ".") + 1) Case "8.0" sVersion = "97" Case "9.0" sVersion = "2000" Case "10.0" sVersion = "2002" Case "11.0" sVersion = "2003" Case "12.0" sVersion = "2007" Case "14.0" sVersion = "2010" Case "15.0" sVersion = "2013" Case "16.0" sVersion = "2016" Case else sVersion = "Undetermined!" End Select MsgBox "Excel version: " & sVersion Exit Sub MyError: If Err.Number = 429 Then Resume Next Else MsgBox Err.Number & " - " & Err.Description End If End Sub
Last edited by RobDog888; Jul 3rd, 2017 at 10:36 AM.
VB/Office Guru™ (AKA: Gangsta Yoda™ ®)
I dont answer coding questions via PM. Please post a thread in the appropriate forum. 
Microsoft MVP 2006-2011
Office Development FAQ (C#, VB.NET, VB 6, VBA)
Senior Jedi Software Engineer MCP (VB 6 & .NET), BSEE, CET
If a post has helped you then Please Rate it! 
• Reps & Rating Posts • VS.NET on Vista • Multiple .NET Framework Versions • Office Primary Interop Assemblies • VB/Office Guru™ Word SpellChecker™.NET • VB/Office Guru™ Word SpellChecker™ VB6 • VB.NET Attributes Ex. • Outlook Global Address List • API Viewer utility • .NET API Viewer Utility •
System: Intel i7 6850K, Geforce GTX1060, Samsung M.2 1 TB & SATA 500 GB, 32 GBs DDR4 3300 Quad Channel RAM, 2 Viewsonic 24" LCDs, Windows 10, Office 2016, VS 2019, VB6 SP6 
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|