Quelques exemples simples

Dates, heures et textes
Boucles, calcul de pi
Faire la liste des fichiers d'un répertoire
Recopier un fichier ligne par ligne
Piloter Word
Modifier le délai de l'économiseur d'écran
Connecter un lecteur réseau
Lancer un fichier Excel à partir d'une page Web
Zipper un fichier
Envoyer un mail
Un bouton qui disparait si on ne répond pas
Ouvrir n'importe quel type de fichier
Voir des exemples plus complexes dans le menu gauche




Dates, heures et textes

Date renvoie la date, Now renvoie la date et l'heure. hour(Now) renvoie l'heure.
On peut donc écrire :
msgbox "Nous sommes le " & date & chr(10) & _
    "Il est " & hour(now) & _
    "h et " & minute(now) & "min"

(contrairement à VBA, on ne peut pas écrire Format(now,"hh"))

cliquez ici pour lancer le vbs
cliquez ici pour télécharger le vbs sous forme de fichier .txt

Notre message peut aussi être inséré dans une page Web (pour Internet Explorer), cliquez ici pour ouvrir la page html contenant le vbs.




Boucles, calcul de pi

On calcule une approximation du nombre pi par :
pi = 4-4/3+4/5-4/7+4/9...
Un compteur num qui commence à zéro avec une boucle For... Next
2*num+1 pour les nombres impairs 1, 3, 5...
4/(2*num+1) pour la suite 4, 4/3, 4/5, 4/7...
(-1)^num pour les signes +, -, +, -...
et donc (-1)^num*4/(2*num+1) pour la suite 4, -4/3, +4/5, -4/7...
qu'il suffit de sommer dans la boucle :

pi=0
for num=0 to 100000
pi=pi+(-1)^num*4/(2*num+1)
next
msgbox pi


cliquez ici pour lancer le vbs
cliquez ici pour télécharger le vbs sous forme de fichier .txt




Faire la liste des fichiers d'un répertoire

VBScript ne connait pas la commande Dir. Par contre, on peut utiliser l'objet Scripting.FileSystemObject comme en VB ou en VBA (cliquez ici pour plus de détails) :

nomfich=InputBox("tapez le nom complet du répertoire à explorer", _
    "répertoire vbs","c:\mes documents")
Set fs = CreateObject("Scripting.FileSystemObject")
Set rep=fs.getFolder(nomfich)
txt=""
for each fich in rep.files
txt=txt & chr(10) & fich.name & " (créé le " & left(fich.DateCreated,8) & ")"
next
MsgBox txt,,"liste des fichiers du répertoire " & rep.name


La première ligne du script permet de demander à l'utilisateur de préciser quel répertoire il souhaite explorer.
Les deux lignes suivantes créent un objet Scripting.FileSystemObject puis un objet répertoire (Folder) correspondant au nom de dossier choisi.
En bouclant sur tous les fichiers (.files) du répertoire, on établit la liste de leurs noms (.Name) et date de création (.DateCreated).
Il suffit alors d'afficher la liste dans un MsgBox.

cliquez ici pour lancer le vbs
cliquez ici pour télécharger le vbs sous forme de fichier .txt




Recopier un fichier ligne par ligne en espaçant les lignes

Pour lire et écrire dans un fichier texte on utilise l'objet Scripting.FileSystemObject (cliquez ici pour plus de détails):

nomfich="C:\Mes Documents\zaza.txt"
Set fs = CreateObject("Scripting.FileSystemObject")
Set fich_source = fs.OpenTextFile(nomfich, 1, False)
Set nouv_fich = fs.OpenTextFile(left(nomfich,len(nomfich)-4) & "_new.txt", 2, true)

Do While not fich_source.atEndOfStream
nouv_fich.writeLine fich_source.readLine
nouv_fich.writeBlankLines 1
Loop

nouv_fich.close
fich_source.close
Set nouv_fich=nothing
Set fich_source=nothing
Set fs=nothing


Avec la méthode OpenTextFile de l'objet Scripting.FileSystemObject, on ouvre en lecture le fichier zaza.txt (second paramètre à 1 pour ouverture en lecture), et on crée un nouveau fichier (second paramètre à 2 pour ouvrir en écriture, troisième paramètre à True pour autoriser la création du fichier).
On lit ensuite le fichier source ligne par ligne (fich_source.readLine) jusqu'à la fin du fichier (fich_source.atEndOfStream).
Pour écrire une nouvelle ligne dans le nouveau fichier, on utilise nouv_fich.writeLine texte.
Pour insérer une ligne vide, on utilise nouv_fich.writeBlankLines 1. (On aurait aussi bien pu écrire nouv_fich.writeLine "", ou même nouv_fich.write chr(10)).




Piloter Word

On peut facilement lancer n'importe quelle application avec VBScript en utilisant l'objet WScript.Shell :
Set sh = WScript.CreateObject("WScript.Shell")
sh.Run("Explorer c:\zaza.xls")

