Page 1 sur 1

Connaitre la version de word/Excel installé sur le poste

MessagePublié: 08 Oct 2007 à 15:28
par Stephane Maillard
Salut,

Code : Tout sélectionner
Sub Initialize
   Dim appWord As Variant
   Set appWord = CreateObject("word.application")
   If appWord.Version = "8.0" Then
      Msgbox "97"
   Elseif appWord.Version = "9.0" Then
      Msgbox "2000"
   Elseif appWord.Version = "10.0" Then
      Msgbox "XP"
   Elseif appWord.Version = "11.0" Then
      Msgbox "2003"
   Elseif appWord.Version = "12.0" Then ' A vérifier
      Msgbox "2007"
   End If
   Set appWord = Nothing
End Sub


Dans le createobject mettre excel.application et le code devrait être valable.

MessagePublié: 09 Oct 2007 à 10:30
par Michael DELIQUE
une version plus complète à partir du code de Stéphane

Code : Tout sélectionner
Function MSOfficeVersion As Variant
   'Déclaration variable
   Dim vrObject As Variant
   Dim lstValue List As String
   
   On Error Goto ErreurHandle
   
   On Error Resume Next
   Set  vrObject = CreateObject("word.application")
   On Error Goto ErreurHandle
   If vrObject Is Nothing  Then
      lstValue("WORD") = "ERROR"
   Else      
      Select Case  Cstr(vrObject.Version)
      Case "8","8.0"
         lstValue("WORD") = "97"
      Case "9","9.0"
         lstValue("WORD") = "2000"
      Case "10","10.0"
         lstValue("WORD") = "XP"
      Case "11","11.0"
         lstValue("WORD") = "2003"
      Case "12","12.0"
         lstValue("WORD") = "2007"
      End Select
   End If
   Set vrObject = Nothing
   
   On Error Resume Next
   Set  vrObject = CreateObject("excel.application")
   On Error Goto ErreurHandle
   If vrObject Is Nothing  Then
      lstValue("EXCEL") = "ERROR"
   Else      
      Select Case  Cstr(vrObject.Version)
      Case "8","8.0"
         lstValue("EXCEL") = "97"
      Case "9","9.0"
         lstValue("EXCEL") = "2000"
      Case "10","10.0"
         lstValue("EXCEL") = "XP"
      Case "11","11.0"
         lstValue("EXCEL") = "2003"
      Case "12","12.0"
         lstValue("EXCEL") = "2007" 'à Vérifier
      End Select
   End If
   Set vrObject = Nothing
   
   On Error Resume Next
   Set  vrObject = CreateObject("powerpoint.application")
   On Error Goto ErreurHandle
   If vrObject Is Nothing  Then
      lstValue("POWERPOINT") = "ERROR"
   Else      
      Select Case  Cstr(vrObject.Version)
      Case "8","8.0"
         lstValue("POWERPOINT") = "97"
      Case "9","9.0"
         lstValue("POWERPOINT") = "2000"
      Case "10","10.0"
         lstValue("POWERPOINT") = "XP"
      Case "11","11.0"
         lstValue("POWERPOINT") = "2003"
      Case "12","12.0"
         lstValue("POWERPOINT") = "2007" 'à Vérifier
      End Select
   End If
   Set vrObject = Nothing
   
   On Error Resume Next
   Set  vrObject = CreateObject("access.application")
   On Error Goto ErreurHandle
   If vrObject Is Nothing  Then
      lstValue("ACCESS") = "ERROR"
   Else
      Select Case  Cstr(vrObject.Version)
      Case "8","8.0"
         lstValue("ACCESS") = "97"
      Case "9","9.0"
         lstValue("ACCESS") = "2000"
      Case "10","10.0"
         lstValue("ACCESS") = "XP"
      Case "11","11.0"
         lstValue("ACCESS") = "2003"
      Case "12","12.0"
         lstValue("ACCESS") = "2007" 'à Vérifier
      End Select
   End If
   Set vrObject = Nothing
   
   MSOfficeVersion = lstValue
   Erase lstValue
   
   Exit Function
ErreurHandle:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Resume Next
   Set MSOfficeVersion = Nothing
   Exit Function
End Function

MessagePublié: 09 Oct 2007 à 15:58
par abertisch
Michael DELIQUE a écrit:ok merci corrigé


Je sais que c'est pas le bon endroit pour poster mais il y a un 2ème soucis.

Il plante sur la ligne d'Access:

Code : Tout sélectionner
Select Case  Cstr(vrObject.Version)


J'ai le message d'erreur ci-dessous:

un idée ?!?

MessagePublié: 09 Oct 2007 à 16:50
par Stephane Maillard
Salut,

Ca tourne chez moi avec un Lotus 7.0.2 et un Office 2003. Essai dans un access de faire un module et de mettre ce code msgbox application.version si cela ne fonctionne pas c'est que ta version ne le prend pas en compte. Dans Access faire F2 et rechercher Version dans la liste tu devrais trouvé Application => Version

MessagePublié: 10 Oct 2007 à 06:51
par abertisch
Bonjour,

Merci pour votre aide.

J'ai trouvé un forum qui parle de mon problème: http://www.developpez.net/forums/showth ... 785&page=3

Apparament la version d'access 2000 ne reconnait pas application.version :roll:

Mais j'ai trouvé ce bout de code sur le forum: http://www.developpez.net/forums/showth ... ost2293854

Peut être est-il mieux ?

MessagePublié: 10 Oct 2007 à 10:05
par Stephane Maillard
Salut,

Oui c'est pas mal, perso j'aime pas trop utiliser fso sauf si on ne peux pas faire autrement.

MessagePublié: 05 Oct 2010 à 13:40
par Dammy
je crois que vous avez pas pensez qu'il pouvait y avoir plusieurs version d'Office d'installer sur le Pc !!!

MessagePublié: 05 Oct 2010 à 15:38
par Michael DELIQUE
salut

en effet, ça n'a pas été prévus, le code va prendre la version référencé dans la base de registre (celle qui s'ouvre par défaut)

dans le cas d'une multi installation, hormis en allant trifouiller dans la base de registre je ne vois pas comment faire (sauf si tu connais les chemin d'installation des différentes versions)