lier un CommandButton à un programme xxxxx.bat

P

Pupitror

Guest
Bonjour tout le monde,
je cherche mais je n'ai rien trouvé, alors voici mon probleme:

Comment lier un programme xyz.BAT (externe à Excel) à un bouton de controle (CommandButton) ?

Merci d'avance,
a+ et bon Week End!
Pupitror.
 

Creepy

XLDnaute Accro
Bonjour le Forum, Pupitror,

Le problème n'est pas tant de lancer le BAT que de surveiller la fin. En effet si tu lance le BAT avec une ligne de commande, la macro lance le ficheir et continue ...

Le problème est que si ton bat fait quelque chose nécéssaire à ta macro pour poursuivre (copie de fichiers par exemple), ta macro plante car le BAT n'a pas fini de travailler et la macro continue.

Mais heureusement je suis là ... :p

Alors :

1 - A mettre dans un module

Private Declare Function OpenProcess Lib 'kernel32' _
  (ByVal dwDesiredAccess
As Long, _
   
ByVal bInheritHandle As Long, _
   
ByVal dwProcessId As Long) As Long
   
Private Declare Function WaitForSingleObject Lib 'kernel32' _
  (ByVal hHandle
As Long, _
   
ByVal dwMilliseconds As Long) As Long
   
Private Declare Function CloseHandle Lib 'kernel32' _
  (ByVal hObject
As Long) As Long
Public FichierSave As Variant, taskId As Long

Sub CheckEndOfCompress()
Dim hProcess As Long
    hProcess = OpenProcess(SYNCHRONIZE, True, taskId)
   
Call WaitForSingleObject(hProcess, WAIT_INFINITE)
    CloseHandle hProcess
End Sub


2 - A mettre dans ton bouton :

dim Taskid as long
taskId = Shell('c:\\start.bat',vbnormalfocus)
Call CheckEndOfCompress

et voila

++

Creepy
 

Discussions similaires

Statistiques des forums

Discussions
312 972
Messages
2 094 055
Membres
105 930
dernier inscrit
Manoa