|
Voici quelques exemples de manipulations de fichiers à l'aide de l'objet File...
Faire référence à un fichier
Pour pouvoir manipuler un fichier (ou obtenir des informations sur le
fichier), vous devez y faire
référence grâce à un objet File. Ceci peut se faire de plusieurs manières :
- La méthode
.GetFile de l'objet racine FileSystemObject
donne un accès direct à un fichier.
- Si un objet
Folder pointe sur un dossier existant, sa
collection Files donne la liste de tous
ses fichiers, et permet donc d'en extraire un particulier.
Dans tous les cas, vous pouvez désigner un fichier par son chemin local (C:\Mes documents\test.txt)
ou réseau (\\serveur\partage\test.txt).
Le petit programme ci-dessous illustre ces variantes. Pour l'exécuter :
- Recopiez le code ci-dessous dans un module standard Access.
- Faites apparaître la fenêtre de Visual Basic Editor
(Ctrl + G).
- Placez le curseur au milieu du listing.
Cliquez
sur l'icône Exécuter Sub/UserForm.
Function FileInstance()
Dim fso As Scripting.FileSystemObject
Dim fld As Scripting.Folder
Dim fle As Scripting.File
Set fso = New Scripting.FileSystemObject
Set fle = fso.GetFile("C:\Mes documents\test.txt")
Debug.Print "TAILLE DU FICHIER: ", fle.Size
Set fld = fso.GetFolder("C:\Mes documents")
Set fle = fld.Files("test.txt")
Debug.Print "DATE DE CREATION: ", fle.DateCreated
Set fle = Nothing
Set fld = Nothing
Set fso = Nothing
End Function
Décrire un fichier à l'aide de l'objet File
Comme il a été dit plus haut, l'objet Folder dé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 en "Documents And Settings\votre nom\Mes documents"
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.
Function FileInfo()
Dim fso As Scripting.FileSystemObject
Dim fle As Scripting.File
Dim strFile As String
Set fso = New Scripting.FileSystemObject
strFile = "C:\Mes documents\test.txt"
If Not fso.FileExists(strFile) Then
MsgBox "Le fichier [" & strFile & "] n'existe pas.", vbExclamation
Exit Function
End If
Set fle = fso.GetFile(strFile)
Debug.Print "--- INFOS FICHIER"
With fle
Debug.Print "NOM: ", , .Name
Debug.Print "CHEMIN: ", , .Path
Debug.Print "DOSSIER PARENT: ", .ParentFolder
Debug.Print "NOM DOS: ", , .ShortName
Debug.Print "CHEMIN DOS: ", , .ShortPath
Debug.Print "DISQUE: ", , .Drive.DriveLetter
Debug.Print "DATE DE CREATION: ", .DateCreated
Debug.Print "DERNIERE MODIFICATION: ", .DateLastModified
Debug.Print "DERNIER ACCESS: ", .DateLastAccessed
Debug.Print "TAILLE: ", , .Size
Debug.Print "TYPE: ", , .Type
Debug.Print "ATTRIBUTS: ", , .Attributes & " - " & FileAttrib(.Attributes)
End With
Set fle = Nothing
Set fso = Nothing
End Function
Function FileAttrib(ByVal intFileAttrib As Scripting.FileAttribute)
Dim strType As String
strType = ""
If intFileAttrib And Alias Then strType = "Raccourci"
If intFileAttrib And Archive Then strType = strType & ", Archive"
If intFileAttrib And Compressed Then strType = strType & ", Compressé"
If intFileAttrib And Directory Then strType = strType & ", Répertoire"
If intFileAttrib And Hidden Then strType = strType & ", Caché"
If intFileAttrib And Normal Then strType = strType & ", Normal"
If intFileAttrib And ReadOnly Then strType = strType & ", Lecture seule"
If intFileAttrib And System Then strType = strType & ", Système"
If intFileAttrib And Volume Then strType = strType & ", Volume"
If Left(strType, 2) = ", " Then strType = Mid(strType, 3)
FileAttrib = strType
End Function
Résultat :

