Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/04/2007, 15h09   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 59
Points : 14
Points : 14
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 :
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 :
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.
daniel_gre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 00h19   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tes chr(34) sont de trop. Une syntaxe qui fonctionne :
Code :
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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 00h28   #3
Membre éclairé
 
Inscription : octobre 2006
Messages : 390
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 390
Points : 396
Points : 396
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...
dadavyvy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 00h35   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Effectivement, chr(34) est un guillemet. Mais qu'entends-tu par "le chemin n'est pas au format DOS" ?
Si je fais
Code :
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.
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 05h59   #5
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 676
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 676
Points : 7 625
Points : 7 625
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!
AlainTech est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 07h42   #6
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 59
Points : 14
Points : 14
Merci,

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

Daniel.
daniel_gre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 08h35   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 08h56   #8
Membre éclairé
 
Inscription : octobre 2006
Messages : 390
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 390
Points : 396
Points : 396
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 :
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 :
cmd /c C:\chemin -o nimportequoi\monProg.exe
Il faut bien :
Code :
cmd /c "C:\chemin -o nimportequoi\monProg.exe"
ou alors
Code :
cmd /c C:\chemin~1\monProg.exe
Voila, je pense qu'il faut mettre à ce topic
dadavyvy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 09h20   #9
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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 :
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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h24.


 
 
 
 
Partenaires

Hébergement Web