VBA Tipp: Dateipfad zerlegen

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte einen Dateipfad in Einzelteile zerlegen, und die einzelnen Teile anzeigen:

  • Laufwerksbuchstabe
  • Ordnerpfad
  • Dateiname mit Erweiterung
  • Dateiname ohne Erweiterung
  • Datei-Erweiterung


Lösung 1: FileSystemObject

Das geht mit dem FileSystemObject mit folgender Enumeration und VBA-Funktion, die in einem globalen Modul hinterlegt wird.

Public Enum Pfadteile
  Datei_Laufwerksbuchstabe
  Datei_Ordnerpfad
  Datei_DateinameMitErweiterung
  Datei_DateinameOhneErweiterung
  Datei_Erweiterung
End Enum
 
Public Function PfadZerlegen(ByVal Pfad As String, ByVal Pfadteil As Pfadteile) As String
 
 'Late Binding, kein Verweis auf "Microsoft Scripting Runtime" notwendig
 'Quelle: www.dbwiki.net oder www.dbwiki.de
 
 Dim FSO As Object  'FileSystemObject
 
 Set FSO = CreateObject("Scripting.FileSystemObject")
 
 Select Case Pfadteil
 
   Case Pfadteile.Datei_Laufwerksbuchstabe
     PfadZerlegen = FSO.GetDriveName(Pfad)
 
   Case Pfadteile.Datei_Ordnerpfad
     PfadZerlegen = FSO.GetParentFolderName(Pfad)
 
   Case Pfadteile.Datei_DateinameMitErweiterung
     PfadZerlegen = FSO.GetFileName(Pfad)
 
   Case Pfadteile.Datei_DateinameOhneErweiterung
     PfadZerlegen = FSO.GetBaseName(Pfad)
 
   Case Pfadteile.Datei_Erweiterung
     PfadZerlegen = FSO.GetExtensionName(Pfad)
 
 End Select
 
End Function

Aufruf

 Dim strPfad As String
 
 strPfad = "C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.EXE"
 ' Der Pfad kann auch ein Internet-Pfad sein (da gibt es nur keinen Laufwerksbuchstaben)
 ' strPfad = "http://www.meinedomain.de/meinordner/meinunterordner/bestellung.php"
 
 'Beispiele
 MsgBox PfadZerlegen(strPfad, Datei_Laufwerksbuchstabe)
 MsgBox PfadZerlegen(strPfad, Datei_Ordnerpfad)
 MsgBox PfadZerlegen(strPfad, Datei_DateinameMitErweiterung)
 MsgBox PfadZerlegen(strPfad, Datei_DateinameOhneErweiterung)
 MsgBox PfadZerlegen(strPfad, Datei_Erweiterung)


Lösung 2: VBA-Funktionen

Das geht auch mit VBA-internen Funktionen.

 Dim strPfad As String
 Dim strLaufwerk As String
 Dim strVerzeichnis As String
 Dim strDateiname As String
 Dim strDateiendung As String
 
 strPfad = "C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.EXE"
 
 'Laufwerk
 If Mid(strPfad, 2, 1) = ":" Then
   strLaufwerk = Left(strPfad, 2)
 Else
   strLaufwerk = ""
 End If
 MsgBox "Laufwerk: " & strLaufwerk
 
 'Verzeichnis
 strVerzeichnis = Left(strPfad, InStrRev(strPfad, "\") - 1)
 MsgBox "Verzeichnis: " & strVerzeichnis
 
 'Dateiname
 strDateiname = Mid(strPfad, InStrRev(strPfad, "\") + 1)
 MsgBox "Dateiname: " & strDateiname
 
 'Dateiendung
 If InStrRev(strPfad, ".") = 0 Then
   strDateiendung = ""
 Else
   strDateiendung = Mid(strPfad, InStrRev(strPfad, "."))
 End If
 MsgBox "Dateiendung: " & strDateiendung

Web-Links