Ecritude dans un fichier.bat à partir de VBA

Ecritude dans un fichier.bat à partir de VBA - VB/VBA/VBS - Programmation

Marsh Posté le 18-03-2013 à 17:24:40    

Bonjour,  
 
Je souhaite à partir d'une maccro excel lancer un fichier bat.  
Pour cela, j'écris dans ma maccro VBA :  
 

Code :
  1. chemin2 = "C:\Users\MOI\Desktop\3D\qhull-2012.1\eg\Qhull-go.bat"Open chemin2 For Output As #3
  2. Print #3, "qdelaunay s i TO qdelaunayessai.txt <ImputDataExecutable.txt"
  3. Close #3


 
Au lieu d'écrire qdelaunay s i TO qdelaunayessai.txt <ImputDataExecutable.txt ça m'écrit  qdelaunay s i TO qdelaunayessai.txt 0<ImputDataExecutable.txt  
 
Comment puis-je enlever le 0 ?
 
Remarque : ça le fait également pour "<" avec un 1 devant
 
Merci de vos réponses
 
Mélo

Reply

Marsh Posté le 18-03-2013 à 17:24:40   

Reply

Marsh Posté le 28-03-2013 à 16:00:15    

Bonjour,
 
Ton code fonctionne bien pour moi (Excel 2013). Je n'ai pas de 0 qui apparaît comme tu l'indiques.
 
Tu peux essayer de remplacer le signe < par son code ascii. Sait-on jamais...
 

Code :
  1. chemin2 = "C:\test.bat"
  2. Open chemin2 For Output As #3
  3. Print #3, "qdelaunay s i TO qdelaunayessai.txt " & Chr$(60) & "ImputDataExecutable.txt"
  4. Close #3


 
Cdlt

Reply

Marsh Posté le 29-03-2013 à 14:00:49    

Bonjour,  
 
En effet mon code fonctionne, j'ai mis append au lieu de output car je ne veux pas supprimer ce qu'il y a déjà dedans !
Cependant, quand j'ouvre le fichier bat en .txt voila ce que j'obtiens
 

Code :
  1. : Qhull-go.bat invoked as cmd.com from QHULL-GO
  2. @echo off
  3. echo.
  4. echo ========= Qhull with rbox, qconvex, qdelaunay, qvoronoi, qhalf ============
  5. echo.
  6. echo       Use arrow keys to repeat and edit commands.
  7. echo.
  8. echo       Double-click window bar for full height, or
  9. echo            "right-click > Properties > Layout > Window Size > Height > 50 "
  10. echo.
  11. echo       Type 'qconvex' for synopsis and examples.
  12. echo.
  13. echo =========
  14. echo.
  15. title Qhull
  16. cd bin
  17. %comspec%
  18. qdelaunay s i TO OutputDataQJ.txt <ImputData.txt


 
Au final mon fichier OutputDataQJ n'est pas crée. Je ne connais pas dt tout le fonctionnmeent des fichiers bat et mes recherches n'ont pour le moment pas abouti.  
 
Si tu as une petite idée du pourquoi je suis preneuse :)
 
Merci en tout cas d'avoir répondu !

Reply

Marsh Posté le 29-03-2013 à 14:15:22    

 
           Bonjour,    effectivement depuis le départ cette dernière ligne est intrigante
                           et seule toi peut expliquer ce qu'elle est censée faire !
 
           Tu peux tester aussi manuellement ta commande dans l'Invite de commandes
 

Reply

Marsh Posté le 29-03-2013 à 14:29:51    

Manuellement la ligne de commande que je rentre i.e.

Code :
  1. qdelaunay s i TO OutputDataQJ.txt <ImputData.txt

 fonctionnement parfaitement, j'obtient ce que je veux !
 
Je suis presque sure que le problème vient en fait de %comspec% car quand je lance manuellement mon fichier j'ai sur ma console le chemin :

Code :
  1. C:\Users\Nom\Dekstop\3D\qhull-2012.1\bin


 
alors que si je lance de VBa, j'ai

Code :
  1. C:\Users\Nom\Dekstop\3D\NOMDUFICHIEROUJELANCEMAMACRO

, le système ne peut donc pas trouver le chemin spécifié !  
 
A mon avis il faut que je crée  "a customized Command Prompt " n'y connaissant pas grand chose je vais voir si cela est possible et si je ne raconte pas des sôtisses !  
 
En tout cas merci de m'aider juste le fait de parler du problème me fait comprendre certain trucs !
 

Reply

Marsh Posté le 29-03-2013 à 15:14:58    

 
           Le fichier batch (ou .cmd) a-t-il forcément besoin d'être créé à chaque fois,
           ne peut-il pas l'être une fois pour toute et ne lancer son exécution en VBA avec la fonction  Shell  ?
 

Reply

Marsh Posté le 03-04-2013 à 14:17:59    

Au final je lance mon invite de commande à partir de "shell" et je rentre à la main ma commande !  
Je suis en train de regardezr du coté de Attachconsole ... mais pour le moment rien de concluant

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed