Tipp 1.21 - TMP Datei erstellen
Wie kann ich eine temporäre Arbeitsdatei erstellen?
Mit dieser Funktion können Sie eine temporäre Arbeitsdatei erstellen. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.
Verwendete Win32-Api-Aufrufe und Typen: DeleteFile, GetTempPath, GetTempFileName
Beispiel:
Option Explicit Public Declare Function DeleteFile _ Lib "kernel32" Alias _ "DeleteFileA" _ (ByVal lpFileName As String) _ As Long Public Declare Function GetTempPath _ Lib "kernel32" Alias _ "GetTempPathA" _ (ByVal nBufferLength As Long, _ ByVal lpBuffer As String) _ As Long Public 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 Public Function GetTempFile( _ Optional sExtension As String = vbNullString, _ Optional bKillFile As Boolean = True) _ As String '// ----------------------------------------------------- '// Methode: | Temporäre Arbeitsdatei erstellen '// ----------------------------------------------------- '// Parameter: | sExtension (optional) '// | - alternative Dateiendung '// | bKillFile (optional) '// | - die Datei wird gelöscht '// ----------------------------------------------------- '// Rückgabe: | kompletter Pfad der temporären '// | Arbeitsdatei '// ----------------------------------------------------- '// Autor: | Stefan Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- Const csPREFIX As String = "$$_" Dim sTmpFile As String Dim sBuffer As String Dim sTmpDir As String Dim lResult As Long sBuffer = VBA.String(260, 0) GetTempPath Len(sBuffer), sBuffer sTmpDir = VBA.Left$(sBuffer, _ VBA.InStr(sBuffer, vbNullChar) - 1) sBuffer = VBA.String(260, 0) GetTempFileName sTmpDir, csPREFIX, 0, sBuffer sTmpFile = VBA.Left$(sBuffer, _ VBA.InStr(sBuffer, vbNullChar) - 1) If bKillFile Then Call DeleteFile(sTmpFile) If Len(sExtension) > 0 Then sTmpFile = Left$(sTmpFile, _ InStrRev(sTmpFile, ".")) + sExtension End If GetTempFile = sTmpFile End Function