vérifier qu'une application est ouverte

fredl

XLDnaute Impliqué
Bonjour à tous,
dans une application, quand un utilisateur clique dans une case excel qui contient un nom de fichier (tout type de fichier possible :pdf,xls,doc,txtetc...), le fichier en question est ouvert par l'instruction :
ActiveWorkbook.FollowHyperlink Address:=VRepertoireFichier & "\" & Range("BnomFichier").Value, NewWindow:=True

Tout se passe bien si l'application concernée pour l'ouvrir n'est pas déjà ouverte.
En effet, si cette derniere est déjà ouverte, le fichier est ouvert, mais une erreur apparait et semble liée à l'instruction :
"NewWindow:=True"

Apres essai avec l'appli ouverte et l'instruction "NewWindow:=false", plus d'erreur.

Quelle type d'instruction puis je, selon vous, ajouter en amont pour vérifier si l'appli en question est ouverte ou non afin d'adapter l'instruction avec true ou false?

Merci d'avance pour votre aide.
Cordialement
Frédéric
 

Staple1600

XLDnaute Barbatruc
Re : vérifier qu'une application est ouverte

Bonjour à tous

Voici une possibilité en utilisant un objet WMI
(ici le test regardes si excel est ouvert ;) )
A copier dans un module standard, puis lancer la macro test

(PS: test OK sous Windows + Excel 2003)

VB:
Sub test()
'Script VBS adapté à VBA
Dim strComputer, strProcess
strComputer = "."
strProcess = "excel.exe"
MsgBox UCase(strProcess) & IIf(isProcessRunning(strComputer, strProcess), _
    " est déjà en cours d'éxécution", " inactif"), _
    vbCritical, "Informations"
End Sub


VB:
Function isProcessRunning(ByVal strComputer, ByVal strProcessName)
    Dim objWMIService, strWMIQuery
    strWMIQuery = "Select * from Win32_Process where name like '" & strProcessName & "'"
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" _
            & strComputer & "\root\cimv2")
    If objWMIService.ExecQuery(strWMIQuery).Count > 0 Then
        isProcessRunning = True
    Else
        isProcessRunning = False
    End If
End Function
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof