IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

utilisation de WScript.Shell


Sujet :

VBA

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 44
    Points
    44
    Par défaut utilisation de WScript.Shell
    Bonjour,

    je cale sur l'utilisation (pourtant simple) de WScript.Shell.

    je souhaite lancer un executable avec des parametres, mais malheureusement ca ne marche pas. Pour etre sur que ce n'est pas ma cmd commande qui est la root-cause je l'ai validee a partir d'un .bat ... pas e probleme
    Ci dessous mon code vba et le .bat qui fonctionne bien

    VBA code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            Str_Path = ThisWorkbook.Path & "\Login.txt"
            Str_Wget_Path = ThisWorkbook.Path
            Dim ID As Variant
            Str_Wget = "cmd /c " & Chr(34) & Str_Wget_Path & "\wget.exe" & Chr(34) & " --no-check-certificate -O text.txt -a wgetlog.txt -i login.txt"
            Dim Sh
            Set Sh = CreateObject("WScript.Shell")
            ID = Sh.Run(Str_Wget, 0, True)
            Set Sh = Nothing
    .BAT code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd /c "C:\dev\www\public\www - Black For Archive\doc Version 1-0\Multi-Accounts\wget.exe" --no-check-certificate -O text.txt -a wgetlog.txt -i login.txt
    ???!!! y a t'il quelqu'un qui identifi mon probleme?

    par avance merci,

    Daniel.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tes chr(34) sont de trop. Une syntaxe qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Chemin = "C:\Windows\"
    CheminFichier = "C:\"
        Str_Wegg = "cmd /c " & Chemin & "Notepad.exe " & CheminFichier & "xlsAppli.vbs"
                Dim Sh
            Set Sh = CreateObject("WScript.Shell")
            ID = Sh.Run(Str_Wegg, 0, True)
            DoEvents
            Set Sh = Nothing
    Les parenthèses ne sont là que quand tu as à concaténer variables et string. Faut pas en ajouter.
    Désolé mais je n'ai pas pu tester avec ton code

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    En fait, je crois que les chr(34) sont des guillemets car le chemin n'est pas au format DOS.
    Je pense plutot que le probleme se situe par rapport au chemin des fichiers text.txt, wgetlog.txt et login.txt.
    Il faut surement utiliser ChDrive et ChDir avant de lancer la commande...

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Effectivement, chr(34) est un guillemet. Mais qu'entends-tu par "le chemin n'est pas au format DOS" ?
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Str_Wget_Path = ThisWorkbook.Path
    MsgBox Str_Wget_Path     ' "D:\xls"
    Càd exactement la syntaxe utilisée en dos, le "\" de la fin en moins.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Format DOS = Max 8 caractères (+ éventuelle extension) et pas d'espace.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 44
    Points
    44
    Par défaut
    Merci,

    la solution est dans ChDir "<new directory>" avant de lancer le shell

    Daniel.

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour mon info, tu as laissé les guillemets ? Je suis étonné, j'ai toujours pensé, pour l'avoir souvent utilisé, que le dos n'utilisait pas les guillemets. Va falloir que je révise mon dos

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    En fait, cmd ou command accepte les formats non Dos sous Windows 2000 ou XP. Par contre, quand il s'agit de le mettre dans un parametre, et qu'il y a des espaces, Dos ne sait plus de quel parametre il s'agit.
    Le probleme ne vient pas vraiment du format Dos, mais des espaces, car avec un nom de fichier long sans espace, il n'y a pas de probleme. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd /c C:\nomdedossiertreslongsansespace\monProg.exe
    Mais si mon dossier s'appelle "C:\chemin -o nimportequoi\", si je ne mets pas de guillemets dans la commande Dos voila ce que ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd /c C:\chemin -o nimportequoi\monProg.exe
    Il faut bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd /c "C:\chemin -o nimportequoi\monProg.exe"
    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd /c C:\chemin~1\monProg.exe
    Voila, je pense qu'il faut mettre à ce topic

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok, dans ce cas, j'utilise toujours le nom court. Et j'ai cherché longtemps avant d'en arriver là... J'étais tout content quand j'ai vu qu'on pouvait faire ça simplement par fso
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function NomCourt(LeFich)
    Dim fso, Nomfich
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set Nomfich = fso.GetFile(LeFich)
        NomCourt = Nomfich.ShortName
    End Function
     
    Sub NomAbrégé()
    MsgBox NomCourt("Commandes publiques - Courrier arrivé.xls")
    End Sub
    Merci dadavyvy, ta réponse va me simplifier la vie... parfois

Discussions similaires

  1. [XL-2010] problème d'interraction et de loop entre vba et putty en utilisant wscript.shell
    Par legethi dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/11/2014, 22h42
  2. Utilisation WScript.Shell
    Par perrotta dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/02/2014, 10h30
  3. [Wamp] Utilisation ActiveXObject("WScript.Shell") a travers Wamp
    Par tlc77 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 29/03/2010, 14h20
  4. Wscript.Shell ...
    Par christine dans le forum ASP
    Réponses: 8
    Dernier message: 31/03/2006, 22h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo