Tipp 1.26 - Datei offen

Wie kann ich prüfen, ob eine Datei geöffnet ist?

Mit dieser Funktion können Sie prüfen, ob eine Datei geöffnet ist. 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.

Api-AufrufeVerwendete Win32-Api-Aufrufe und Typen: GetLastError, lopen, lclose

Beispiel:

Option Explicit
 
Public Declare Function GetLastError _
    Lib "kernel32" () _
    As Long
Public Declare Function lopen _
    Lib "kernel32" Alias _
    "_lopen" _
    (ByVal lpPathName As String, _
    ByVal iReadWrite As Long) _
    As Long
Public Declare Function lclose _
    Lib "kernel32" Alias _
    "_lclose" _
    (ByVal hFile As Long) _
    As Long
 
Public Function IsFileAlreadyOpen( _
                sFilename As String) _
                As Boolean
  '// -----------------------------------------------------
  '// Funktion:  | Ermittelt, ob eine Datei bereits
  '//            | geöffnet ist.
  '// -----------------------------------------------------
  '// Parameter: | sFilename = gültiger Dateipfad
  '// -----------------------------------------------------
  '// Rückgabe:  | True, wenn die Datei geöffnet ist,
  '//            | sonst False
  '// -----------------------------------------------------
  '// Autor:     | Stefan Kulpa
  '//            | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  Dim hFile   As Long
  Dim lastErr As Long
 
  hFile = -1
  lastErr = 0
 
  hFile = lopen(sFilename, &H10)
  If hFile = -1 Then
    lastErr = Err.LastDllError
  Else: lclose (hFile)
  End If
  If (hFile = -1) And (lastErr = 32) Then
    IsFileAlreadyOpen = True
  Else: IsFileAlreadyOpen = False
  End If
 
End Function