Lancer des commandes shell Unix depuis un code VBA excel
nazgul64
Messages postés3Date d'inscriptionmardi 24 juillet 2007StatutMembreDernière intervention 6 mars 2009
-
26 mars 2008 à 13:07
cs_groslou2
Messages postés3Date d'inscriptionvendredi 22 décembre 2000StatutMembreDernière intervention16 mars 2011
-
24 sept. 2008 à 16:34
Bonjour,
Voilà ... j'essaye de percer un des grands mystères du VBA : comment lancer une commande Shell Unix (exemple : ls, rm ...) ... peinard depuis mon code VBA Excel ??
Simple en apparence ... mais je désespère de trouver une réponse
cs_groslou2
Messages postés3Date d'inscriptionvendredi 22 décembre 2000StatutMembreDernière intervention16 mars 20111 24 sept. 2008 à 16:34
Un peu tard comme réponse, mais étant donné que j'ai eu le même problème et que j'ai pu trouver une solution, je la fais partager:
- il faut télécharger l'exécutable plink à cette adresse http://tartarus.org/~simon/putty-snapshots/x86/plink.exe - tu le mets par exemple sur ton bureau
- tu crées une macro:
Sub LancerAppli()
Call Shell("C:\Documents and Settings\ton_nom_sous_windows\Desktop\plink.exe -l ton_login_sous_unix -pw ton_mot_de_passe_sous_unix le_nom_de_ton_serveur_unixta_ligne_de_commande_unix", 0)
End Sub
Après à toi de t'amuser à faire des boucles sur tes commandes unix, ou à faire un fichier de commandes Shell et à le transférer en ftp sous unix pour l'exécuter ensuite.
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200825 26 mars 2008 à 14:00
Bah çà va pas être simple çà.
Tu installes un server web sur ton server Unix/Linux. Tu le rends accessible sur ton réseau (ou Internet).
Tu te crées une page server (PHP, JSP, ...) qui réalise la tâche de listage, de suppression. Et tu appelles cette page par un hit HTTP depuis Excel. Tu récupères enfin dans la réponse HTTP le résultat de ta requête (suppression OK, liste des fichiers, ...) et tu parses le tout pour le rendre affichable sous Excel.
Soit tu as mal exprimé ton problème, soit tu vas galérer pour réaliser cette petite demande qui est, soit dit en passant, assez peu commune.
nazgul64
Messages postés3Date d'inscriptionmardi 24 juillet 2007StatutMembreDernière intervention 6 mars 2009 26 mars 2008 à 19:03
Merci à vous ... effectivement j'ai mal formulé ma requête.
Je travaille sous Windows (sous Excel en majorité) et je lance des applications sous un serveur Unix auquel j'accède via un émulateur (Hummingbird Exceed).
J'aimerais pouvoir lancer mes applications (runs en mode batch) sur le serveur Unix depuis une macro VBA Excel, récupérer les fichiers résultats et les analyser sous Excel.
Olivier
Vous n’avez pas trouvé la réponse que vous recherchez ?
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200825 27 mars 2008 à 12:47
Yep
Ca ne fonctionnera que si ton emulateur est "pilotable" autrement qu'à la souris.
Dans le pire, mais alors le pire des cas, quelques sendKeys()te permettront de piloter ton émulateur, mais alors dans ce cas, ce sera assez dégoutant, et surtout pas certain de toujours fonctionner (problèmes pour être certain de la fenêtre qui recevra les sendKeys)
Manu --------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
nazgul64
Messages postés3Date d'inscriptionmardi 24 juillet 2007StatutMembreDernière intervention 6 mars 2009 27 mars 2008 à 13:10
Effectivement ... ce matin j'ai essayé d'écrire quelque chose avec des sendkeys (et telnet) et ça marche ... mais comme le fait remarquer MrManu
c'est pas très beau et pas très sûr non plus (obligé de jouer sur des instructions Wait pour que les lignes de commandes passent au mieux).
J'aimerais pouvoir trouver une solution plus pratique (mais toujours entièrement piloté depuis VBA) ...
En ce qui concerne l'émulateur j'ai réussi à effectuer des opérations d'upload et download sur le serveur (ainsi que des sorties de liste de fichiers et dossier d'un répertoire avec l'instruction FTPDIR) grâce à quelques rares exemples sur le web d'applications d'instructions OLE (OLE automation) mais j'ai très peu d'info sur l'ensemble des instructions OLE disponibles et leur fonctionnement ... autrement dit je ne sais pas faire d'envoie d'exécution de commandes.