Ou bien :
Set sh = WScript.CreateObject("WScript.Shell")
sh.Run("iexplore c:\zaza.html")


(info sur "Run")

Mais si on veut effectuer des opérations un peu complexes, il est préférable de créer un objet application (par exemple Word) :

Set ww = WScript.CreateObject("word.Application")
Set dct=ww.documents.add
ww.Selection.typetext "BONJOUR"
dct.saveAs "c:\zaza.doc"
dct.close
ww.quit
Set dct=nothing
Set ww=nothing


Le script crée un objet Word qu'il appelle ww, crée un nouveau document (par ww.documents.add), y écrit BONJOUR, l'enregistre sous c:\zaza.doc, le ferme et quitte Word.
Attention, pendant toute ces opérations, rien n'apparait sur l'écran de l'utilisateur.
On aurait pu ajouter une ligne ww.Visible = True après l'étape de création de l'objet Word pour le rendre visible.

cliquez ici pour télécharger le vbs sous forme de fichier .zip
cliquez ici pour télécharger le vbs sous forme de fichier .txt

On peut aussi vérifier l'existence d'une session de Word avant d'ouvrir un nouveau document :
set ww=nothing
On Error resume next
Set ww = GetObject(, "Word.Application")
on error goto 0
if ww is nothing then Set ww=WScript.CreateObject("Word.Application")
ww.Visible = True
ww.documents.add
set ww=nothing


Le VBS n'ouvre Word que s'il n'est pas déjà ouvert. Dans tous les cas il ajoute un nouveau document.




Modifier le délai de l'économiseur d'écran
(Modification des bases de registre).

Attention, cet exemple est basé sur un script qui modifie les bases de registre.
Il faut être très prudent avant de modifier les bases de registre, une erreur nalencontreuse peut avoir des conséquences désastreuses sur le fonctionnement de votre ordinateur.
Notez toujours soigneusement la configuration avant de faire une modification.

L'objet WScript.Shell possède les propriétés RegRead et RegWrite qui permettent de lire et écrire dans les bases de registre :
Set ssh = WScript.CreateObject("WScript.Shell")
delay = ssh.RegRead("HKEY_CURRENT_USER\Control Panel\DeskTop\ScreenSaveTimeOut")

delay renvoie le délai d'inactivité au delà duquel l'économiseur est lancé.

De la même façon, pour fixer delaynew comme délai :
ssh.RegWrite "HKEY_CURRENT_USER\Control Panel\DeskTop\ScreenSaveTimeOut",delaynew


Pour que le script soit complet, il faut encore vérifier que la clé visée existe bien, demander à l'utilisateur de choisir une valeur (InputBox) et vérifier que la valeur choisie est valide (IsNumeric) :
Set ssh = WScript.CreateObject("WScript.Shell")
delay = ssh.RegRead("HKEY_CURRENT_USER\Control Panel\DeskTop\ScreenSaveTimeOut")
if delay<>"" then
    delaynew=inputBox("le délai d'attente de l'économiseur d'écran est de " _
        & delay & " secondes." & chr(10) & chr(10) & "Quelle valeur voulez vous fixer ?")
    if isnumeric(delaynew) then
    ssh.RegWrite "HKEY_CURRENT_USER\Control Panel\DeskTop\ScreenSaveTimeOut",delaynew
    msgbox "le délai d'attente de l'économiseur d'écran a été passé de " _
        & delay & " secondes à " & delaynew & " secondes" & chr(10) & _
        "La modification sera effective au prochain redémarrage."
    else
    msgbox "valeur incorrecte"
    end if
else
    msgbox "configuration incompatible"
end if


cliquez ici pour télécharger le vbs sous forme de fichier .zip
cliquez ici pour télécharger le vbs sous forme de fichier .txt
Pour plus de détails sur la manipulation des bases de registres, cliquez ici.




Connecter un lecteur réseau .

L'objet WScript.Network permet de gérer les connexions réseau.

Pour connecter un nouveau lecteur réseau :
Set Nt = CreateObject("WScript.Network")
Nt.MapNetworkDrive "u:", "\\serveur\adresse"
Set Nt=nothing

(si on veut que la connexion persiste après la fermeture de la session Windows, on doit écrire
Nt.MapNetworkDrive "u:", "\\serveur\adresse", True
     ).

Pour déconnecter le réseau :
Set Nt = CreateObject("WScript.Network")
On error resume next
Nt.RemoveNetworkDrive "u:"
On error goto 0
Set Nt=nothing





Lancer un fichier Excel à partir d'une page Web .

