Autres OutLook VBA - Vérifier qu'un complément est actif

Dudu2

XLDnaute Barbatruc
Bonjour,

Une personne m'a posé cette question. Je n'y connais rien en VBA pour Outlook et je voudrais savoir si quelqu'un sur ce forum saurait coder quelque chose répondant à la question du titre.

Merci par avance.
 
Solution
Bonjour le fil, Dudu2

A tester depuis Excel pourquoi pas ;)
VB:
Sub OL_Addins()
Dim count As Integer
    Dim app As New Outlook.Application
    count = app.COMAddIns.Count
    For i = 1 To count
        MsgBox(app.COMAddIns.Item(0).Description)
    Next
End Sub
NB: cocher la référence à Outlook dans VBE au préalable

PS: Non testé encore, je suis plus au boulot (et ici j'ai point Outlook ;)

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Dudu2

A tester depuis Excel pourquoi pas ;)
VB:
Sub OL_Addins()
Dim count As Integer
    Dim app As New Outlook.Application
    count = app.COMAddIns.Count
    For i = 1 To count
        MsgBox(app.COMAddIns.Item(0).Description)
    Next
End Sub
NB: cocher la référence à Outlook dans VBE au préalable

PS: Non testé encore, je suis plus au boulot (et ici j'ai point Outlook ;)
 

Dudu2

XLDnaute Barbatruc
Ça fonctionne bien pour lister les compléments (à une petite correction d'indice près).
Hélas je ne vois pas de propriété associée à l'Item qui indique si le complément est actif ou non.

Edit: ou peut-être que si: App.COMAddIns.Item(i).Connect
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Edit: ou peut-être que si: App.COMAddIns.Item(i).Connect
C'est justement vers quoi mes recherches m'avaient menées ;)
VB:
Sub GetComAddins()
Dim addin As Office.COMAddIn
Dim i As Integer
For i = 1 To Application.COMAddIns.Count
  Set addin = Application.COMAddIns.Item(i)
  Debug.Print "ProgId = """ + addin.progID + """; Connected = " + CStr(addin.Connect)
Next i
End Sub
'code de : Andrei Smolin
 

Dudu2

XLDnaute Barbatruc
Ta 2ème version du code semble ne pas spécifiquement s'appliquer à Outlook et ne nécessite d'ailleurs pas la bibliothèque Outlook en Outil/References

1646944853712.png
 

Pièces jointes

  • Outlook AddIns Status.xlsm
    28.9 KB · Affichages: 0

Staple1600

XLDnaute Barbatruc
Bonsoir

C'est sans doute à cause de
Dim addin As Office.COMAddIn

En mixant avec le 1er, cela devrait être mieux
VB:
sub test()
Dim count As Integer
    Dim app As New Outlook.Application
    count = app.COMAddIns.Count
    For i = 1 To count
        Set addin = app.COMAddIns.Item(i)
  Debug.Print "ProgId = """ + addin.progID + """; Connected = " + CStr(addin.Connect)
Next i
Next
End Sub
NB: je te laisse tester (sur mon PC perso, pas d'Outlook, seulement sur celui du boulot)

PS: toujours depuis avec Excel avec la référence Outlook activée.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Dudu2

Testé ce matin sur Office 2019 [OK]
VB:
Sub test_Complement_OL()
Dim NomA$
NomA = "Microsoft Exchange Add-in"
check = Etat_Comp(NomA)
If check Then
MsgBox NomA & "chargé dans Outlook? : " & check, vbInformation
Else
MsgBox NomA & "non chargé dans Outlook", vbCritical
End If
End Sub

Function Etat_Comp(Name As String) As Boolean
Dim i%, test
For i = 1 To Application.COMAddIns.Count
If Application.COMAddIns(i).Description = Name Then
test = Application.COMAddIns(i).Connect
Exit For
End If
Next
Etat_Comp = test
End Function
Par contre, en simplifiant comme ceci la fonction (sans la boucle), cela plante
VB:
Function Etat_CompB(Name As String) As Boolean
Etat_CompB = Application.COMAddIns(Name).Connect
End Function
Donc apparemment, on ne peut pas de dispenser de la boucle
 

Dudu2

XLDnaute Barbatruc
Bonsoir @Staple1600,
En effet, je pense pas qu'on puisse remplacer l'indice d'Item pas l'une de propriétés de cet item.
Ce qui est étrange, c'est que chez moi:
For i = 1 To Application.COMAddIns.Count
ne donne que 3 items et dedans il n'y a pas "Microsoft Exchange Add-in"
Il n'y a que ceux listés en Post #7.
Il serait d'ailleurs intéressant que tu exécutes sous 2019 le fichier j'y ai placé pour voir le résultat.

De toutes façons cette solution sous Excel, bien que fonctionnant d'une manière ou d'une autre ne convient pas à la personne qui m'a sollicité. Il faut donc que je fasse la même chose sous Outlook VBA à l'ouverture d'Outlook. Donc quand j'aurai un peu de temps j'essaierai de lire des tutos et de trouver le moyen de le faire.
 

Staple1600

XLDnaute Barbatruc
Re

Le code fonctionne aussi dans Outlook (j'aurais du le préciser)
Par contre, ca devient coton (de ce que j'ai pu lire) si il s'agit d'activer un Addin
(Ca peut dépendre du profil Utilisateur, droit admin etc..)

J'ai pris cet addin: "Microsoft Exchange Add-in" au hasard dans la liste

Tu peux tester en adaptant un le nom d'un add-in de ta list.

Je vais essayer de retomber sur la littérature de Microsoft que j'ai consulté au boulot ce matin (chut, oui j'ai fait du VBA au lieu de bosser ;))
 

patricktoulon

XLDnaute Barbatruc
tu fait erreur @Dudu2
c'est normal que ca ne fonctionne pas
dans la boucle tu fait
If Application.COMAddIns(i).Description = Name Then

et après tu essaie def faire ceci
Etat_CompB = Application.COMAddIns(Name).Connect

il sempblerait que COMAddins soit un object collection
alors c'est name ou description la property ????;)
 

Discussions similaires

Statistiques des forums

Discussions
299 850
Messages
1 979 570
Membres
206 780
dernier inscrit
Edwige81