Temp-Dateinamen erzeugen
Veröffentlicht am 01.10.2004
Manchmal ergibt sich der Bedarf, eine temporäre Datei anzulegen, in die Sie vorübergehend Daten auslagern wollen. Mit der API-Funktion „GetTempFileName“ können Sie einen zufälligen Dateinamen von Windows erzeugen lassen. Das Temp-Verzeichnis, in dem die Datei erstellt werden soll, läßt sich von der API-Funktion „GetTempPath“ ermitteln.
Beide Funktionen werden in einem Access-Modul wie folgt deklariert:
Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
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
Der erste Parameter der Funktion GetTempFileName enthält den Pfadnamen des Temp-Verzeichnisses, den die Funktion GetTempPath zurückgibt. Der zweite Parameter lpPrefixString ist eine kleine Zeichenkette mit zwei bzw. drei Zeichen, die den Beginn des Dateinames bestimmt. Wenn Sie eine 0 als dritten Parameter übergeben, wird dem Dateinamen ein Wert im Hexadezimalformat vervollständigt. Der vierte Parameter nimmt das Ergebnis der Funktion auf.
Die folgende Beispielprozedur ermittelt zunächt das Temp-Verzeichnis und erzeugt dort einen Temp-Dateinamen:
Private Sub TempDateiErzeugen ()
Dim ret As Long, length As Long
Dim strTempVerz As String, strTempDatei As String
' Verzeichnis ermitteln
strTempVerz = String$(255, 0)
length = Len(strTempVerz)
ret = GetTempPath(length, strTempVerz)
If ret <> 0 Then
strTempVerz = Left$(strTempVerz, ret)
Else
Debug.Print "Verzeichnis konnte nicht ermittelt werden!"
Exit Sub
End If
' Dateinamen erzeugen
strTempDatei = String$(255, 0)
ret = GetTempFileName(strTempVerz, "TJ", 0, strTempDatei)
If ret <> 0 Then
strTempDatei = Left$(strTempDatei, InStr(1, strTempDatei,
".TMP") + 3) ' Nullen abschneiden
Else
Debug.Print "Datei wurde nicht erzeugt!"
End If
End Sub
Diese Beispielprozedur sowie die API-Funktion GetTempFileName erzeugt nicht die Datei selber, sondern nur einen Dateinamen, den Sie verwenden können.
Um die Datei zu erzeugen bzw. öffnen, benutzen Sie die Open-Anweisung:
Open strTempDatei For Output As #1
' Daten in die Temp-Datei schreiben
Close #1
Dateien, die Sie vorübergehen anlegen, sollten Sie nach ihrem Einsatz auch wieder löschen. Dies bewerkstelligen Sie beispielsweise mit Hilfe der Kill-Anweisung.