J'essaye d'écrire un code (en ACCESS) qui crée un fichier .bat et ensuite l'exécute. Voici mon code :
Et le code de la fonction ExecCmd:
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")
Je ne comprend pas pourquoi mais la valeur retournée par ExecCmd est 2 et le .bat n'a pas été éxécuté.
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
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!
Partager