J'essaye d'écrire un code (en ACCESS) qui crée un fichier .bat et ensuite l'exécute. Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim vPath As String
Dim vFile As String
Dim fNum As Integer
Dim batFileHandle As Integer
Dim RetVal As Integer
vPath = Application.CurrentProject.Path
vFile = Fichier
fNum = FreeFile()
batFileHandle = FreeFile()
 
Open vPath & "\FtpComm.txt" For Output As fNum
Connexion (fNum)
Print #fNum, "put " & vFile & " Temp.mdb" 'upload local filename to server file  : LocalFile [RemoteFile] LocalFile
Deconnexion (fNum)
Close fNum
Open vPath & "\doFtp.bat" For Output As batFileHandle
Print #batFileHandle, "ftp -s:FtpComm.txt >output.txt" 'execute le fichier batch et écrit les output dans le fichier output
Close batFileHandle
RetVal = ExecCmd(vPath & "\doFtp.bat")
Et le code de la fonction ExecCmd:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Public Function ExecCmd(cmdstr As String) As Long
Dim wsh As Object
Set wsh = CreateObject("Wscript.Shell")
ExecCmd = wsh.Run(cmdstr, 0, True)
MsgBox ExecCmd
End Function
Je ne comprend pas pourquoi mais la valeur retournée par ExecCmd est 2 et le .bat n'a pas été éxécuté.
J'ai essayé plusieurs codes différent pour ExecCmd avec la fonction Shell et en attendant la fin de l'exécution etc. mais quelque soit le code j'ai tjs le même problème...
Le problème ne vient pas du fichier .bat car si je clique manuellement dessus pour l'exécuter, ça fonctionne et il fait exactement ce qu'il doit.
Le chemin vers le .bat est correct lui aussi car dans certains cas cette fonction fonctionne mais pas dans d'autres. Si j'appelle d'abord la fonction GetOpenFileName tout fonctionne parfaitement jusqu'à ce que je referme le fichier acces, sans même que je sélectionne le .bat, je peux appeler cette fonction sans en utiliser le résultat, ça suffit.

Quelqu'un aurait une idée de ce que ce 2 signifie? Quel est le problème?
Une solution?

Merci beaucoup!