Vba & Shell

chuinul

XLDnaute Occasionnel
Bonjour le forum,

J'ai fait un script SHELL (Solaris), et je souhaiterai qu'il soit lancé par une macro VBA. Ce script génère un .csv que j'importe par la suite sous Excel.

J'ai essayé avec la commande Shell() de VBA de lancer une session Telnet pour ensuite lancer ce script, mais je n'y arrive pas:

J'arrive à lancer une fenêtre MS-DOS, et à lancer une session telnet en faisant ceci :

a = "CMD.EXE" & Chr(34) & "telnet ServeurSolaris"
Shell (a)

mais au moment du login/mot de passe, cela ne passe pas en faisant ceci :

a = "CMD.EXE" & Chr(34) & "telnet ServeurSolaris" & Chr(34) & "LOGIN" & Chr(34) & "MotDePAsse" & Chr(34)
Shell (a)

Bon et si ce problème est résolu, je souhaiterai tout simplement faire :

cd /SCRIPTS/monscript/
./monscipts.sh
exit

Quelqu'un aurait une idée?

Merci d'avance
 

porcinet82

XLDnaute Barbatruc
Re : Vba & Shell

Salut,

Je n'ai pas de réponse a t'apporter, mais je viens de tester pour voir ou ca buggait et je me suis apercu que lorsque que tu lances le code, vba perds la main au profit de la fenetre DOS, donc la fin du code ne peut pas etre executé, ce qui provoque une erreur.
Je ne sais pas comment remédier a ca, mais c'est peut etre un debut de piste...

@+
 

chuinul

XLDnaute Occasionnel
Re : Vba & Shell

oui en fait je crois que tant qu'on reste sous dos ça passe mais une fois la connection telnet ouverte, on perd la main, sans doute parce que on est plus vraiment sous DOS....

Alors j'ai peut-être 4 idées, mais je ne sais pas les mettre en oeuvre :

I. : Faire un script DOS qui gère la connection telnet et les divers commandes dont j'ai besoin, ce serait un script .bat, mais je ne sais pas faire, et je suis loin d'être certain que cela règle le problème. Excel ne ferait que lancer ce script via DOS

II. : Faire un programme (en C par exemple) qui se connecte en telnet, et fasse les commande, mais alors là je raconte pas la difficulté !!!! les sockets et tout et tout, je préfère pas en entendre parler ;)

III. : Comme la solution II. mais en VBA sans passer par Shell() mais là par contre j'ai absolument pas les compétences... donc si un dieu du VBA s'est déja penché sur une problème similaire ;)

IV. : Je pense que c'est la plus "simple", même si je suis pas capable de le faire : continuer à utiliser la commande Shell() mais gérer les threads pour envoyer les commandes séquentiellement cela ressemblerait à quelque chose comme cela (je m'inspire du C/C++, cela n'a surement aucun sens en VBA)

dim Processencours as integer
a = "CMD.EXE" & Chr(34) & "telnet ServeurSolaris" & Chr(34)
b = "LOGIN" & Chr(34)
C = "MotDePasse" & Chr(34)
d = "cd ./MonDirectory/" & Chr(34)
e = "./monscript.sh" & Chr(34)

Processencours = Shell(a).threads() // comme cela on récupère le num de processus de l'invite de commande MS-DOS
Shell(b).threads(Processencours) //et avec ce num on execute les autres commande dans ce même processus, ie dans la même fenêtre
Shell(c).threads(Processencours)
Shell(d).threads(Processencours)
Shell(e).threads(Processencours)

Jsuis pas sur que ce soit clair, mais si quelqu'un à une idée, voir même une solution, ce serait génial!!

Merci d'avance

PS : Bonne année a TOUS !
 
Dernière édition:

chuinul

XLDnaute Occasionnel
Re : Vba & Shell

Heu t'expliquer de quoi on parle pourrait être long si on prend à zéro ;)

Que voudrais-tu savoir plus précisément? Que souhaiterais-tu faire, ou ta demande est-elle juste pour ton info perso?

Si c'est pour ton info perso : a partir d'où tu ne comprend plus?
 

Discussions similaires

Statistiques des forums

Discussions
312 539
Messages
2 089 406
Membres
104 163
dernier inscrit
Lolo37