Tipp 1.13 - Dateitypenbezeichnung ermitteln
Wie kann ich die Dateitypenbezeichnung ermitteln?
Mit dieser Funktion können Sie die Dateitypenbezeichnung einer Datei ermitteln. 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: SHGetFileInfo - SHFILEINFO
Beispiel:
Option Explicit Public Const MAXPATH As Long = 260 Public Type SHFILEINFO hIcon As Long iIcon As Long dwAttributes As Long szDisplayName As String * MAXPATH szTypeName As String * 80 End Type Public Declare Function SHGetFileInfo _ Lib "shell32.dll" Alias _ "SHGetFileInfoA" _ (ByVal pszPath As String, _ ByVal dwFileAttributes As Long, _ psfi As SHFILEINFO, _ ByVal cbFileInfo As Long, _ ByVal uFlags As Long) As Long Public Function GetFileTypeName( _ sFilePath As String) _ As String '// ----------------------------------------------------- '// Methode: | Ermittelt die Dateitypbezeichnung analog '// | des Eigenschaftsfensters a. dem Explorer '// ----------------------------------------------------- '// Parameter: | sFilePath = gültiger Dateipfad '// ----------------------------------------------------- '// Rückgabe: | Dateitypbezeichnung '// ----------------------------------------------------- '// Autor: | Stefan Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- '// Beispiel: '// ?GetFileTypeName("C:\WINNT\system32\notepad.exe") '// = "Anwendung" '// ----------------------------------------------------- Const SHGFI_TYPENAME As Long = &H400 Dim shfi As SHFILEINFO If SHGetFileInfo(ByVal sFilePath, _ 0&, _ shfi, _ Len(shfi), _ SHGFI_TYPENAME) Then If VBA.InStr(shfi.szTypeName, vbNullChar) > 1 Then GetFileTypeName = _ VBA.Left(shfi.szTypeName, _ VBA.InStr(shfi.szTypeName, vbNullChar) - 1) End If End If End Function