Autres Syntaxe pour appeler une fonction

zar78

XLDnaute Nouveau
Bonjour à tous !
Je viens faire appel à votre aide.
J’ai trouvé, sur internet, une fonction qui semble correspondre tout à fait à ce que je voudrais faire.
Malheureusement, le code d’appel à cette fonction n’est pas fourni, car ça doit être très simple !!!.
J’ai fait une multitude d’essais et je ne réussis pas à créer un code d’appel qui fonctionne.
Je ne trouve pas la syntaxe qui va bien.

Voici la fonction :

Public Function ShellAndWait(ShellCommand As String, _
TimeOutMs As Long, _
ShellWindowState As VbAppWinStyle, _
BreakKey As ActionOnBreak) As ShellAndWaitResult

Je ne sais pas ce qu’il faut faire avec As ShellAndWaitResult après la parenthèse.

*****************************************************​
J’ai un autre exemple, sans code fourni là aussi , où j’ai fini cahin caha par trouver une syntaxe pour appeler cette fonction.
Public Function ExecuteAndReturnStdOutput(ByVal iExecutablePath As String, _
Optional ByVal iStdInput As String = vbNullString) _
As String
J’ai réussi à l’appeler en codant :
Sub TestFonction()
MsgBox ExecuteAndReturnStdOutput("Powershell.exe ""C:/xxx/yyy/POWERSHELL/Scripts/Mc-AAA-Message.ps1""")
End Sub

*****************************************************
Mais pour la fonction ShellAndWait, je n'y arrive pas.

Quelqu'un peut-il m'aider?
Merci à vous
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, zar78

zar78
Une question en passant
Pourquoi utiliser VBA pour lancer un script PShell?
Juste parce que c'est possible ?
Soit :rolleyes:
VB:
Sub Call_PowerShell_Script_File_From_Excel_VBA()
    'Windows PowerShell ISE >> New Script >> Create 'Hello World.ps1'
    '    echo "Hello World"
    '    $x = 1 + 1
    '    echo $x
    '----------------------------------------------------------------
    Dim wshShell        As Object
    Dim wshShellExec    As Object
    Dim strCommand      As String
    Dim strOutput
    strCommand = "Powershell.exe -File ""C:\Users\Future\Desktop\Hello World.ps1"""
    Set wshShell = CreateObject("WScript.Shell")
    Set wshShellExec = wshShell.Exec(strCommand)
    strOutput = wshShellExec.StdOut.ReadAll()
    Debug.Print "StdOut:", strOutput
    strOutput = wshShellExec.StdErr.ReadAll()
    Debug.Print "StdErr:", strOutput
End Sub
NB: faire les adaptations idoines
 

Dranreb

XLDnaute Barbatruc
Bonsoir
De toute évidence c'est un code de retour de bonne exécution.
Vous pouvez invoquer la fonction dans un Select Case
VB:
Select Case ShellAndWait(ShellCommand, TimeOutMs, ShellWindowState, BreakKey)
   Case Success:
   Case Failure:
   Case TimeOut:
   Case InvalidParameter:
   Case SysWaitAbandoned:
   Case UserWaitAbandoned:
   Case UserBreak:
   End Select
en mettant derrrière les ':' les instructions que vous voulez exécuter pour chaque issue possible
 

zar78

XLDnaute Nouveau
Bonsoir le fil, zar78

zar78
Une question en passant
Pourquoi utiliser VBA pour lancer un script PShell?
Juste parce que c'est possible ?
Soit :rolleyes:
VB:
Sub Call_PowerShell_Script_File_From_Excel_VBA()
    'Windows PowerShell ISE >> New Script >> Create 'Hello World.ps1'
    '    echo "Hello World"
    '    $x = 1 + 1
    '    echo $x
    '----------------------------------------------------------------
    Dim wshShell        As Object
    Dim wshShellExec    As Object
    Dim strCommand      As String
    Dim strOutput
    strCommand = "Powershell.exe -File ""C:\Users\Future\Desktop\Hello World.ps1"""
    Set wshShell = CreateObject("WScript.Shell")
    Set wshShellExec = wshShell.Exec(strCommand)
    strOutput = wshShellExec.StdOut.ReadAll()
    Debug.Print "StdOut:", strOutput
    strOutput = wshShellExec.StdErr.ReadAll()
    Debug.Print "StdErr:", strOutput
End Sub
NB: faire les adaptations idoines
Bonsoir
Pourquoi du shell? Pas pour faire joli!
J'ai une application vba (formulaire), qui fonctionne actuellement, et qui sert à enregistrer les informations provenant du courrier postal reçu.
Je voudrais en même temps numériser ce courrier reçu, et ce automatiquement en une seule fois, en récupérant les informations du formulaire pour générer le nom des fichiers numérisés.. Le seul exemple que j'ai trouvé est un shell qui déclenche la numérisation. J'ai le shell qui va bien et qui fonctionne.
Il faut juste que j'harmonise l'ensemble.
 

Staple1600

XLDnaute Barbatruc
Re

Un raccourci sur le bureau du script powershell n'est pas possible?
Personnellement, je fais le contraire, j'exécute un script Powershell (manuellement ou avec le planificateur de taches) qui ouvrent des fichiers Excel/Word contenant du VBA
(qui s'exécutent à l'ouverture - en masquant Excel ou Word)
 

zar78

XLDnaute Nouveau
Re

Un raccourci sur le bureau du script powershell n'est pas possible?
Personnellement, je fais le contraire, j'exécute un script Powershell (manuellement ou avec le planificateur de taches) qui ouvrent des fichiers Excel/Word contenant du VBA
(qui s'exécutent à l'ouverture - en masquant Excel ou Word)
Je ne comprends pas votre remarque. On est bien loin de ma question initiale, qui porte juste sur un souci syntaxique!
 

Staple1600

XLDnaute Barbatruc
Re

Ma remarque est juste informative
( les questions et les réponses apportées ne sont pas lu que par le seul demandeur)
On en fait ce qu'on veut ;)
Je voulais simplement dire que ce type de tâche
Je voudrais en même temps numériser ce courrier reçu, et ce automatiquement en une seule fois, en récupérant les informations du formulaire pour générer le nom des fichiers numérisés..
Je le pilote avec un script Powershell (avec si besoin l'emploi d'Excel ou Word et le VBA qu'ils permettent)
Ce qui m'affranchi des problèmes décris dans ton message#1

PS: Est-ce que tu as essayé le code exemple que j'ai posté dans le message#2
 

Discussions similaires

Statistiques des forums

Discussions
315 109
Messages
2 116 297
Membres
112 714
dernier inscrit
anteflag22