activer des références via vba
Bonjour à tous,
Je suis confronter à un nouveau problème:
j'ai un classeur Excel qui à besoin des références Word.
Le problème c'est qu'il peut etre ouvert sur Excel 2010 ou Excel 2003.
En fait c'est pour mon entreprise qui possède des ordinateur normaux avec des réseau dessus. Si on utilise Excel, c'est Excel 2010
Et des ordinateur dit TL (Terminaux Légers) qui ne possèdent pas de disque dur, cela va directemetn sur le réseau et tout s'ouvre avec 2003.
Du coup j'ai la référence Microsoft Word 14.0 sur Excel 2010 et Microsoft Word 9.0
Le problème c'est que lorsque je suis sur un TL, il n'arrive pas à activer la référence que je veux. Il dit qu'il ne la trouve pas... Elle est censée etre dans M:\program Files\Microsoft Office\Office\MSWORD9.OLE (c'est le chemin qui est marqué lorsque j'ai activé la référence) sauf que M:\program Files\Microsoft Office\Office\MSWORD9.OLE n'existe pas quand j'essaye de l'ouvrir. Ca doit être le disque dur de l'ordi qui n'existe pas... Y a -t-il un moyen de contourner le problème?
Autre problème si je n'active pas la référence Office 14.0 sur 2010 enregistre et ouvre via le TL, la référence Microsoft Office 9.0 n'apparait pas dans la liste des références...
en gros:
sous 2010: référence présente: uniquement microsoft word 14.0 chemin: C:\program Files\Microsoft Office\Office14\MSWORD.OL
sous TL: référence présente: uniquement microsoft word 9.0 chemin: M:\program Files\Microsoft Office\Office\MSWORD9.OLE
voici mon code:
Code:
1 2 3 4 5 6 7
| If Val(Application.Version) < 12 Then
'Si version d'Excel via TL
If Not ReferenceActive("Word") Then ActiverReference "MSWORD9.OLE" 'j'ai aussi essayé avec le chemin complet M:\program Files\Microsoft Office\Office\MSWORD9.OLE
Else
'Si version d'Excel égale à 2007 ou supérieure
If Not ReferenceActive("Word") Then ActiverReference "MSWORD.OL"
End If |
Code:
1 2 3
| Sub ActiverReference(NomComplet As String)
ThisWorkbook.VBProject.References.AddFromFile NomComplet
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Function ReferenceActive(Nom As String) As Boolean
Dim i As Integer
Dim NbreRef As Integer
NbreRef = ThisWorkbook.VBProject.References.Count
For i = 1 To NbreRef
If ThisWorkbook.VBProject.References(i).Name = Nom Then
ReferenceActive = True
Exit Function
End If
Next i
End Function |
Merci de votre aide