Shell VBA
La commande Shell sous VBA
Exemple: ouvrir le solitaire (Excel 2003)
Sub solitaire()
Shell "sol" , vbNormalFocus
End Sub
Shell "sol" , vbNormalFocus
End Sub
Exemple: ouvrir le bloc-notes (Excel 2003/2007/2010)
Sub blocnote()
Shell "notepad"
End Sub
Shell "notepad"
End Sub
Autre exemple: Ouverture du bloc-notes dans 5 secondes
Sub blocnote_auto()
Application.OnTime Now + TimeValue("00:00:05"), Shell("notepad", vbNormalFocus)
End Sub
Application.OnTime Now + TimeValue("00:00:05"), Shell("notepad", vbNormalFocus)
End Sub
Exemple: ouvrir le fichier titi.doc sur le disque
Sub OuvreTiti()
Shell "winword c:\titi.doc"
End Sub
Shell "winword c:\titi.doc"
End Sub
Exemple: lire une vidéo
Sub OuvreVideo()
Shell """C:\Program Files\Windows Media Player\wmplayer.exe"" ""C:\clock.avi""", vbMaximizedFocus
End Sub
Shell """C:\Program Files\Windows Media Player\wmplayer.exe"" ""C:\clock.avi""", vbMaximizedFocus
End Sub
Note sur les guillemets:
En plus des guillemets de la commande Shell, on doit mettre le nom de l'exécutable entre guillemets puisqu'il contient des espaces. Idem pour le chemin (path) si celui-ci contiens des guillemets et pour mettre un guillemet entre guillemets, il faut les doubler.
Voir aussi l'utilisation de l'API ShellExecute pour le cas ou on veut que VBA trouve tout seul l'exécutable.
Exemple: supprimer un fichier (kill) ou un dossier (RmDir)
Sub supprimeTout()
Kill "C:\monfichier.doc"
'RmDir "C:\mondossier" 'ce dossier doit être vide
End Sub
Kill "C:\monfichier.doc"
'RmDir "C:\mondossier" 'ce dossier doit être vide
End Sub
Note: Attention: pas de passage par la corbeille et le dossier doit être vide.
Autre exemple: Procédure qui permet de lancer winword.exe et d'ecrire dans sa zone de travail puis de Quitter
Sub ouvrir_word()
' '---------------------------------------------------
Dim app,ret
' A adapter en fonction de votre installation
app = "C:\Program Files\Microsoft Office2003\OFFICE11\WINWORD.EXE"
ret = Shell(app, 3) ' Exécuter Word ; 3 = "en plein écran"
SendKeys "bonjour Word!", True
SendKeys "%fq", True ' Réalise ALT+F+Q ; True=reste dans Word
' SendKeys "%{F4}N"; True' Réalise ALT+F4 et répond Non pour quitter sans enregistrer
End Sub
' '---------------------------------------------------
Dim app,ret
' A adapter en fonction de votre installation
app = "C:\Program Files\Microsoft Office2003\OFFICE11\WINWORD.EXE"
ret = Shell(app, 3) ' Exécuter Word ; 3 = "en plein écran"
SendKeys "bonjour Word!", True
SendKeys "%fq", True ' Réalise ALT+F+Q ; True=reste dans Word
' SendKeys "%{F4}N"; True' Réalise ALT+F4 et répond Non pour quitter sans enregistrer
End Sub
Objets DAO (Data Access Objects)
Dans Excel, choisissez la commande "Références" du menu "Outils" de Visual Basic Editor et cochez Microsoft DAO 3.6 Object Library.