Home
Home

--- Soumis par Terry Kreft---

(Q)    Comment former un nom de fichier unique?

(A)    Couper-coller le code ci-dessous dans un nouveau module et utiliser la syntaxe suivante pour obtenir l'effet annoté.


'Call TempFile(False) pour obtenir le nom (unique) seulement ou
'Call TempFile(True) pour créer le fichier  (0 bytes)

'**************** Code Start **********************
'This code was originally written by Terry Kreft. 
'It is not to be altered or distributed, 
'except as part of an application. 
'You are free to use it in any application,  
'provided the copyright notice is left unchanged.
'Ce code fut originalement écrit par Terry Kreft. 
'Il ne doit être ni altéré, ni distribué
'sauf comme partie intégrée à une application.
'Vous êtes libre d'utiliser ce code 
'à la condition de laisser cette note, sans modification.
'
'Code Courtesy of
'Terry Kreft

Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
    (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" _
    (ByVal lpszPath As String, ByVal lpPrefixString As String, _
    ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
Function TempDir() As String
Dim lngRet As Long
Dim strTempDir As String
Dim lngBuf As Long
    strTempDir = String$(255, 0)
    lngBuf = Len(strTempDir)
    lngRet = GetTempPath(lngBuf, strTempDir)
    If lngRet > lngBuf Then
        strTempDir = String$(lngRet, 0)
        lngBuf = Len(strTempDir)
        lngRet = GetTempPath(lngBuf, strTempDir)
    End If
    TempDir = Left(strTempDir, lngRet)
End Function
'Crée et, ou, retourne le nom d'un fichier temporaire
'Create determine si on crée ou si on ne retourne que le nom.
'lpPrefixString definit les trois premières lettres du fichier
'               (si laissé en blanc, on utilisera  "tmp")
'lpszPath definit le répertoire où sera créé le fichier, laissé en blanc
'on utilisera le répertoire pour fichiers "temporaires"
Function TempFile(Create As Boolean, Optional lpPrefixString As Variant, _
        Optional lpszPath As Variant) As String
Dim lpTempFileName As String * 255
Dim strTemp As String
Dim lngRet As Long
    If IsMissing(lpszPath) Then
        lpszPath = TempDir
    End If
    If IsMissing(lpPrefixString) Then
        lpPrefixString = "tmp"
    End If
    lngRet = GetTempFileName(lpszPath, lpPrefixString, 0, lpTempFileName)
    strTemp = lpTempFileName
    lngRet = InStr(lpTempFileName, Chr$(0))
    strTemp = Left(lpTempFileName, lngRet - 1)
    If Create = False Then
        Kill strTemp
        Do Until Dir(strTemp) = "": DoEvents: Loop
    End If
    TempFile = strTemp
End Function

'**************** Code End **********************