Collection de références sous excel 10 et 11

Albadeath Messages postés 18 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 28 mars 2006 - 23 mars 2006 à 17:26
helpvb Messages postés 32 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 22 avril 2009 - 7 sept. 2006 à 16:55
Salut,

en fait je dois réaliser une macro qui soit compatible avec les trois versions office suivantes : 9, 10 et 11.

Voici mon code pour ajouter les références manquantes:

'Déclarations pour les références

Dim oRef As Reference
Dim oRefs As References
Dim WordV9installed As Boolean
Dim ExcelV9installed As Boolean
Dim OfficeV9installed As Boolean
Dim WordXPinstalled As Boolean
Dim ExcelXPinstalled As Boolean

MsgBox Application.Version
Set oRefs = Application.VBE.ActiveVBProject.References

WordV9installed = False
ExcelV9installed = False
OfficeV9installed = False
WordXPinstalled = False
ExcelXPinstalled = False

For Each oRef In oRefs
MsgBox "Nom : " & oRef.Name & vbCrLf & "Description : " & oRef.Description
Next oRef

If (Application.Version = "9.0") Then
'Vérifications des références existantes
For Each oRef In oRefs
If (oRef.Name = "Word") Then
WordV9installed = True
End If
If (oRef.Name = "Excel") Then
ExcelV9installed = True
End If
If (oRef.Name = "Office") Then
OfficeV9installed = True
End If
Next oRef

'Installation des références manquantes versions 9
If (WordV9installed = False) Then
Set oRef = oRefs.AddFromFile("C:\Program Files\Microsoft Office\Office\MSWORD9.olb")
End If
If (ExcelV9installed = False) Then
Set oRef = oRefs.AddFromFile("C:\Program Files\Microsoft Office\Office\EXCEL9.olb")
End If
If (OfficeV9installed = False) Then
Set oRef = oRefs.AddFromFile("C:\Program Files\Microsoft Office\Office\MSO9.dll")
End If

Else 'Il s'agit de Microsoft Office 10.0 (Pc bureau chez compta)
For Each oRef In oRefs
If (oRef.Name = "Word") Then
WordXPinstalled = True
End If
If (oRef.Name = "Excel") Then
ExcelXPinstalled = True
End If
Next oRef

'Installation de la référence à word version XP
If (WordXPinstalled = False) Then
Set oRef = oRefs.AddFromFile("C:\Program Files\Microsoft Office\Office10\MSWORD.olb")
End If
If (ExcelXPinstalled = False) Then
'Pas sur du tout
Set oRef = oRefs.AddFromFile("C:\Program Files\Microsoft Office\Office10\EXCEL.exe")
End If
If (OfficeXPinstalled = False) Then
'Pas sur du tout
Set oRef = oRefs.AddFromFile("C:\Program Files\Fichiers communs\Microsoft Shared\Office10\MSO.DLL")
End If
End If

Mais la ligne Set oRefs = Application.VBE.ActiveVBProject.References ne fonctionne que pour la version 9. comment récupérer la liste des références pour les deux autres versions?
Je ne trouve rien sur le net!!!

4 réponses

rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
24 mars 2006 à 00:34
Salut Albadeath,

tu auras sans doute remarqué que la référence est d'ailleurs toujours la même en 9,10 et 11, cad la MVBAE 5.3.
Il semble de plus que, par exemple, le SP2 pour 2003 n'apporte pas de correctif, bizzare.
Enfin, bizarre, sauf si on se rappelle, qu'à plus ou moins long terme, Microsoft ne souhaite pas forcément que l'on continue à manipuler les AddIns (et les Appli aussi) en VBA, mais plutôt en .NET, à partir de VS.

Le plus curieux, c'est que je n'ai pas encore trouvé de mots-clé anglais qui me permettent de me rapprocher d'un report sur le sujet, chez http://www.microsoft.com.

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
Albadeath Messages postés 18 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 28 mars 2006
24 mars 2006 à 09:35
Salut, tu as tout à fait raison rvblog, c'est toujours MVBAE 5.3. Au sujet de mon problème, j'ai trouvé la solution donc tout va bien. EN fait le code reste exactement le même pour les nouvelles versions, c'est juste qu'il faut, sous excel, faire outils, macro, sécurité, sources fiables et cocher la case "faire confiance au projet VB". Sinon une erreur est générée.

Voila c'est tout. et merci rvblog.
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
26 mars 2006 à 22:15
Bien vu Albadeath!, dommage que je ne puisse pas valider ta réponse!


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
helpvb Messages postés 32 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 22 avril 2009
7 sept. 2006 à 16:55
Bonjour,
J'ai cru trouver la solution à mon problème en lisant ton article... Presque presque on n en est pas loin...

J ai développé des macros VBA et suis sous environnement Office 11
J ai besoin d assurer la compatibilité descendante dans la mesaure ou plusieurs utilisateurs (office 9, 10, 11) utilisent ces macros
Je me suis inspiré de ton code mais j ai un problème avec l instruction suivante:
    Set oRefs = ActiveWorkbook.VBProject.References
J obtiens une erreur d execution 1004 :  Erreur definie par l application ou par l'objet

Que dois je faire ???
Help et Merci d avance

En gros si je sauvegarde le document avec Office 11 et qu'ensuite un autre utilisateur l ouvre en Office 9 ou 10 ca plante; le problème étant que VBA pointe sur une reference manquante correspondant à Office 11!!)
0
Rejoignez-nous