Erreur dans l'événement OnDisconnection Addin Outlook avec vb6
cs_angelot
Messages postés13Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention 4 juin 2007
-
9 mars 2006 à 11:24
cs_angelot
Messages postés13Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention 4 juin 2007
-
13 mars 2006 à 09:40
Bonjour,
J'utilise un add-in Outlook écrit en VB6 pour ajouter un bouton sur la barre de commande "standard" en utilisant le concepteur de complément de vb6 (pas l'implements IDTExtensibility2). Dans l'événement AddInInstance_OnDisconnection je veux supprimer l'objet bouton mais j'obtiens l'erreur '424' (un objet est requis). Comme indiqué dans l'article
http://support.microsoft.com/kb/230876/en-us (CommandBar control reference becomes invalid before com add-in on disconnection event fires) j'utilise la méthode FindControl dans l'événement AddInInstance_OnDisconnection pour obtenir une nouvelle référence vers le contrôle CommandBar mais maintenant j'ai l'erreur '91' (variable objet ou variable bloc with non définie) sur cette ligne . Quelqu'un peut-il m'aider s'il vous plait ?
Question subsidiaire : Faut-il mieux utiliser le concepteur de complément de vb6 ou l'implement (IDTExtensibility2) ?
Merci.
Extrait de mon code :
Option Explicit
Dim WithEvents oOutlook As outlook.Application
Dim WithEvents objLaunchButtonApplication As Office.CommandBarButton
Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As Object, custom() As Variant)
Dim i As Integer
On Error Resume Next
Set oOutlook = New outlook.Application
Set objLaunchButtonApplication = oOutlook.ActiveExplorer.CommandBars("standard").FindControl(Tag:="Register")
If Not objLaunchButtonApplication Is Nothing Then
objLaunchButtonApplication.Delete
End If
If Not objLaunchButtonApplication Is Nothing Then
Set objLaunchButtonApplication = Nothing
End If
' add parameters
' Type : indique le type de contrôle : msoControlButton (bouton),
' msoControlEdit (zone de texte), msoControlDropdown (zone de liste déroulante),
' msoControlComboBox (zone de liste modifiable) ou msoControlPopup (sous-menu).
' Par défaut : msoControlButton
' Id est un nombre entier représentant un contrôle prédéfini.
' Chaque bouton des barres d'outils prédifinis a un ID propre.
' Par défaut, c'est un bouton vide.
' Parameter, vous pouvez stocker dans ce paramètre les donnés que vous
' voulez (pour pouvoir les relire ensuite).
' Before, position du nouveau contrôle, il se placera alors devant le
' contrôle dont la position est le numéro indiqué.
' Par défaut : à la fin de le barre de commande
' Temporary doit être à True pour que le contrôle soit temporaire, dans ce
' cas il disparaît à la fermeture de l'application. Par défaut : False.
' cette option pose problème si on ouvre 2 fois Outlook, donc je l'ai désactivée
' Set objLaunchButtonApplication = oOutlook.ActiveExplorer.CommandBars("Standard").Controls.Add(msoControlButton, , , , True)
Set objLaunchButtonApplication = oOutlook.ActiveExplorer.CommandBars("Standard").Controls.Add(Type:=msoControlButton)
With objLaunchButtonApplication
' texte du bouton
.Caption = "Register"
' Style du bouton. Ce sont des constantes prédéfinies