Bonjour à toutes et tous,
Comme promis, il y a déjà quelque temps,
voici la synthèse de cette discussion.
Une des façons de mutualiser et simplifier la maintenance de son code est de le "découper" en fonctions et sous-procédures simples.
Parmi ces fonctions et sous-procédures un grand nombre peuvent être réutilisées dans plusieurs scripts différents. Pour cela il est très pratique de les répartir dans un ou plusieurs fichier(s) utilisés comme des bibliothèques (nommés "fichiers bibliothèques" par la suite).
Dans le cas où l'environnement d'exécution est celui d'un programme spécifique, et non pas Wscript,
il n'existe pas de fonction native du VBS pour inclure un fichier externe.
Mais grâce au code d'Omen99, un grand merci à lui, il est possible de faire appel à ces fichiers bibliothèques et donc d'utiliser leurs sous-programmes et fonctions, dans vos fichiers de script principal (équivalent à "Main").
Voici les deux versions de la procédure permettant l'exécution (lecture) d'un fichier :
Version longue :
1 2 3 4 5 6 7
| Sub includeFile(fSpec)
Dim oFSO,oFS,oTxt
Set oFSO = CreateObject("Scripting.FileSystemObject") 'création d 'un objet de type fichier
Set oFS = oFSO.openTextFile(fSpec) ' ouverture du fichier bibliothèque comme un fichier texte
oTxt = oFS.readAll() ' Déversement de tout son contenu dans un objet de type texte (chaine de caractère).
executeGlobal oTxt ' exécution/lecture du contenu par le moteur d'exécution
End Sub |
Version courte :
1 2 3
| Sub includeFile(fSpec)
executeGlobal CreateObject("Scripting.FileSystemObject").openTextFile(fSpec).readAll()
End Sub |
Puis on appelle cette procédure, en lui passant en paramètre le nom complet (cad : path + nom) du fichier bibliothèque :
1 2 3 4 5
| dim Chem_biblio
Chem_biblio = "U:\Cartos\Scripts"
' le contenu du fichier externe sera exécuté dans le script
includeFile Chem_biblio & "\Bibliotheque.vbs" |
On peut ainsi appeler plusieurs fichiers bibliothèques, comme par ex :
1 2 3
| ' le contenu des fichiers externes seront exécutés dans le script
includeFile Chem_biblio & "\Bibliotheque.vbs"
includeFile Chem_biblio & "\travail\biblio_gest_fichier.vbs" |
les fichiers Bibliothèques, peuvent contenir :
- des déclarations de variables, de constantes
- des fonctions
- des procédures
Problèmes potentiels
Si à l'exécution de votre script principal, vous avez une erreur non localisée (cad sans référence d'une ligne de code de votre script principal) ou localisé sur l'instruction "executeGlobal …" de la procédure includeFile(fSpec)
Alors vous avez vraisemblablement une erreur de syntaxe ou d'exécution dans un des fichiers bibliothèques.
Pour éviter cela, vous pouvez commencer par exécuter manuellement votre fichier bibliothèque :pour cela le charger dans votre environnement d'exécution VBSCript, comme s'il s'agissait du script normal, puis de l'exécuter.
=> Les éventuelles erreurs de syntaxes seront alors bien identifiées et localisées.
=> les corriger, sauvegarder le ficher bibliothèque et retester le script principal….
Pour les erreurs d'exécution, c'est un peu plus compliqué, puisque que généralement les fichiers bibliothèques ne contiennent pas de script directement exécutable (équivalent à la procédure main).
Vous pouvez alors créer dans votre fichier bibliothèque une procédure de test, comme par ex :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| '-----------------------------------------------------------------------------
' programme de test du code de ce fichier
' pour cela mettre en commentaire les lignes "sub test" et "end sub ' test"
'-----------------------------------------------------------------------------
sub test
init ' test de la sous procédure d'initialisation
dim Fich
dim Ch_Sortie '-- objet contenant les choix des canaux d'impression (écran; fichier, etc...)
set Ch_Sortie = choix_sortie_result ' -- choix des sorties/impression du script
Fich = choix_fichier ' test appel de la fonction choix_fichier
restaur_hidden_symbol Ch_Sortie, Fich ' test de la procédure
end sub ' test |
Que vous vous allez activer, (par ex en mettant en commentaire l'instruction "sub test" et "end sub 'test" correspondante, puis exécuter manuellement votre fichier bibliothèque.=> Après c'est de la recherche et correction classiques de bug …
Une fois résolu, ne pas oublier de "désactiver" la procédure de test, en décommettant les instructions "sub test" et "end sub 'test"
Partager