AddIn ou supplément COM pour Word 2000

cs_Xavier Messages postés 12 Date d'inscription mercredi 10 mai 2000 Statut Membre Dernière intervention 29 avril 2005 - 10 févr. 2003 à 10:49
cs_Xavier Messages postés 12 Date d'inscription mercredi 10 mai 2000 Statut Membre Dernière intervention 29 avril 2005 - 5 mai 2005 à 00:27
Bonjour,

je cherche à écrire un addin pour word2000. Je me suis
inspiré des différents articles publiés sur MSDN pour
écrire un code efficace. Cependant, en dépit des
déclarations (librairie Office version 9.0, Word version
9.0, AddIn...) je rencontre un "petit" problème que je
soumets à votre sagacité.

Voici tout d'abord le listing du code incriminé :

Option Explicit

Dim oXL As Object
Dim MyAddin As Object

Dim WithEvents MyButton As Office.CommandBarButton
Dim WithEvents MyControl As Office.CommandBarComboBox

Private Sub AddinInstance_OnConnection(ByVal
Application As Object, _
ByVal ConnectMode As
AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As Object, custom() As Variant)
On Error Resume Next
' Initialise l'objet MyAddin
' Objectif : récupération de l'ID de l'instance pour
la procédure
' AddinInstance_OnStartupComplete
Set MyAddin = AddInInst
End Sub

Private Sub AddinInstance_OnDisconnection(ByVal
RemoveMode As _
AddInDesignerObjects.ext_DisconnectMode, custom() As
Variant)
On Error Resume Next
' Déconnexion de l'Add-In


MyControl.Delete
MyButton.Delete
Set MyButton = Nothing
Set MyControl = Nothing
Set mybar = Nothing
Set oXL = Nothing
Set MyAddin = Nothing
End Sub

Private Sub AddinInstance_OnStartupComplete(custom() As
Variant)
On Error Resume Next

' Création des objets propres à l'Addin
' Après le chargement complet de l'application hôte

' Déclaration des variables & objets
' Booléen indicateur de présence de la barre de commande
Dim BarreTrouve As Boolean
' Objets barre
Dim cbar As Object
Dim mybar As Object
' Adresse dynamique de l'instance de l'addin
Dim aAddin As String

'Contrôle de type bouton
Dim MyButton As Object
'Contrôle de type ComboBox
Dim MyControl As Object

aAddin = MyAddin.ProgId
aAddin = "!<" & aAddin & ">"



' Utilise la méthode last binding
Set oXL = GetObject(, "Word.Application")


'Place l 'indicateur de test de présence à faux
BarreTrouve = False

' Cherche s'il existe déjà une barre d'outil nommée
MaBarre

For Each cbar In oXL.CommandBars
If cbar.Name = "MaBarre" Then
' Il existe une barre de commande nommée
MaBarre
BarreTrouve = True
End If
Next

If BarreTrouve Then
GoTo Apres_SetBarre
End If

Set mybar = oXL.CommandBars _
.Add(Name:="MaBarre", Position:=msoBarTop, _
Temporary:=True)
mybar.Visible = True

Set MyButton = oXL.CommandBars
("MaBarre").Controls.Add(Type:=msoControlButton,
Temporary:=True)

With MyButton
.Caption = "ActionMyButton"
.Style = msoButtonIconAndCaption
' Initialise Info bulle Déboggage
.ToolTipText = "ActionMyButton " & aAddin
.Visible = True
.OnAction = aAddin
End With

Set MyControl = oXL.CommandBars
("MaBarre").Controls.Add(Type:=msoControlComboBox,
Temporary:=True)


With MyControl
.AddItem Text:="Texte 1", Index:=1
.AddItem Text:="Texte 2", Index:=2
.AddItem Text:="Texte 3", Index:=3
.AddItem Text:="Texte 4", Index:=4
.AddItem Text:="Texte 5", Index:=5
.AddItem Text:="Texte 6", Index:=6
.AddItem Text:="Texte 7", Index:=7
.AddItem Text:="Texte 8", Index:=8
' Initialise Infobulle Déboggage
.ToolTipText = "MonComboBox " & aAddin
.DropDownLines = 5
.DropDownWidth = -1
.ListHeaderCount = 0
.Width = 300
.Visible = True
.OnAction = aAddin
End With

Apres_SetBarre:
' Destruction de l'objet cbar devenu inutile
Set cbar = Nothing

End Sub

Private Sub MyButton_Click(ByVal Ctrl As
Office.CommandBarButton, CancelDefault As Boolean)

MsgBox ("Click sur MyButton")

End Sub

Private Sub MyControl_Change(ByVal Ctrl As
Office.CommandBarComboBox)
Dim ValRenvoye As Variant
Dim StrRenvoye As String
MsgBox ("Selection dans MaComboBox modifiée")
ValRenvoye = oXL.mybar.MyControl.Index
StrRenvoye = oXL.mybar.MyControl.Value
MsgBox ("-> " & Str(ValRenvoye) & " : " & StrRenvoye)

End Sub

Le problème rencontré est le suivant:
Un click sur le MyButton ne déclenche aucune action.
Une sélection dans MyControl retourne invariablement le
message d'erreur suivant : Macro non trouvée ou paramètres
de sécurité trop élevés.

Cependant :

- l'Addin est à priori correctement enregistré dans la
base de registre;
- les infobulles de déboggage renvoie un ID de type
MonAddIn.Connect;
- l'Addin est visible au travers de l'item supplément COM
du menu Outils;
- les paramètres de sécurité sont configurés de façon
minimale : exécution de tous les codes macros.

2 réponses

flamy51 Messages postés 1 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 23 février 2005
23 févr. 2005 à 16:53
Bonjour Xavier

J'aurai voulu savoir si vous aviez trouvé une solution à votre problème, et si oui, quelle solution.
En effet, j'ai le même type de souci.
J'ai un addin VB.net qui fonctionne très bien sous Word XP et 2003.
Par contre, sous Word 2000, certains boutons de l'addin, suite à une opération de fusion de données dans un modèle effectuée par l'addin, ne répondent plus du tout aux événement.
Mon opération de fusion apparemment perd les événement de l'addin sous Word 2000, je ne comprends pas pourquoi.

Merci d'avance pour votre réponse.
0
cs_Xavier Messages postés 12 Date d'inscription mercredi 10 mai 2000 Statut Membre Dernière intervention 29 avril 2005
5 mai 2005 à 00:27
Bonjour Flamy,

Non désolé, je n'ai toujours pas trouvé de solution... mais il est vrai que j'ai également eu d'autres chats à fouetter.
Mais promis, si je trouve une solution, je la poste immédiatement.
0
Rejoignez-nous