Soyez le premier à donner votre avis sur cette source.
Snippet vu 12 326 fois - Téléchargée 27 fois
Private Sub gestion_ref() On Error Resume Next 'Si la référence est déjà installée évite l'erreur qui suit Dim x As Object Dim word_object As Object 'Efface les references "Broken" For Each x In ThisWorkbook.VBProject.References If x.IsBroken = True Then ThisWorkbook.VBProject.References.Remove x Next x Set x = ThisWorkbook.VBProject.References Set word_object = CreateObject("word.application") 'On recherche la version de Word installée If word_object.Version = "8.0" Then 'Word 97 x.AddFromFile word_object.Path & "\MSWORD8.OLB" ElseIf word_object.Version = "9.0" Then 'Word 2000 x.AddFromFile word_object.Path & "\MSWORD9.OLB" ElseIf word_object.Version = "10.0" Then 'Word XP x.AddFromFile word_object.Path & "\MSWORD" & ".OLB" ElseIf word_object.Version = "11.0" Then 'Word 2003 x.AddFromFile word_object.Path & "\MSWORD" & ".OLB" End If Set x = Nothing Set word_object = Nothing End Sub
22 déc. 2006 à 22:37
merci encore.
thierrydkk
22 déc. 2006 à 03:00
La manipulation de VBE (VBProject) est possible depuis EXCEL 97, mais pas avant (EXCEL 95 et antérieures). Donc il ne devrait pas y avoir de problème.
Source : http://www.cpearson.com/excel/vbe.htm
22 déc. 2006 à 02:30
Je n'ai effectivement pas testé sur toutes les versions pour le VBProject.References. Il se peut que celà bug (97?). Sinon, ne pas oublier de cocher l'option "Faire confiance au projet visual basic" dans Outils -> Macro -> Sécurité -> deuxième onglet (ou quelquechose de similaire suivant la version, ici Excel 2003)
21 déc. 2006 à 11:50
Pas grand chose à dire si ce n'est ceci :
As tu vérifié que "Set x = ThisWorkbook.VBProject.References" était accessible depuis toutes les versions d'Excel ? C'est possible ... et même souhaitable. N'ayant pas pu faire le test, je demande ...
Ce code ne fonctionnera que si Word et Excel ont été installés dans le même répertoire (C:\Program Files ... ). Dans 99% des cas, c'est fait ainsi. Pas de problème en soit.
Trim("8") = "8"
Trim("9") = "9"
Donc pas besoin d'utiliser Trim()
Enfin, tu as écrit une procédure (Sub), pas une fonction (Function). Aucun paramètre n'est retourné.
Bon p'tit prog dans l'ensemble. Surement utile.
21 déc. 2006 à 11:16
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.