Option Explicit
Option Private Module
' ---------------------------------------------------------
' Funktion fktGetTempFileName
' Eingestellt von: Andre Schau
' Datum: 5. Juno 2012
' Kommentar: Funktion zur Ermittlung eines freien
' Dateinamens
' Parameter: Name des Verzeichnis, optional Prefix
' fuer Dateiname (max. 3 Zeichen)
' Rückgabe: Dateiname
'
' weitere benoetigte Programme und Funktionen
' API-Funktion: GetTempFileName
' Aufruf: Beispiel siehe Sub callGetTempFileName()
' Hinweis: GetTempPath zur Ermittlung des TempPath
' ---------------------------------------------------------
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
'Konstante fuer maximale Laenge der Pfadangabe
Const MAX_PATH = 260
Private Sub callGetTempFileName()
'Variablendeklartion
'String
Dim TempFile$
'Tempfile ermitteln, Parameter ist User's TempPath.
'Siehe API GetTempPath
TempFile = fktGetTempFileName("D:\Test\")
'Wenn TempFile = "" dann
If TempFile = "" Then
'Meldung ausgeben, kein Name ermittelbar
MsgBox "Name fuer Temporaere Datei konnte nicht ermittelt werden."
'Oder (Wenn TempFile nicht "")
Else
'Meldung mit Name ausgeben
MsgBox "Name fuer Temporaere Datei: " & TempFile
'Ende Wenn TempFile = "" dann
End If
End Sub
Private Function fktGetTempFileName(strTempDir As String, _
Optional strPref As String = "~TF") As String
'Variablendeklartion
'Long
Dim Result&
'String
Dim Buff$
'Wenn uebergebenes strTempDir leer, dann Funktion verlassen
'Hinweis: Verzeichnis muss existieren!
If strTempDir = "" Then Exit Function
'Leerstring bilden
Buff = Space$(MAX_PATH)
'temporaeren Dateiname mit API ermitteln
'Result ergibt Laenge des Dateinamens
'bea: Funktion liefert CHR(0) am Ende
' des Dateinamens
'Hinweis: strPref max. 3 Zeichen!
Result = GetTempFileName(strTempDir, strPref, 0&, Buff)
'Wenn Laenge des Namens (Result) = 0 dann Funktion verlassen
If Result = 0 Then Exit Function
'tatsaechliche Laenge des Namens ermitteln
Result = InStr(1, Buff, Chr(0))
'Wenn Laenge des Namens (Result) > 0 dann
If Result > 0 Then
'buff auf Pfadangabe kuerzen und als
'Funktionsergebnis zurueckgeben
fktGetTempFileName = Left$(Buff, Result - 1)
'Oder (Wenn Laenge des Namens (Result) = 0)
Else
'buff als Funktionsergebnis zurueckgeben
fktGetTempFileName = Buff
'Ende Wenn Laenge des Namens (Result) > 0 dann
End If
End Function