cs_faucheuse
Messages postés308Date d'inscriptionjeudi 10 janvier 2008StatutMembreDernière intervention27 octobre 2011
-
18 mars 2008 à 10:00
cs_faucheuse
Messages postés308Date d'inscriptionjeudi 10 janvier 2008StatutMembreDernière intervention27 octobre 2011
-
18 mars 2008 à 14:14
Bonjours ami(e)s programmeurs et programmeuzes,
bon la question est dans le titre : comment je peux faire pour lancer un fichier BAT depuis une macro ecxel?
En cherchant sur internet j'ai trouvé plusieurs solutions et aucune ne fonctionne =(.
PCPT
Messages postés13278Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 18 mars 2008 à 11:16
Private Declare Function
GetCurrentDirectory
Lib
"kernel32"
Alias
"GetCurrentDirectoryA"
(
ByVal
nBufferLength
As Long
,
ByVal
lpBuffer
As String
)
As Long
Dim sSave As String
'create a buffer
sSave = String(255, 0)
'retrieve the current
directory
GetCurrentDirectory 255, sSave
MsgBox sSave
End Sub
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
Private Sub Form_Paint()
'KPD-Team
2000
'URL:
http://www.allapi.net/ 'E-Mail:
KPDTeam@allapi.net
SetCurrentDirectory App.Path
End Sub
cs_faucheuse
Messages postés308Date d'inscriptionjeudi 10 janvier 2008StatutMembreDernière intervention27 octobre 2011 18 mars 2008 à 11:30
OMG!!! J'ai trouvé, la réponse est vraiment, mais alors vraiment très bête, et il m'a fallu une heure au moins pour la trouver : j'ai changer le fichier BAT
J'ai rajouter au debut : cd C:\Documents and Settings\moi\bureau
Merci pour ton aide lol, expliue quand meme ton code, si ca te dérange pas, ca pourra toujours me servir ( ou servir a un autre qui passe par ici^^)
PCPT
Messages postés13278Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 18 mars 2008 à 11:40
je disais : voir CURDIR
mais c'est en lecture seule et ta demande est de changer le répertoire par défaut
donc les API....
je te montre GetCurrentDirectory juste pour voir mais ce qui intéresse est SetCurrentDirectory pour modifier...
et j'vois pas comme expliquer une seule ligne de code.... on déclare l'API et on l'utilise...
lancer le BAT (par shell), il se met avec le répertoire par défaut.
donc je te proposais d'essayer (par exemple) un
SetCurrentDirectory "C:"
juste avant de lancer le bat, pour voir ce que çà donne....
mais une autre possibilité est simpement de lancer le RUN et pas le BAT
Shell "cmd.exe CHEMIN_COMPLET.bat", vbNormalFocus
là tu auras le répertoire de l'appli (excel) et la fenêtre ne se fermera pas
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_faucheuse
Messages postés308Date d'inscriptionjeudi 10 janvier 2008StatutMembreDernière intervention27 octobre 2011 18 mars 2008 à 10:41
Alors j'ai un nouveau probleme en fait, maintenant le fichier se lance depuis le dossier ou je l'ai mis, mais quand je lui demande de m'ouviri une commande >DOS il l'ouvre dans Mes Documents.
J'ai donc entrer le chemin complet dans le code : Call Shell("C:\moi\bureau\machin.bat")
Et maintenant il maffiche les options de la commande FTP et s'eteint aussito.
Mon fichier.bat contient la ligne : ftp -s:autrefichier.ftp
Quelqu'un saurait comment faire fonctionner cette macro correctment??
cs_faucheuse
Messages postés308Date d'inscriptionjeudi 10 janvier 2008StatutMembreDernière intervention27 octobre 2011 18 mars 2008 à 10:57
En fait ce .bat (comme tu l'aura sans doute compris) lance un fichier ftp contenant un code simple qui connecte l'ordianteur a un serveur FTP et récupère un fichier. Or la il ne fait rien (a part m'afficher les options de FTP.
Au cas ou, le fichier FTP contient :
open 10.0.0.15
name
pass
get machin.txt
close
cs_faucheuse
Messages postés308Date d'inscriptionjeudi 10 janvier 2008StatutMembreDernière intervention27 octobre 2011 18 mars 2008 à 11:24
Oula oula, comprend pas tout, tu pourrais expliquer stp?
Je pense comprendre un peu(dis moi si je me trompe), tu créer deux fonctions : GetCurrentDirectory et SetCurrentDirectory, attachés tout les deux à la librairie Kernel32, ensuite je comprend pas ce qu'il se passe.