Page 1 sur 1
[R] Version de Microsoft Office
Posté : sam. 13 mars 2010 21:29
par Davyly
Bonsoir,
Je suis confronté à un souci dans l'écriture d'un petit logiciel pour mon entreprise

Les "PC" ne sont pas tous équipés de la même version d'Office. On y trouve du 2000, du 2003 et bien sur du 2007.
Je chercher un moyen pour récupérer la version exacte d'Office installé sur le poste. Et si plusieurs versions d'office installées sur le poste, celle "déclarée" par défaut car mon programme utilise l'include <Word.au3>.
J'ai besoin de cette information car la suite du programme y compris le remplacement temporaire du normal.dot(m) est différent pour chaque version.
Connaissez-vous un moyen pour récupérer cette information

J'ai regardé sur le net, dans la base de registre mais rien de précis et d'efficace.
Je me tourne donc vers vous, si vous avez une idée ou une piste ...
Merci d'avance
Bonne soirée.
Re: [..] Version de Microsoft Office
Posté : sam. 13 mars 2010 21:45
par jl56
Bonjour
Je pensais que la base de registre aurait suffit mais si tu as testé
je te propose un udf CompInfo.au3 qui permet via le WMI d'avoir plein d'info sur le pc
je viens de le tester et pour la partie get software j'obtiens des infos sur ms office
par contre pour la version par défaut je ne sais pas
pour CompInfo.au3 recherche sur ce forum ou sur le forum anglais
il a également un exemple CompInfoExamples.au3
a+ jl56
Re: [..] Version de Microsoft Office
Posté : sam. 13 mars 2010 22:57
par Davyly
Bonsoir,
Merci pour ton aide.
J'ai regardé CompInfo.au3 mais rien de probant ...
Sinon j'ai réussi à trouver une piste dans la base de registre. J'ai donc écris le code suivant :
Code : Tout sélectionner
$appli = "Winword.exe"
MsgBox(0, "Microsoft Office", "La version de l'application """ & $appli & """ est : " & _office_version($appli))
Exit
Func _office_version($app)
$file = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\" & $app, "")
$file_version = StringSplit(FileGetVersion($file), ".")
Switch $file_version[1]
Case 7
$version = "97"
Case 8
$version = "98"
Case 9
$version = "2000"
Case 10
$version = "2002"
Case 11
$version = "2003"
Case 12
$version = "2007"
Case Else
$version = "0"
EndSwitch
Return $version
EndFunc
J'ai testé sur mon poste et cela semble fonctionner.
Pouvez-vous tester et me dire ce qu'il en est de votre coté ?
Merci et bonne soirée.
A+
Re: [..] Version de Microsoft Office
Posté : sam. 13 mars 2010 23:39
par Tlem
Fonctionne sous mon XP SP3 avec Office 2000.

Re: [..] Version de Microsoft Office
Posté : dim. 14 mars 2010 09:20
par jl56
je suis sous XP SP3
et ca fonctionne avec mon office 2003
A+ JL56
Re: [..] Version de Microsoft Office
Posté : dim. 14 mars 2010 12:18
par Davyly
Bonjour,
Merci à vous deux ...
Je viens de tester dans un environnement virtuel et comme pour vous, cela semble fonctionner. J'ai commencé par Office 2003 puis installé Office 2007 en parallèle. Et suivant la version de word déclaré par "défaut", j'ai la bonne version en retour. Puis reset de la "VM" et installation d'Office 2002 avec un résultat conforme.
Je considére
ce poste comme résolu car il correspond à mon besoin. J'ai malgré tout un sentiment d'insatisfaction car apparenté à du "bidouillage"
J'aurais certainement préféré une méthode plus directe, un appel d'un Obj/Com, une requête WMI ou autre ... Je me fais peut être du mal pour rien ...
En tout cas, n'hésiter pas à "poster" une autre méthode, je suis preneur.
Bonne journée et bon dimanche.
A+
Re: [R] Version de Microsoft Office
Posté : dim. 14 mars 2010 13:31
par Tlem
L'appel à une fonction WMI ne vous apporterait rien de plus puisque le WMI se base sur le système et donc pour certains éléments la base de registre.
Après, si vous trouvez que la lecture de la version de Word est du bidouillage, il est possible de faire autrement, mais ce sera sans nul doute plus compliqué.
La seconde solution serait de lire la clé :
De vérifier les versions présentes :
- Office 8.0
- Office 9.0
- Office 11.0
et de regarder dans quelle clé on trouve les sous clé Access, Excel, Word, etc ...
Il faudra aussi pouvoir faire la conversion de la version.

Office 9.0 = Office 2000