|
|||||||||||||||||||||||||||||||||||
|
Cette ligne démarre toute utilisation du Scripting Runtime. Il s'agit de créer une instance de l'objet FileSystemObject, à
partir de laquelle toutes sortes d'opérations pourront être effectuées
sur le système de fichiers.
|
|
Cette première méthode montre comment obtenir le dossier
racine (RootFolder) du disque C. On affiche ensuite son chemin
(Path). |
|
A supposer qu'un dossier "Mes documents" existe
sur votre disque C (c'est le cas sur Windows 95/98, pas sur Windows
NT/2000/XP), ces 2 lignes montrent comment y faire référence,
directement à partir de l'objet FileSystemObject, puis comment afficher
sa taille.
Le dossier peut également se situer sur le réseau, avec un chemin du
style |
|
Si fld est une variable de type Folder,
fld.SubFolders est
une collection donnant tous ses sous-dossiers (donc fld.SubFolders.Count
donne le nombre de sous-dossiers). On peut accéder à l'un des
sous-dossiers directement par son nom, comme c'est le cas ici.
|
|
La propriété ParentFolder est en quelque sorte inverse de
SubFolders : elle donne le dossier parent d'un objet Folder.
Sauf si le dossier de départ est à la racine du disque (d'où le test
sur la propriété IsRootFolder).
|
Comme il a été dit plus haut, l'objet
Folderdécrit un répertoire. Le programme qui suit illustre toutes les informations que vous pouvez obtenir sur le dossier "Mes documents" de votre disque C (modifiez le dossier si vous travaillez sous Windows NT/2000/XP).
La majorité de ces propriétés est accessible en lecture seule et ne peut donc pas être modifiée en Visual Basic.
' ---
' INFORMATIONS SUR UN REPERTOIRE
' ---
' (c) 2003, Hervé Inisan - www.self-access.com
'
' La fonction FolderInfo() utilise l'objet Folder
' pour lister toutes les caractéristiques d'un répertoire.
' Les résultats sont affichés dans la fenêtre Exécution (Ctrl+G).
Function FolderInfo()
Dim fso As Scripting.FileSystemObject
Dim fld As Scripting.Folder
' Créer une instance du FSO
Set fso=New Scripting.FileSystemObject
' Créer une instance d'un répertoire/dossier
Set fld=fso.GetFolder("C:\Mes documents")
' Afficher les caractéristiques du répertoire
Debug."--- INFOS REPERTOIRE"
With fld
Debug."NOM: ", , .Name
Debug."CHEMIN: ", , .Path
Debug."NOM DOS: ", , .ShortName
Debug."CHEMIN DOS: ", , .ShortPath
Debug."DISQUE: ", , .Drive.DriveLetter
Debug."REPERTOIRE RACINE: ", .IsRootFolder
Debug."REPERTOIRE PARENT: ", .ParentFolder.Path
Debug."NOMBRE DE FICHIERS: ", .Files.Count
Debug."NOMBRE DE SOUS-DOSSIERS: ", .SubFolders.Count
Debug."DATE DE CREATION: ", .DateCreated
Debug."DATE DU DERNIER ACCES: ", .DateLastAccessed
Debug."DERNIERE MODIFICATION: ", .DateLastModified
Debug."TAILLE: ", , .Size
Debug."TYPE: ", , .Type
Debug."ATTRIBUTS: ", , .Attributes&" - "&FileAttrib(.Attributes)
End With
' Libérer les objets
Set fld=Nothing
Set fso=Nothing
End Function
Résultat :
Le listing parle de lui-même. Consultez simplement la page Manipulation des répertoires/dossiers via la collection Folders et l'objet Folder si vous souhaitez quelques compléments sur la fonction
FileAttrib()utilisée ici pour afficher en clair les attributs d'un répertoire.
La fonction ci-dessous affiche la liste de tous les fichiers et répertoires du dossier "
C:\Mes documents", ainsi que leur nombre. Ces informations sont données par les collectionsFilesetSubFoldersde l'objetFolder.' --- ' LISTER LE CONTENU D'UN REPERTOIRE ' --- ' (c) 2003, Hervé Inisan - www.self-access.com ' ' La fonction FolderDetail() utilise l'objet Folder ' pour lister le contenu (répertoires et fichiers) d'un dossier. ' Les résultats sont affichés dans la fenêtre Exécution (Ctrl+G).Function FolderDetail()Dim fso As Scripting.FileSystemObject Dim fld As Scripting.Folder Dim fld2 As Scripting.Folder Dim fle As Scripting.File' Créer une instance du FSOSet fso=New Scripting.FileSystemObject' Créer une instance d'un répertoire/dossierSet fld=fso.GetFolder("C:\Mes documents")' Afficher tous les fichiers du répertoireDebug."NOMBRE DE FICHIERS: "&fld.Files.Count For Each fle In fld.Files Debug.Print fle.Path Next Debug.' Afficher tous les sous-répertoiresDebug."NOMBRE DE SOUS-DOSSIERS: "&fld.SubFolders.Count For Each fld2 In fld.SubFolders Debug.Print fld2.Path Next' Libérer les objetsSet fle=Nothing Set fld2=Nothing Set fld=Nothing Set fso=Nothing End Function
Voici un ensemble de listings qui permettent différentes opérations sur les répertoires.
Deux petites choses :
- Généralement, vous pouvez obtenir le même résultat à partir de l'objet
Folderou de l'objetFileSystemObject. Les listings indiquent ces variantes.- Pensez à tester ce qui suit sur des dossiers sans importance, on n'est pas à l'abri d'une mauvaise-manipulation-de-la-mort-qui-tue...
Vous pouvez tester chaque fonction directement, en faisant apparaître la fenêtre (Ctrl + G) puis en y tapant par exemple :
FolderRename "C:\Mes documents\dossier01", "dossier02"(puis Entrée).
Sinon, le dernier listing en bas de page fait un beau récapitulatif de tout ça !
Renommer un répertoire
Vous pouvez renommer un répertoire de 2 manières : en modifiant sa propriété
Name(qui est accessible en lecture/écriture), ou en déplaçant le répertoire (voir la fonctionFolderMove()plus loin).' --- ' RENOMMER UN REPERTOIRE ' --- ' (c) 2003, Hervé Inisan - www.self-access.com ' ' La fonction FolderRename() renomme un répertoire. ' --- ' Entrée : strOldPath <- Chemin actuel du répertoire'(ex. : "C:\Mes documents\test") ' strNewName <- Nom à donner au répertoire ' (sans le chemin ; ex. : "test99") ' Sortie : Le chemin final du répertoire (modifié ou non).Function FolderRename(ByVal strOldPath As String, _ByVal strNewName As String)As String Dim fso As Scripting.FileSystemObject Dim fld As Scripting.Folder' Créer une instance du FSOSet fso=New Scripting.FileSystemObject' Renommer le répertoireOn Error Resume Next If fso.FolderExists(strOldPath)Then Set fld=fso.GetFolder(strOldPath)fld.Name=strNewName FolderRename=fld.Path Else FolderRename=strOldPath End If' Libérer les objetsSet fld=Nothing Set fso=Nothing End FunctionLa collection
Folders(ou sa varianteSubFolders) comporte une méthode.Addqui permet... d'ajouter un répertoire à un dossier existant. Voyons voir...' --- ' CREER UN REPERTOIRE ' --- ' (c) 2003, Hervé Inisan - www.self-access.com ' ' La fonction FolderAdd() crée un répertoire dans un répertoire parent. ' --- ' Entrée : strPath <- Chemin du répertoire parent ' (ex. : "C:\Mes documents") ' strNewFolder <- Répertoire à créer ' (sans chemin ; ex. : "test")Function FolderAdd(ByVal strPath As String,ByVal strNewFolder As String)Dim fso As Scripting.FileSystemObject Dim fld As Scripting.Folder' Créer une instance du FSOSet fso=New Scripting.FileSystemObject' Créer le sous-répertoireOn Error Resume Next If fso.FolderExists(strPath)Then Set fld=fso.GetFolder(strPath)fld.SubFolders.Add strNewFolder End If' Variante (dans ce cas : strPath et strNewFolder sont des chemins complets) ' If fso.FolderExists(strPath) And (Not fso.FolderExists(strNewFolder)) Then ' fso.CreateFolder strNewFolder ' End If ' Libérer les objetsSet fld=Nothing Set fso=Nothing End Function
Dupliquer un répertoire
' --- ' DUPLIQUER UN REPERTOIRE ' --- ' (c) 2003, Hervé Inisan - www.self-access.com ' ' La fonction FolderCopy() duplique un répertoire et ses sous-répertoires. ' --- ' Entrée : strOldPath <- Chemin actuel du répertoire ' (ex. : "C:\Mes documents\test") ' strTargetPath <- Chemin complet du répertoire à créerFunction FolderCopy(ByVal strSourcePath As String,ByVal strTargetPath As String)Dim fso As Scripting.FileSystemObject Dim fld As Scripting.Folder' Créer une instance du FSOSet fso=New Scripting.FileSystemObject' Dupliquer le répertoireIf fso.FolderExists(strSourcePath)And(Not fso.FolderExists(strTargetPath))Then fso.CopyFolder strSourcePath,strTargetPath,True' Variante : ' Set fld = fso.GetFolder(strSourcePath) ' fld.Copy strTargetPath, TrueEnd If' Libérer les objetsSet fld=Nothing Set fso=Nothing End Function
Déplacer un répertoire
Cette technique peut être utilisée pour déplacer véritablement un répertoire, mais pourquoi pas pour lui changer de nom...
' --- ' DEPLACER UN REPERTOIRE ' --- ' (c) 2003, Hervé Inisan - www.self-access.com ' ' La fonction FolderMove() déplace un répertoire et ses sous-répertoires. ' --- ' Entrée : strOldPath <- Chemin actuel du répertoire à déplacer ' (ex. : "C:\Mes documents\test") ' strNewPath <- Chemin futur du répertoireFunction FolderMove(ByVal strOldPath As String,ByVal strNewPath As String)Dim fso As Scripting.FileSystemObject Dim fld As Scripting.Folder' Créer une instance du FSOSet fso=New Scripting.FileSystemObject' Supprimer le répertoireIf fso.FolderExists(strOldPath)And Not fso.FolderExists(strNewPath)Then fso.MoveFolder strOldPath,strNewPath' Variante : ' Set fld = fso.GetFolder(strOldPath) ' fld.Move strNewPathEnd If' Libérer les objetsSet fld=Nothing Set fso=Nothing End Function
Supprimer un répertoire
' --- ' SUPPRIMER UN REPERTOIRE ' --- ' (c) 2003, Hervé Inisan - www.self-access.com ' ' La fonction FolderDelete() supprime un répertoire et ses sous-répertoires. ' --- ' Entrée : strPath <- Chemin du répertoire à supprimer ' (ex. : "C:\Mes documents\test")Function FolderDelete(ByVal strPath As String)Dim fso As Scripting.FileSystemObject Dim fld As Scripting.Folder' Créer une instance du FSOSet fso=New Scripting.FileSystemObject' Supprimer le répertoireIf fso.FolderExists(strPath)Then fso.DeleteFolder strPath' Variante : ' Set fld = fso.GetFolder(strPath) ' fld.DeleteEnd If' Libérer les objetsSet fld=Nothing Set fso=Nothing End Function
Ze MegaDemo :o) !
Voici une compil' qui fait met en oeuvre les listings précédents.
Aucune variable n'est utilisée pour simplifier le code, mais vous pouvez améliorer tout ça !
Exécutez le programme, et, à chaque fois que le programme affiche un message, profitez-en pour vérifier ses effets dans l'Explorateur Windows...' --- ' MANIPULATION DES REPERTOIRES ' --- ' (c) 2003, Hervé Inisan - www.self-access.comFunction FolderMegaDemo()' Créer un sous-dossier dans 'Mes documents'FolderAdd"C:\Mes documents","SelfAccess01"MsgBox"Sous-dossier [SelfAccess01] créé..."' Créer un sous-sous-dossier (!)FolderAdd"C:\Mes documents\SelfAccess01","SelfAccess02"MsgBox"Sous-sous-dossier [SelfAccess02] créé..."' Dupliquer le sous-dossierFolderCopy"C:\Mes documents\SelfAccess01", _"C:\Mes documents\SelfAccess03"MsgBox"Dossier [SelfAccess01] dupliqué sous le nom [SelfAccess03]..."' Renommer la copieFolderRename"C:\Mes documents\SelfAccess03","SelfAccess04"MsgBox"Dossier [SelfAccess03] renommé en [SelfAccess04]..."' Déplacer la copie dans le dossier de départFolderMove"C:\Mes documents\SelfAccess04", _"C:\Mes documents\SelfAccess01\SelfAccess04"MsgBox"Dossier [SelfAccess04] déplacé dans [SelfAccess01]"' Supprimer les 2 dossiers de testFolderDelete"C:\Mes documents\SelfAccess01"MsgBox"Dossier [SelfAccess01] supprimé..."End Function
| << 4. Manipulation des dossiers (Folders) | [ Sommaire ] | 6. Manipulation des fichiers (Files) >> |
| Cette section vous intéresse ? Abonnez-vous ! |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
Notions de base Jargon Access :o) Syntaxe SQL Programmation ASP Scripting Runtime Le Grenier [FAQ Access] Les tutoriaux Self-Access Les Assistants Access Les livres sur Access ! |
|
Forums Access Abonnement gratuit Télécharger... |
|
Le saviez-vous ? Une base contient au maximum 32768 objets. De quoi voir venir ! A demain pour une nouvelle astuce ! |