Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tester existance de word ou Excel

14 réponses
Avatar
Pascal
bonjour,

Quel est d'après vous le meilleur moyen de tester l'existence de WORD et/OU
EXCEL sur le pc
je fais ceci pour word, est-ce correct? quelque soit la version installée?
merci d'avance
Pascal


On Error Resume Next
' récupération de l'erreur
Set wd = GetObject(, "Word.Application")

If Err.Number <> 0 Then
'Word existe
Set wd = CreateObject("Word.Application")
End If

Err.Clear

4 réponses

1 2
Avatar
Jacques93
Bonjour Jean-Marc,
Jean-marc a écrit :
Gloops wrote:
Bonjour,

Sur le principe très bien, mais une chose m'intrigue : il me semble
que je n'obtiens quelque chose dans l'objet qu'une fois que la
session Word est ouverte, ce qui n'est pas instantané.



C'est exact.



[...]

Arghh !!! doublé de 20 seconde :-D

--
Cordialement,

Jacques.
Avatar
François Picalausa
On Nov 2, 1:52 pm, Jacques93 wrote:
Oui, car je pense qu'une des première chose que fait CreateObject est de
vérifier la présence du la clé "Word.Application" et de sa sous-cl é
CLSID dans HKCR, ce qui est pratiquement instantanée.



Hello,

C'est le cas. En fait, CreateObject effectue les opérations suivantes
(cf http://support.microsoft.com/kb/122288):
CLSIDFromProgID : Récupère le CLSID à partir du ProgID renseigné
CoCreateInstance(clsid ...) : Demande un pointeur vers IUnknown de
l'objet de question
punk->QueryInterface(IID_IDispatch ...) : Demande un pointeur vers
IDispatch qui est l'interface permettant le late binding
punk->Release : Détruit la référence au IUnknown

<OT>
Il est à remarquer que ça signifie qu'on donc peut aller légèrement
plus vite
- en renvoyant l'instance créée lors du test d'existence (puisqu'elle
sera probablement utilisée par la suite dans le programme), ce qui
évite de Release l'IDispatch pour ensuite le recréer
- en appelant directement CLSIDFromProgID et CoCreateInstance, et en
oubliant le passage par QueryInterface.
</OT>

François
Avatar
Jean-marc
Jacques93 wrote:
Bonjour Jean-Marc,
Jean-marc a écrit :
Gloops wrote:
Bonjour,

Sur le principe très bien, mais une chose m'intrigue : il me semble
que je n'obtiens quelque chose dans l'objet qu'une fois que la
session Word est ouverte, ce qui n'est pas instantané.



C'est exact.



[...]

Arghh !!! doublé de 20 seconde :-D



:-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Bonjour François Picalausa,
François Picalausa a écrit :
On Nov 2, 1:52 pm, Jacques93 wrote:
Oui, car je pense qu'une des première chose que fait CreateObject est de
vérifier la présence du la clé "Word.Application" et de sa sous-clé
CLSID dans HKCR, ce qui est pratiquement instantanée.



Hello,

C'est le cas. En fait, CreateObject effectue les opérations suivantes
(cf http://support.microsoft.com/kb/122288):
CLSIDFromProgID : Récupère le CLSID à partir du ProgID renseigné
CoCreateInstance(clsid ...) : Demande un pointeur vers IUnknown de
l'objet de question
punk->QueryInterface(IID_IDispatch ...) : Demande un pointeur vers
IDispatch qui est l'interface permettant le late binding
punk->Release : Détruit la référence au IUnknown

<OT>
Il est à remarquer que ça signifie qu'on donc peut aller légèrement
plus vite
- en renvoyant l'instance créée lors du test d'existence (puisqu'elle
sera probablement utilisée par la suite dans le programme), ce qui
évite de Release l'IDispatch pour ensuite le recréer
- en appelant directement CLSIDFromProgID et CoCreateInstance, et en
oubliant le passage par QueryInterface.
</OT>

François




Merci de ces précisions :-)

--
Cordialement,

Jacques.
1 2