VBA Tipp: Kurzen Dateinamen ermitteln

Aus DBWiki
Wechseln zu: Navigation, Suche

Problem

Ich möchte ermitteln, welche "kurzen Dateinamen" (in der 16-bit-Windows 8.3-Notation) Windows den langen Dateinamen zuordnet.

Lösung

Das geht mittels der API-Funktion "GetShortPathName":

Declare Function GetShortPathName Lib "kernel32" Alias _
"GetShortPathNameA" (ByVal lpszLongPath As String, ByVal _
lpszShortPath As String, ByVal lBuffer As Long) As Long
Public Function GetShortPath(Datei As String) As String
Dim Res As Long, Pfad As String
  Pfad = String(255, 0)
  Res = GetShortPathName(Datei, Pfad, Len(Pfad))
  GetShortPath = Mid(Pfad, 1, Res)
End Function

Aufruf

Die Funktion kann man dann z.B. so verwenden:

Dim MyPath as String
MyPath = GetShortPath("C:\Programme\Microsoft Office\MSAccess.exe")
 
' liefert dann z.B.:
C:\PROGRA~1\MI6F40~1\MSAccess.exe

Siehe auch

Die API-Referenz zu GetShortPathName.