1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
' Trouve la 1ère occurence seulement à partir d'une description.
' Il peut y en avoir plusieurs identique.
Function TryCOMAddInFind(Description As String, Out_COMAddIn As Office.COMAddIn) As Boolean
Dim COMAddIn As Office.COMAddIn
For Each COMAddIn In COMAddInCollection
If StrComp(Description, COMAddIn.Description, vbTextCompare) = 0 Then
TryCOMAddInFind = True
Set Out_COMAddIn = COMAddIn
Exit Function
End If
Next
End Function
' Idem qu'au dessus
Function COMAddInFind(Description As String) As Office.COMAddIn
Call TryCOMAddInFind(Description, COMAddInFind)
End Function
' Imprime toutes les descriptions et ProgID
Sub COMAddInCollectionPrint()
Dim COMAddIn As Office.COMAddIn
If COMAddInCollection.Count > 0 Then
For Each COMAddIn In COMAddInCollection
Debug.Print "-------------------------------------"
Debug.Print "Description : " & COMAddIn.Description
Debug.Print "Identifiant de programmation (ProgID) : " & COMAddIn.ProgID
Next
Debug.Print "-------------------------------------"
Debug.Print "il y a " & COMAddInCollection.Count & " compléments COM."
Debug.Print "-------------------------------------"
End If
End Sub
' Renvoie la collection des Complément COM de l'application entière
Function COMAddInCollection() As COMAddIns
Set COMAddInCollection = Excel.Application.COMAddIns
End Function
' Active un Complément COM
Sub COMAddInActivate(ProgID As String)
Excel.Application.COMAddIns.Item(ProgID).Connect = True
End Sub
' Désactive un Complément COM
Sub COMAddInDesactivate(ProgID As String)
Excel.Application.COMAddIns.Item(ProgID).Connect = False
End Sub
' Sous-routine à appeler pour le test.
Sub COMAddInDesactivateTest()
Dim COMAddInFound As Office.COMAddIn
' Regarde dans la fenêtre d'exécution dans l'IDE (Ctrl + G)
COMAddInCollectionPrint
Stop
' Description du COMAddIn en 1er paramètre.
If TryCOMAddInFind("", COMAddInFound) Then
If COMAddInFound.Connect = True Then
If MsgBox("Voulez-vous désactiver le complément '" & COMAddInFound.Description & "'", vbYesNoCancel) = vbYes Then
Call COMAddInDesactivate(COMAddInFound.ProgID)
End If
End If
If COMAddInFound.Connect = False Then
If MsgBox("Voulez-vous activer le complément '" & COMAddInFound.Description & "'", vbYesNoCancel) = vbYes Then
Call COMAddInActivate(COMAddInFound.ProgID)
End If
End If
Else
MsgBox "Aucun complément portant ce nom n'a été trouvé"
End If
Stop
' Remplace 'COMAddInCollection.Item(1)' ci-dessous par le ProgID
' qui correspond à ton complément COMAddIn trouvé dans la liste
' de la fenêtre d'éxécution.
If COMAddInCollection.Count >= 1 Then
If MsgBox("Le COMAddIn '" & COMAddInCollection.Item(1).Description & _
"' va être désactivé.", vbOKCancel) = vbYes Then
Call COMAddInDesactivate(COMAddInCollection.Item(1))
End If
End If
End Sub |
Partager