|
APIs: Retourner un nom unique de fichier, en séquence |
Author(s) Dev Ashish |
|
(Q) Il me faut exporter à peu près 50 fichiers, depuis ma base de données, chaque
nuit. Le nom des fichiers sont du genre tmp00010.dat, tmp00011.dat, etc. Je sais comment
générer chaque exportation à travers d'une boucle, mais comment générer la séquence
de noms, tous uniques, pour ces fichiers, étant connu le répertoire où ils doivent
être.
(A) Couper-coller la fonction suivante dans un nouveau module, puis utiliser la fonction fUniqueFile pour générer une nom de fichier unique séquentiel. La fonction vérifie la
préexistence de change nom de fichier avant de le créer.
Function fUniqueFile(strDir As String, intMaxFiles As Integer, _
strPadChar As String, strFileInitName As _
String, Optional strFileExt) As String
Dim strtmpFile As String
Dim strTmp As Variant
Dim i As Integer
Dim boolNextI As Boolean
On Error GoTo funiqueFile_Error
For i = 1 To intMaxFiles
boolNextI = False
If Not IsMissing(strFileExt) Then
strTmp = Dir(strDir & "\*." & strFileExt)
strtmpFile = strFileInitName & Lpad(CStr(i), strPadChar, 5) _
& "." & strFileExt
Else
strTmp = Dir(strDir & "\*.*")
strtmpFile = strFileInitName & Lpad(CStr(i), strPadChar, 5)
End If
Do While strTmp <> ""
If strTmp = strtmpFile Then
boolNextI = False
Exit Do
Else
boolNextI = True
End If
strTmp = Dir
Loop
If boolNextI Then
Exit For
End If
Next i
fUniqueFile = strtmpFile
fUniqueFile_Success:
Exit Function
funiqueFile_Error:
fUniqueFile = vbNullString
Resume fUniqueFile_Success
End Function
Function Lpad(MyValue$, MyPadCharacter$, MyPaddedLength%)
Dim PadLength As Integer
Dim X As Integer
PadLength = MyPaddedLength - Len(MyValue)
Dim PadString As String
For X = 1 To PadLength
PadString = PadString & MyPadCharacter
Next
Lpad = PadString + MyValue
End Function
|