Adresse Trennen

Hallo,

Wenn ich diese Adresse habe:

C:\test\test.txt

wie kann ich dann hingehen und das so aufteilen:

C:\

\test

test.txt

?

ich möchte nämlich verschiedene Daten in Textfelder einfügen.

Aber wenn ich habe:

C:\test\test2\test3\test.txt

soll das so sein:

C:\

\test\test2\test3\

test.txt

Danke euch.
 
Mit dieser SUB die leider nicht von mir stammt sondern
von PETER GÖTZ http://www.gssg.de.

Code:
Private Sub SplitPath(ByVal Fullpath As String, _
                                        Drive As String, _
                                        Path As String, _
                                        FileTitle As String)
                                   
    ' Teilt einen in Fullpath übergebenen Pfad in _
      Laufwerk, Pfad u. DateiName auf.
    ' Drive, Path u. FileTitle werden als leere Strings _
      übergeben und werden von SplitPath entspr. gefüllt.
                                                                    
    Const DirSep = "\"
    Dim i As Integer
        
    On Error GoTo Fehler
    
    Drive = ""
    Path = ""
    FileTitle = ""
    
    ' Doppelpunkt nach _
      Laufwerksbuchstabe suchen
    i = InStr(Fullpath, ":")
    If i > 0 Then
        Drive = Left$(Fullpath, i)
        Fullpath = Mid$(Fullpath, i + 1)
        If Left$(Fullpath, 1) = DirSep Then
            Fullpath = Mid$(Fullpath, 2)
        End If
    Else
        ' kein ":" gefunden, _
          Prüfen ob der Pfad mit "\\" beginnt, _
          also ein UNC-Pfad (Netzwerkpfad) ist.
        If Left$(Fullpath, 1) = DirSep Then
            If Not (Mid$(Fullpath, 2, 1) = DirSep) Then
                ' ungültige Pfadangabe, _
                  nur einen führenden "\" gefunden
                Exit Sub
            End If
        End If
    End If
    
       
    
    'Prüfen ob Multiselect genutzt wird
    If InStr(Fullpath, Chr$(0)) <> 0 And Not Left$(Fullpath, 1) = Chr$(0) Then
      For i = 1 To Len(Fullpath)
          If Mid$(Fullpath, i + 1, 1) = Chr$(0) Then
                Exit For
          End If
      Next i
    Else
    'Nur eine Datei ausgewählt
      i = InStrRev(Fullpath, "\")
    End If
       
       
        
    If i Then
        FileTitle = Mid$(Fullpath, i + 1)
        Path = Left$(Fullpath, Len(Fullpath) - Len(FileTitle))
    Else
        ' nur Laufwerk und Dateiname
        FileTitle = Fullpath
    End If
    
    On Error GoTo 0
Exit Sub

Fehler:
    
End Sub


Beispiel Aufruf:

Dim strDrive as String
Dim strPath as String
Dim strFile as String

SplitPath "C:\Test\Test.txt", strDrive, strPath, strFile

MsgBox strDrive
MsgBox strPath
MsgBox strFile
 
Ich habe auch einen Vorschlag:
Ist halt etwas kürzer, aber nur sinnvoll, wenn Du Dinge wie Netzwerkpfad usw. ausschliessen kannst. Im Zweifel nimm Jens' Vorschlag. Hab's nur interessehalber mal geproggt...
Code:
Dim myARR() As String
Dim myDRIVE, myPATH, myFILE
Dim text$

text = Text1.text  'Einfach nur ein Textfeld, in dem der Testpfad steht

myARR = Split(text, "\", -1, vbTextCompare)

For i = 0 To UBound(myARR)
    Select Case i
        Case 0
            myDRIVE = myARR(0) & "\"
        Case 1 To UBound(myARR) - 1
            myPATH = myPATH & myARR(i) & "\"
        Case Else
            myFILE = myARR(i)
    End Select
Next i

MsgBox myDRIVE, , "Laufwwerk"
MsgBox myPATH, , "Pfad"
MsgBox myFILE, , "Datei"
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück