Les interactions Windows
Les API Windows
1. Définition
Une API (Application Programming Interface) est une série de fonctions système du système d’exploitation qui peuvent être appelées à partir de VBA. Ces fonctions sont accessibles dans des fichiers DLL des répertoires système.
L’utilisation d’API est à privilégier dans certains cas de figure, notamment :
-
l’usage d’informations système qui ne sont pas exploitables nativement avec VBA ;
-
l’accélération possible du code : le VBA n’étant pas le langage le plus rapide, il reste néanmoins possible d’utiliser des API développées dans d’autres langages plus véloces pour arriver à des performances optimisées ;
-
l’optimisation de l’application en termes de poids, l’utilisation d’API étant moins coûteuse que celle d’ActiveX.
Il est fréquent que l’usage des API provoque quelques réserves chez les développeurs, notamment à cause de la faiblesse de la documentation disponible, le manque d’information sur la programmation interne des API, mais également parce que manipuler des fonctions système reste une source possible de risque d’instabilité des applications et du système d’exploitation au sein de l’environnement informatique.
2. Déclaration d’une API
L’appel des fonctions API dans le corps du programme se faisant comme pour n’importe quelle autre fonction ou procédure, il reste néanmoins une principale différence lors de la déclaration.
a. Syntaxe générale
La syntaxe générale de déclaration d’une API est la suivante :
[Private ou Public] Declare [PtrSafe] Function ou Sub Nom Lib "NomLibrairie" ...
L’objet FileSystemObject
1. Introduction
En dehors des fonctions basiques que propose le VBA pour accéder et manipuler les fichiers et répertoires, il existe un objet des plus pratiques. L’objet FileSystemObject est disponible à partir de la librairie Microsoft Scripting Runtime.
2. Hiérarchie de l’objet
Le schéma suivant représente la hiérarchie des principaux objets et collections du type FileSystemObject.
3. Gestion des disques
Il est possible de parcourir la collection des disques Drives. Un disque est un objet Scripting.Drive.
a. Propriétés de l’objet Drive
Propriété |
Description |
AvailableSpace |
Représente la place disponible sur le disque, exprimée en octets. |
DriveLetter |
Représente la lettre utilisée par le système pour accéder au disque. |
DriveType |
Représente le type de disque (CDRom, Fixed, RamDisk, Remote, Removable ou UnknownType). |
FileSystem |
Représente le type de système du disque (NTFS, FAT). |
FreeSpace |
Représente la place libre sur le disque, exprimée en octets. |
IsReady |
Représente une valeur booléenne indiquant si le disque est disponible (par exemple présence d’une clé USB sur le port USB en façade). |
Path |
Représente le chemin d’accès au disque (I: par exemple). |
RootFolder |
Représente le dossier racine (I:\ par exemple). |
SerialNumber |
Représente le numéro de série du disque. |
ShareName |
Représente le nom de partage du disque (retournera une chaîne de caractères vide si le disque n’est pas partagé). |
TotalSize |
Représente la taille totale du disque, exprimée en octets. |
VolumeName |
Représente le nom du volume du disque (exemple DATA). |
b. Exemple
Voici par exemple une procédure qui liste les disques disponibles, en indiquant pour chacun leurs...
Les fichiers texte
Les fichiers texte sont parmi les éléments les plus manipulés en programmation, que cela soit pour envoyer ou pour recevoir des informations. Il est donc important de traiter leur manipulation dans cette section. Pour rappel, un fichier texte est un fichier composé d’une ou de plusieurs lignes séparées par une combinaison des caractères retour chariot et changement de ligne : vbCr & vbLf ou encore vbCrLf.
1. Accès séquentiel
Historiquement, le premier moyen d’accéder et de lire un fichier en VBA est l’accès séquentiel : le fichier est d’abord ouvert avec la méthode Open, et un numéro lui est attribué jusqu’à sa fermeture.
a. Syntaxe générale
La syntaxe générale d’ouverture d’un fichier est la suivante :
Open Emplacement For Input|Output|Append As Numero
Le fichier peut être ouvert en lecture seule, en écriture ou en ajout.
Pour fermer le fichier une fois son usage terminé, la syntaxe générale est la suivante :
Close Numero
b. Lecture
Pour ouvrir un fichier en lecture seule, la syntaxe est la suivante :
Open Emplacement For Input As Numero
La variable Numero ne peut pas être utilisée plusieurs fois tant que le fichier auquel le numéro est attribué reste ouvert. Pour ne pas avoir de conflit de numérotation, la fonction FreeFile retourne une valeur correcte comprise entre 1 et 255.
Dim NumFic As Integer
NumFic = FreeFile
Open "U:\ENI\exemple.txt" For Input As NumFic
Si la numérotation entre 1 et 255 n’est plus suffisante, il reste la possibilité de générer un nombre valide entre 256 et 511 grâce à l’appel de la fonction FreeFile avec le paramètre 1 :
NumFic = FreeFile(1)
Une fois...