-
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
-
Aug 23rd, 2006, 04:07 PM
#2
Re: [FAQ's: OD] How do I programmatically determine the version of an Office App?
VB.NET 2003 Code Example:
VB Code:
Option Explicit On Option 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
Last edited by RobDog888; Jul 3rd, 2017 at 10:33 AM.
Reason: Fix code tags from recent upgrade
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
-
Aug 23rd, 2006, 04:07 PM
#3
Re: [FAQ's: OD] How do I programmatically determine the version of an Office App?
C# 2003 Code Example:
Code:
'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;
}
}
}
Last edited by RobDog888; Jul 3rd, 2017 at 10:35 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
-
Jul 20th, 2017, 07:54 AM
#4
Lively Member
Re: [FAQ's: OD] How do I programmatically determine the version of an Office App?
Thank you dear RobDog888 it is very helpful
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
|