Obtenir une instance d'Outlook et s'y connecter
Cette rubrique montre comment obtenir un objet Application qui représente une instance active d’Outlook, s’il y en a une qui s’exécute sur l’ordinateur local, ou créer une nouvelle instance d’Outlook, se connecter au profil par défaut et retourner cette instance d’Outlook.
Helmut Obertanner a fourni les exemples de code suivants. Helmut Obertanner, élu MVP Microsoft Professionel, possède une expertise des outils de développement Microsoft Visual Studio et Microsoft Office Outlook.
Les exemples de code managé suivants sont écrits dans C# et Visual Basic. Pour exécuter un exemple de code managé .NET Framework qui doit appeler un modèle COM (Component Object Model), vous devez utiliser un assembly d’interopérabilité qui définit et mappe des interfaces managées avec des objets COM dans la bibliothèque de types de modèle objet.
Pour Outlook, vous pouvez utiliser Visual Studio et l’assembly d’interopérabilité de base (PIA) d’Outlook. Avant d’exécuter des exemples de code managé pour Outlook 2013, assurez-vous que vous avez installé le PIA d’Outlook 2013 et que vous avez ajouté une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 dans Visual Studio.
Vous devez utiliser les exemples de code suivants dans la ThisAddIn
classe d’un complément Outlook (à l’aide des outils de développement Office pour Visual Studio). L'objet Application dans le code doit être un objet Application Outlook approuvé fourni par ThisAddIn.Globals
. Pour plus d’informations sur l’utilisation de l’assembly PIA Outlook pour développer des solutions Outlook managées, consultez bienvenue dans la référence de l’assembly d’interopérabilité principal Outlook sur MSDN.
Les exemples de code suivants contiennent la GetApplicationObject
méthode de la Sample
classe, implémentée dans le cadre d’un projet de complément Outlook. Chaque projet ajoute une référence à l'assembly PIA d'Outlook en fonction de l'espace de noms Microsoft.Office.Interop.Outlook.
La GetApplicationObject
méthode utilise des classes dans la bibliothèque de classes .NET Framework pour vérifier et obtenir tout processus Outlook en cours d’exécution sur l’ordinateur local. Il utilise d’abord la méthode GetProcessesByName de la classe Process dans l’espace de noms System.Diagnostics pour obtenir un tableau de composants de processus sur l’ordinateur local qui partagent le nom de processus « OUTLOOK ».
Pour vérifier si le tableau contient au moins un processus Outlook, GetApplicationObject
utilise une requête LINQ (Microsoft Language Integrated Query). La classe Enumerable dans l’espace de noms System.Linq fournit un ensemble de méthodes, y compris la méthode Count, qui implémentent l’interface générique IEnumerable(T).
Étant donné que la classe Array implémente l’interface IEnumerable(T),GetApplicationObject
peut appliquer la méthode Count au tableau retourné par GetProcessesByName pour voir si un processus Outlook est en cours d’exécution. Si tel est le cas, GetApplicationObject
utilise la méthode GetActiveObject de la classe Marshal dans l’espace de noms System.Runtime.InteropServices pour obtenir cette instance d’Outlook, et convertit cet objet en objet Application Outlook.
Si Outlook n'est pas en cours d'exécution sur l'ordinateur local, GetApplicationObject
crée une instance d'Outlook, utilise la méthode Logon de l'objet NameSpace pour se connecter au profil par défaut, puis renvoie cette nouvelle instance d'Outlook.
L'exemple de code suivant est écrit en C#.
using System;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace OutlookAddIn1
{
class Sample
{
Outlook.Application GetApplicationObject()
{
Outlook.Application application = null;
// Check if there is an Outlook process running.
if (Process.GetProcessesByName("OUTLOOK").Count() > 0)
{
// If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
}
else
{
// If not, create a new instance of Outlook and log on to the default profile.
application = new Outlook.Application();
Outlook.NameSpace nameSpace = application.GetNamespace("MAPI");
nameSpace.Logon("", "", Missing.Value, Missing.Value);
nameSpace = null;
}
// Return the Outlook Application object.
return application;
}
}
}
L'exemple de code suivant est écrit en Visual Basic.
Imports System.Diagnostics
Imports System.Linq
Imports System.Reflection
Imports System.Runtime.InteropServices
Imports Outlook = Microsoft.Office.Interop.Outlook
Namespace OutlookAddIn2
Class Sample
Function GetApplicationObject() As Outlook.Application
Dim application As Outlook.Application
Check if there is an Outlook process running.
If Process.GetProcessesByName("OUTLOOK").Count() > 0 Then
' If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
application = DirectCast(Marshal.GetActiveObject("Outlook.Application"), Outlook.Application)
Else
' If not, create a new instance of Outlook and log on to the default profile.
application = New Outlook.Application()
Dim ns As Outlook.NameSpace = application.GetNamespace("MAPI")
ns.Logon("", "", Missing.Value, Missing.Value)
ns = Nothing
End If
' Return the Outlook Application object.
Return application
End Function
End Class
End Namespace
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.