Quand on établit dans une page Web un lien hypertexte pointant sur un fichier Excel, il arrive fréquemment que le fichier Excel soit ouvert à l'intérieur du navigateur (Internet Explorer), ce qui présente notamment l'inconvénient d'empêcher l'execution des macros contenues dans le fichier Excel.
Une solution consiste à diriger le lien vers un fichier vbs qui va ouvrir le fichier Excel dans une nouvelle fenêtre Excel (il faut bien sûr que le navigateur accepte l'execution des vbs).
Le script ouvre Excel puis le fichier :
Set xl = WScript.CreateObject("excel.Application")
xl.visible=true
xl.workbooks.open("http://jacxl.free.fr/cours_xl/vba/nouv_barre.xls")

cliquez ici (lien pointant sur ouvre_fich_xl.vbs).
Attention, les deux fichiers vbs et xl sont téléchargés avant d'être executés en local; ils ne sont pas executés sur le serveur !




Zipper un fichier .

Le script lance WinZip avec comme paramètres le nom du fichier à zipper et le nom de l'archive zip à créer :
appliZip = "C:\WinZip\winzip32.exe"
aZipper=inputbox("nom complet du fichier à zipper ?","zipzip","c:\rien.mid")
zippe="c:\rien.zip"
Set sh = WScript.CreateObject("WScript.Shell")
sh.Run(appliZip & " -a " & zippe & " " & aZipper)
set sh=nothing


cliquez ici (lien pointant sur zip.vbs).
cliquez ici pour télécharger le vbs sous forme de fichier .zip
cliquez ici pour télécharger le vbs sous forme de fichier .txt




Envoyer un mail .

Le script écrit le texte d'un mail et l'affiche pour envoi :
Set sh = WScript.CreateObject("WScript.Shell")
sh.run "mailto:zaza@free.fr?subject=bonjour&body=miaou"
set sh=nothing


Si le texte est un peu plus compliqué il faut le coder avant de le transmettre à la fonction mailto (fonction escape) :
Set sh = WScript.CreateObject("WScript.Shell")
txt="bonjour tout le monde, comment allez-vous ?"
txt=escape(txt)
sh.run "mailto:zaza@free.fr?subject=bonjour%20bonjour&body=" & txt
set sh=nothing


cliquez ici (lien pointant sur mail.vbs).
cliquez ici pour télécharger le vbs sous forme de fichier .zip
cliquez ici pour télécharger le vbs sous forme de fichier .txt

On peut d'ailleurs lancer de la même façon un javascript à partir d'un VBScript :
Set sh = WScript.CreateObject("WScript.Shell")
txt="bonjour tout le monde, comment allez-vous ?"
sh.run "javascript:alert(""" & escape(txt) & """);window.close()"
set sh=nothing





Un bouton qui disparait si on ne clique pas .

Le script utilise les nombreuses propriétés de Popup :

Set sh = WScript.CreateObject("WScript.Shell")
if sh.Popup ("bonjour",1,"vous avez une seconde pour cliquer",0)=1 then
msgbox("gagné")
else
WScript.echo("trop tard")
end if
set sh=nothing


On note dans l'exemple l'utilisation possible de MsgBox, de WScript.Echo et de Sh.Popup pour transmettre un message à l'utilisateur.

Popup offre des possibilités intéressantes :
Sh.Popup("texte du message",5,"titre",1) affiche pendant 5 secondes une boite de message avec deux boutons OK et Annuler.
Si la durée n'est pas renseignée, le bouton reste affiché tant que l'utilisateur ne clique pas dessus.
Le dernier paramètre peut aller de 0 à 5 (0 = OK, 1 = OK + Annuler, 2 = Abandonner + Réessayer + Ignorer, 3 = Oui + Non + Annuler, 4 = Oui + Non, 5 = Réessayer + Annuler).

cliquez ici (lien pointant sur popup.vbs).
cliquez ici pour télécharger le vbs sous forme de fichier .zip
cliquez ici pour télécharger le vbs sous forme de fichier .txt




Ouvrir n'importe quel type de fichier .

On peut utiliser l'instruction Run de WScript.Shell pour lancer n'importe quel type de fichier (pour peu qu'il soit associé à un executable) :
Set sh = CreateObject("WScript.Shell")
sh.Run("c:\zaza.doc")
Set sh=Nothing

Pour éviter un message d'erreur si le fichier n'existe pas, on peut tester préalablement son existance avec la fonction FileExists de Scripting.FileSystemObject :
Set fso = wscript.CreateObject("Scripting.FileSystemObject")
If fso.fileexists("c:\zaza.doc") Then...

Enfin, pour éviter des difficultés quand le nom du fichier contient des caractères spéciaux, on peut utiliser son nom DOS, obtenu par la propriété ShortPath dans Scripting.FileSystemObject :
sh.Run fso.getfile("c:\zaza.doc").shortpath

cliquez ici (lien pointant sur ouvrfich.vbs).
cliquez ici pour télécharger le vbs sous forme de fichier .zip
cliquez ici pour télécharger le vbs sous forme de fichier .txt