A propos des attributs de fichier ou de répertoire :
Un fichier ou un répertoire peut avoir plusieurs caractéristiques (ou
attributs). Celles-ci sont données par sa propriété Attributes,
qui peut prendre les valeurs Alias, Archive, Compressed,
etc. Ces valeurs peuvent être combinées entre elles : par exemple, un
fichier peut être marqué comme "archive" (valeur numérique : 32),
"caché" (valeur numérique : 2) et "lecture seule"
(valeur numérique : 2).
Pour lire l'un des attributs, il faut donc effectuer un AND logique. Par
exemple : si Attributes And Hidden est différent de 0, le
fichier est caché. Et ainsi de suite pour les autres attributs. Jetez un oeil
à la fonction FileAttrib() qui affiche les attributs en clair en
utilisant cette technique.
Si au contraire vous devez définir les attributs (et non les lire), utilisez
un OR logique pour les combiner. Du style : fle.Attributes = Hidden Or Archive Or ReadOnly.
Manipuler les fichiers
Voici un ensemble de listings qui permettent différentes opérations sur
les fichiers.
Deux petites choses :
- Pensez à tester ce qui suit sur des fichiers sans importance, conseil
d'ami :o)
- La création et lecture de fichiers texte n'est pas abordée ici.
Consultez plutôt la page : Lecture/écriture
de fichiers texte.
Vous pouvez tester chaque fonction directement, en faisant apparaître la
fenêtre (Ctrl + G)
puis en y tapant par exemple :
FileRename "C:\Mes documents\fichier01", "fichier02" (puis Entrée).
Sinon, le dernier listing en bas de page fait un beau récapitulatif de tout
ça !
Renommer un fichier
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 fonction FileMove() plus
loin).
Function FileRename(ByVal strFile As String, _
ByVal strNewName As String)
Dim fso As Scripting.FileSystemObject
Dim fle As Scripting.File
Set fso = New Scripting.FileSystemObject
If Not fso.FileExists(strFile) Then
MsgBox "Le fichier [" & strFile & "] n'existe pas.", vbExclamation
Exit Function
End If
Set fle = fso.GetFile(strFile)
fle.Name = strNewName
Set fle = Nothing
Set fso = Nothing
End Function
Dupliquer un fichier
Function FileCopy(ByVal strSourceFile As String, _
ByVal strTargetFile As String)
Dim fso As Scripting.FileSystemObject
Dim fle As Scripting.File
Set fso = New Scripting.FileSystemObject
If Not fso.FileExists(strSourceFile) Then
MsgBox "Le fichier [" & strSourceFile & "] n'existe pas.", _
vbExclamation
Exit Function
End If
fso.CopyFile strSourceFile, strTargetFile
Set fle = Nothing
Set fso = Nothing
End Function
Déplacer un fichier
Cette technique peut être utilisée pour déplacer véritablement un
fichier, mais pourquoi pas pour lui changer de nom... (ceci dit, la technique
vue plus haut est plus efficace !)
Function FileMove(ByVal strSourceFile As String, _
ByVal strTargetFile As String)
Dim fso As Scripting.FileSystemObject
Dim fle As Scripting.File
Set fso = New Scripting.FileSystemObject
If Not fso.FileExists(strSourceFile) Then
MsgBox "Le fichier [" & strSourceFile & "] n'existe pas.", vbExclamation
Exit Function
End If
fso.MoveFile strSourceFile, strTargetFile
Set fle = Nothing
Set fso = Nothing
End Function
Supprimer un fichier
Function FileDelete(ByVal strFile As String)
Dim fso As Scripting.FileSystemObject
Dim fle As Scripting.File
Set fso = New Scripting.FileSystemObject
If Not fso.FileExists(strFile) Then
MsgBox "Le fichier [" & strFile & "] n'existe pas.", vbExclamation
Exit Function
End If
fso.DeleteFile strFile
Set fle = Nothing
Set fso = Nothing
End Function
Ze MegaDemo II :o) !
Voici une compil' qui fait met en oeuvre les listings précédents.
Aucune variable n'est utilisée pour simplifier le code, à vous d'améliorer
!
Exécutez le programme, et, à chaque fois que le programme affiche un
message, profitez-en pour vérifier ses effets dans l'Explorateur Windows...
Note : le programme commence par faire appel à une fonction FileWrite()
pour créer un fichier texte quelconque. Cette fonction est
détaillée sur la page Lecture/écriture
de fichiers texte.
Function FileMegaDemo()
FileWrite "C:\Mes documents\SelfAccess01.txt"
MsgBox "Fichier [SelfAccess01.txt] créé..."
FileCopy "C:\Mes documents\SelfAccess01.txt", _
"C:\Mes documents\SelfAccess02.txt"
MsgBox "Fichier [SelfAccess01.txt] dupliqué sous [SelfAccess02.txt]..."
FileRename "C:\Mes documents\SelfAccess02.txt", "SelfAccess03.txt"
MsgBox "Fichier [SelfAccess02.txt] renommé en [SelfAccess03.txt]..."
FileMove "C:\Mes documents\SelfAccess03.txt", "C:\SelfAccess03.txt"
MsgBox "Fichier [SelfAccess03.txt] déplacé dans [C:\]"
FileDelete "C:\Mes documents\SelfAccess01.txt"
FileDelete "C:\SelfAccess03.txt"
MsgBox "Fichiers [SelfAccess01.txt] et [SelfAccess03.txt] supprimés..."
End Function
|