
| auteur : Romain Puyfoulhoux | En passant soit par les API, soit par le FileSystemObject. En natif, VB ne donne accès qu'à la date de dernière
modification, via la fonction FileDateTime(). Si vous choisissez de passer par les API, voici les déclarations nécessaires :
Private Const MAX_PATH = 260
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Const INVALID_HANDLE_VALUE = - 1
Private Declare Function FindFirstFile Lib " kernel32 " Alias " FindFirstFileA " _
(ByVal lpFileName As String , _
lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib " kernel32 " (ByVal hFindFile As Long) As Long
Private Declare Function FileTimeToSystemTime Lib " kernel32 " _
(lpFileTime As FILETIME, _
lpSystemTime As SYSTEMTIME) As Long
Private Declare Function FileTimeToLocalFileTime Lib " kernel32 " _
(lpFileTime As FILETIME, _
lpLocalFileTime As FILETIME) As Long
|
Les dates d'un fichier sont récupérées par la fonction FindFirstFile qui attend en paramètres le nom du fichier
et une structure WIN32_FIND_DATA qui reçoit les informations obtenues. Les dates de création, de dernière modification et
de dernier accès sont stockées respectivement dans les champs ftCreationTime, ftLastWriteTime et ftLastAccessTime,
tous de type FILETIME. Pour avoir des dates sous une forme exploitable, quelques conversions sont nécessaires.
Notre fonction FileTimeToDate() convertit une date de type FILETIME en type Date. Private Function FileTimeToDate (ft As FILETIME) As Date
Dim datelocale As FILETIME, datesys As SYSTEMTIME
If FileTimeToLocalFileTime (ft, datelocale) = 0 Then Exit Function
If FileTimeToSystemTime (datelocale, datesys) = 0 Then Exit Function
FileTimeToDate = CDate (datesys. wDay & " " & datesys. wMonth & " " & datesys. wYear & " " & _
datesys. wHour & " : " & datesys. wMinute & " : " & datesys. wSecond )
End Function
|
La partie principale du code est assez simple : Dim findData As WIN32_FIND_DATA, hFind As Long
hFind = FindFirstFile (" c:\autoexec.bat " , findData)
If hFind = INVALID_HANDLE_VALUE Then Exit Sub
FindClose hFind
MsgBox " Crée le : " & FileTimeToDate (findData. ftCreationTime )
MsgBox " Modifié le : " & FileTimeToDate (findData. ftLastWriteTime )
MsgBox " Accédé le : " & FileTimeToDate (findData. ftLastAccessTime )
|
Pour terminer, voici la version avec le FileSystemObject : Dim fso As FileSystemObject, f As File
Set fso = New FileSystemObject
On Error GoTo fin
Set f = fso. GetFile (" c:\autoexec.bat " )
MsgBox " Crée le : " & f. DateCreated
MsgBox " Modifié le : " & f. DateLastModified
MsgBox " Accédé le : " & f. DateLastAccessed
Set f = Nothing
fin :
Set fso = Nothing
|
|
lien : FAQ VB
|
| auteur : Ludolitaliano | On peut utiliser la fonction Dir() :
Dim NomFichier as string
NomFichier= Dir (" C:\NomDuRepertoire\*.txt " )
|
Ici, NomFichier reçoit "UnFichier.txt" le premier fichier texte d'extension txt du répertoire.
Vous pouvez réappeler la ligne qui suit pour avoir le nom du fichier suivant :
NomFichier= Dir (" C:\NomDuRepertoire\*.txt " )
|
Lorsqu'il n'y aura plus de fichier d'extension txt, la variable NomFichier sera nulle.
|
| auteur : FRED.G | Il suffit de référencer la librairie Micosoft Scripting Runtime afin de pouvoir utiliser l'objet FileSystemObject.
Ensuite, on peut utiliser un code comme celui-ci :
Dim fso as new scripting. filesystemobject
Dim fld as scripting. folder
Set fld = fso. getfolder (" c:\Chemin\EtNomDu\Dossier " )
Msgbox fld. Size
Set fld = nothing
Set fso = nothing
|
|
| auteur : Abelman | Debug. Print FileLen (" nomdufichier " )
|
|
lien : FAQ VB
|
| auteur : Team Access | Voici une méthode simple utilisant le FileSystemObject. Placez ce code dans un module : Public Enum UniteMemoire
octets = 1
kiloOctets = 2
megaOctets = 3
End Enum
Public Function TailleRepertoire (f As Folder, Optional unite As UniteMemoire = 1 ) As Long
Dim s As Long
s = f. Size
Select Case unite
Case 2 :
TailleRepertoire = Int (s / 1024 )
Case 3 :
TailleRepertoire = Int (s / 1048576 )
Case Else :
TailleRepertoire = s
End Select
End Function
|
Un exemple d'utilisation : Private Sub Test ()
Dim fs As FileSystemObject, f As Folder, strTaille As String
Set fs = New FileSystemObject
Set f = fs. GetFolder (" c:\windows " )
strTaille = Format (TailleRepertoire (f), " ##,##0 octets " ) & vbCrLf & _
Format (TailleRepertoire (f, kiloOctets), " ##,##0 Ko " ) & vbCrLf & _
Format (TailleRepertoire (f, megaOctets), " ##,##0 Mo " )
MsgBox strTaille
End Sub
|
|
lien : FAQ VB
|
| auteur : Cafeine |
Pour obtenir les propriétés d'un PDF (nom, titre, etc.), il faut lire le fichier en mode binary.
L'utilisation des RegExp permettra d'accéder aux informations recherchées. C'est ce que fait la fonction suivante :
Function GetPDFTitle (ByVal strFic As String , strObj As String ) As String
Dim fic As Integer
Dim strExp As String
Dim strBuff As String * 1024
Dim i As Integer
Dim reg As VBScript_RegExp_55. RegExp
Dim Match As VBScript_RegExp_55. Match
Dim Matches As VBScript_RegExp_55. MatchCollection
Set reg = New VBScript_RegExp_55. RegExp
reg. Global = True
reg. MultiLine = False
reg. IgnoreCase = True
reg. Pattern = " / " & strObj & " \((.*)\) "
Reset
fic = FreeFile
Open strFic For Binary Access Read As #fic
Do While Not EOF (fic)
Get #fic, , strBuff
strExp = strExp & strBuff
If reg. Test (strExp) = True Then
Set Matches = reg. Execute (strExp)
For Each Match In Matches
GetPDFTitle = Match. SubMatches (0 )
Next Match
Exit Function
Else
strExp = right (strExp, 1024 )
End If
Loop
Reset
Set Match = Nothing
Set Matches = Nothing
Set reg = Nothing
End Function
|
Exemple d'utilisation :
getpdftitle ( " d:\temp\20060331164202.pdf " , " Title " )
|
Il est possible de remplacer title par un des champs suivants :
- CreationDate
- ModDate
- Title
- Creator
- Author
|
lien : Tutoriel : Le PDF gratuit pour Access
lien : Les expressions rationnelles / régulières dans Access par la pratique
|
| auteur : Cafeine |
Au moyen d'une fonction qui tente d'ouvrir un fichier en écriture, en cas d'erreur retournée, cela indique que le fichier est déjà ouvert, dans le cas contraire, on considère qu'il est fermé.
Function IsFileOpen (ByVal strFic As String ) As Boolean
Dim fic As Integer
On Error Resume Next
fic = FreeFile ()
Open strFic For Input Access Read Lock Read Write As fic
If Err . Number = 0 Then
IsFileOpen = False
Close fic
Else
IsFileOpen = True
End If
End Function
|
|
| auteur : random | Ci-joint vous trouverez une Fonction à ajouter dans un nouveau module qui vous permettra de compter le nombre de fichiers d'une ou plusieurs extensions voulues dans répertoire donné : Function nbfich (chemin As String , ParamArray termin () As Variant) As Long
Dim fichier As String
Dim extension As Variant
Dim compteur As Long
For Each extension In termin
fichier = dir (chemin & " \*. " & extension)
Do Until fichier = " "
compteur = compteur + 1
fichier = dir
Loop
Next extension
nbfich = compteur
End Function
|
Voici comment appeler cette Fonction : nbfich (" c:\mesimages " ," gif " ," bmp " ," pcx " )
|
Vous pouvez mettre une ou plusieurs extensions séparées par des virgules.
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2004
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|