# Visual Basic > Visual Basic FAQs >  [FAQ's: OD] How do I programmatically determine the version of an Office App?

## RobDog888

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 LibraryPrivate 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 = NothingEnd 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 = NothingEnd Sub

*Visual Basic 6.0 Late Binding Code Example:*

VB Code:
Option Explicit'Excel example being usedPrivate 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 SubMyError:    If Err.Number = 429 Then        Resume Next    Else        MsgBox Err.Number & " - " & Err.Description    End IfEnd Sub

----------


## RobDog888

*VB.NET 2003 Code Example:*
VB Code:
Option Explicit OnOption Strict On'Add a reference to your desired Office App -'MS [inset app name here] xx.0 Object Library'MS Word xx.0 Object Library'MS Word used in this code example'Add the imports statement for the .Interop class (PIA)Imports Microsoft.Office.Interop Public Class Form1     Inherits System.Windows.Forms.Form     "Windows Form Designer generated code"     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Dim oApp As Word.Application        Dim sVersion As String        oApp = DirectCast(CreateObject("Word.Application"), Word.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        MessageBox.Show("Word Build: " & oApp.Version & Environment.NewLine & "Word Version: " & sVersion,  _        "Office Version", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)        oApp.Quit(False)        oApp = Nothing    End Sub End Class

----------


## RobDog888

*C# 2003 Code Example:*


```
'Add a reference to your desired Office App -
'MS [inset app name here] xx.0 Object Library
'MS Word xx.0 Object Library
'MS Word used in this code example
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using Microsoft.Office.Interop;

namespace CSharp___Word_Version
{

    public class Form1 : System.Windows.Forms.Form
        {
        private System.Windows.Forms.Button button1;

        private System.ComponentModel.Container components = null;

        public Form1()
        {
            /// <summary>
            /// Required for Windows Form Designer support
            /// <summary>
            InitializeComponent();
        }
        "Windows Form Designer generated code"
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }
        private void button1_Click(object sender, System.EventArgs e)
        {
            string sVersion = string.Empty;
            Microsoft.Office.Interop.Word.Application oApp = new Microsoft.Office.Interop.Word.Application();
            oApp.Visible = false;
            switch (oApp.Version.ToString())
            {
                case "7.0":
                    sVersion = "95";
                    break;
                case "8.0":
                    sVersion = "97";
                    break;
                case "9.0":
                    sVersion = "2000";
                    break;
                case "10.0":
                    sVersion = "2002";
                    break;
                case "11.0":
                    sVersion = "2003";
                    break;
                case "12.0":
                    sVersion = "2007";
                    break;
                case "14.0":
                    sVersion = "2010";
                    break;
                case "15.0":
                    sVersion = "2013";
                    break;
                case "16.0":
                    sVersion = "2016";
                    break;
                default:
                    sVersion = "Undetermined!";
                    break;
            }
            MessageBox.Show("Word Build: " + oApp.Version + Environment.NewLine + "Word Version: " + sVersion,
            "Office Version",MessageBoxButtons.OK, MessageBoxIcon.Information);
            object a = (object) false;
            object b = (object) 1;
            oApp.Quit(ref a, ref b, ref a);
            oApp = null;
        }
    }
}
```

----------


## Mahmood Khaleel Pira

Thank you dear RobDog888 it is very helpful  :Smilie:

----------

