Bonjour tout le monde,
Je voulais savoir si c'est possible de lancer un script java (fichier.js) à partir d'un code VBA et si oui, comment le faire ??
D'avance, merci.
Version imprimable
Bonjour tout le monde,
Je voulais savoir si c'est possible de lancer un script java (fichier.js) à partir d'un code VBA et si oui, comment le faire ??
D'avance, merci.
Re,
pas de réponse pour moi :cry: ?
J'ai aussi voulu rectifier : je veux lancer un fichier JavaScript et non pas java (extension js)
Merci
Voici une question qui mérite réponse en effet !
Elle ne viendra pas de moi, mais je lirai attentivement la réponse !
Sinon, tu peux faire ta recherche en 2 étapes :
1/ comment lancer une commande en VBA (commande dos ou shell)
facile à trouver
2/ comment lancer un javascript en ligne de commande.
Bonjour,
il s'agit d'un script windows, et pas d'un script sur une page web ?
la commande Shell serait pas mal pour un code VB simple, par exemple ici mon script est sur mon disque D :
Le principal inconvénient de Shell est qu'il n'arrête pas le code VB pendant que le script s'exécute, donc s'il y a des instructions VB derrière qui devraient attendre la fin du script, c'est mort.Code:
1
2
3
4
5 Sub test() Shell "wscript D:\test.js" End Sub
Dans ce cas il faudrait alors remplacer Shell par autre chose, par exemple cette commande ShellPatient ci-dessous dont le code est à copier dans un module.
Dans ce cas tu aurais :
et dans un module, le code suivant (c'est pas la peine d'essayer de le comprendre, il suffit de le copier ;)) :Code:
1
2
3
4
5 Sub test() ShellPatient "wscript D:\test.js" End Sub
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 Private Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Long hStdInput As Long hStdOutput As Long hStdError As Long End Type Private Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessID As Long dwThreadID As Long End Type Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _ hHandle As Long, ByVal dwMilliseconds As Long) As Long Private Declare Function CreateProcessA Lib "kernel32" (ByVal _ lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _ lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _ ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _ ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _ lpStartupInfo As STARTUPINFO, lpProcessInformation As _ PROCESS_INFORMATION) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal _ hObject As Long) As Long Private Const NORMAL_PRIORITY_CLASS = &H20& Private Const INFINITE = -1& Private Declare Function OpenProcess Lib "kernel32" _ (ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, _ ByVal dwProcessID As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" _ (ByVal hProcess As Long, _ lpExitCode As Long) As Long Public Sub ShellPatient(vCommand As String) Dim proc As PROCESS_INFORMATION Dim start As STARTUPINFO Dim ReturnValue As Integer ReturnValue = CreateProcessA(0&, vCommand, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc) Do ReturnValue = WaitForSingleObject(proc.hProcess, 0) DoEvents DoEvents Loop Until ReturnValue <> 258 ReturnValue = CloseHandle(proc.hProcess) End Sub