Albadeath
Messages postés18Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention28 mars 2006
-
23 mars 2006 à 17:26
helpvb
Messages postés32Date d'inscriptionjeudi 7 septembre 2006StatutMembreDernière intervention22 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
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!!!
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 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>
Albadeath
Messages postés18Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention28 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.
helpvb
Messages postés32Date d'inscriptionjeudi 7 septembre 2006StatutMembreDernière intervention22 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!!)