Erreur dans l'événement OnDisconnection Addin Outlook avec vb6

cs_angelot Messages postés 13 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 4 juin 2007 - 9 mars 2006 à 11:24
cs_angelot Messages postés 13 Date d'inscription mercredi 1 octobre 2003 Statut Membre Derniè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


' msoButtonAutomatic, msoButtonIcon, msoButtonCaption, msoButtonIconAndCaption,


' msoButtonIconAndCaptionBelow, msoButtonIconAndWrapCaption,


' msoButtonIconAndWrapCaptionBelow, ou msoButtonWrapCaption.


.Style = msoButtonCaption


' Les éléments suivants sont facultatifs, mais recommandés.


' La propriété Tag est facultative, mais recommandée.


' Elle vous permet de prendre le contrôle rapidement et d'aider la société


' à réseaux multiples à en garder une trace lorsque plusieurs


' fenêtres d'application sont visibles. Cette propriété est requise


' par certaines applications Office et doit être fournie.


.Tag = "Register"


' La propriété OnAction est facultative, mais recommandée.


' Elle doit être définie sur le ProgID du complément pour que,


' si le complément n'est pas chargé lorsqu'un utilisateur appuie sur le


' bouton, la société à réseaux multiples le charge automatiquement,


' puis déclenche l'évènement Click pour le complément à gérer.


.OnAction = "!<" & AddInInst.ProgId & ">"


.Visible = True


End With


End Sub


Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, _


custom() As Variant)


' On Error Resume Next


On Error GoTo 0


If Not objLaunchButtonApplication Is Nothing Then


Set objLaunchButtonApplication = oOutlook.ActiveExplorer.CommandBars("standard").FindControl(Tag:="Register")


objLaunchButtonApplication.Delete


Set objLaunchButtonApplication = Nothing


End If


If Not oOutlook Is Nothing Then


Set oOutlook = Nothing


End If


End Sub

1 réponse

cs_angelot Messages postés 13 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 4 juin 2007
13 mars 2006 à 09:40
Personne n'a une idée ou un soupçon de piste ?
0
Rejoignez-nous