VBA Tipp: Dateityp einer unbekannten Datei ermitteln

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte den Typ einer unbekannten Grafik-Datei ermitteln.

Lösung

Das leistet die folgende Funktion:

Public Function CheckDateiTyp(Dateipfad As String) As String
 
   'Quelle: http://www.dbwiki.net/
 
 
   Dim buf    As String
   Dim length As Long
   Dim fNum   As Integer
 
   On Error GoTo e
   length = FileLen(Dateipfad)
 
   If length > 64 Then length = 64
   buf = String$(length, vbNullChar)
 
   fNum = FreeFile()
   Open Dateipfad For Binary As fNum
   Get fNum, , buf
   Close fNum
 
   If Left$(buf, 3) = "GIF" And _
      IsNumeric(Mid$(buf, 4, 2)) And _
      Not IsNumeric(Mid$(buf, 6, 1)) Then
 
      CheckDateiTyp = "Graphics Interchange Format (gif)"
 
   ElseIf Mid$(buf, 7, 4) = "JFIF" And _
          Asc(Left$(buf, 1)) = 255 Then
 
      CheckDateiTyp = "JPEG File Interchange Format (jpg;jpeg)"
 
   ElseIf Asc(Left$(buf, 1)) = 137 And _
          Mid$(buf, 2, 3) = "PNG" And _
          Mid$(buf, 5, 2) = vbCrLf Then
 
      CheckDateiTyp = "png"
 
   ElseIf Left$(buf, 2) = "BM" And _
          ((Asc(Mid$(buf, 6, 1)) * 256& + Asc(Mid$(buf, 5, 1))) * 256 _
         + Asc(Mid$(buf, 4, 1))) * 256& + Asc(Mid$(buf, 3, 1)) = FileLen(Dateipfad) Then
 
      CheckDateiTyp = "Windows Bitmap (bmp)"
 
   Else
      CheckDateiTyp = "Format wird (noch) nicht unterstützt"
   End If
 
e:
End Function

Aufruf

   MsgBox CheckDateiTyp(CurrentProject.Path & "\word.bmp")


Wiki hinweis.png

Anmerkung:

Die Funktion kann noch um andere Dateitypen erweitert werden.


Wiki hinweis.png

Tipp:

Wer MSYS2 oder Cygwin unter Windows installiert hat bzw. auf einer Unix-Plattform unterwegs ist, kann den mächtigen file-Befehl verwenden, der sehr viele Dateitypen kennt. Windows 10 Benutzer können auch das Windows Subsystem for Linux installieren, womit ihnen auch der file-Befehl über die Bash zur Verfügung steht.