Problem mit Strings

stanialiasalex

Grünschnabel
Hallo!

Ich habe in einer Tabelle in meiner Access-Datenbank ein Feld in dem ein Pfad bzw. Hyperlink gespeichert ist.
Also zum Beispiel: C:\Windows\text.txt

Jetzt möchte ich diesen String so trennen, dass ich den Dateinamen und das Verzeichnis extra habe. Also:
Pfad = "C:\Windows\text.txt"
Dateiname = "text.txt"
Verzeichnis = "C:\Windows\"

Ich habe es schon versucht, nur sind meine Kenntnisse in VBA nicht so gut.
Deswegen bitten ich einen von euch mir zu helfen.

thx, mfg. alex
 
Hallo alex,
Das wäre eine Möglichkeit:
Code:
Option Explicit
Dim sPfad As String, sVerzeichnis As String, sDatName As String

Sub Test()
  sPfad = "C:\Windows\unterverzeichnis\noch eines\text.txt"
  Call Pfad_Dat(sPfad, sVerzeichnis, sDatName)
  Debug.Print "Verzeichnis: " & sVerzeichnis
  Debug.Print "Dateiname: " & sDatName
  Stop
End Sub

Private Sub Pfad_Dat(s_Pfad As String, s_Verzeichnis As String, s_DatName As String)
  Dim iLang As Integer
  Dim iZz As Integer, iZt As Integer
  Dim i As Integer
  Dim sTemp() As String
  iLang = Len(Trim(s_Pfad))
  iZt = 1
  ReDim Preserve sTemp(iZt)
  For iZz = 1 To iLang
    If Mid(Trim(s_Pfad), iZz, 1) <> "\" Then
      sTemp(iZt) = sTemp(iZt) & Mid(Trim(s_Pfad), iZz, 1) ' hier werden die einzelnen Verzeichnisse ermittelt
    Else
      iZt = iZt + 1
      ReDim Preserve sTemp(iZt)
    End If
  Next
  For i = 1 To iZt - 1                                    ' Verzeichnisbaum bilden
    s_Verzeichnis = s_Verzeichnis & sTemp(i) & "\"
  Next
  s_DatName = sTemp(iZt)                                  ' Dateiname = letzter Eintrag
End Sub

Viel Erfolg

Walter Gutermann
 
Hallo alex,
es gibt immer eine bessere (kürzere) Lösung. Mir ist eben noch dies eingefallen:

Code:
Private Sub Pfad_Dat(s_Pfad As String, s_Verzeichnis As String, s_DatName As String)
  Dim iPos As Integer, iZt As Integer
  iPos = 1
  Do While iPos <> 0
    iPos = InStr(iPos + 1, Trim(s_Pfad), "\")
    If iPos <> 0 Then iZt = iPos
  Loop
  s_Verzeichnis = Mid(s_Pfad, 1, iZt)
  s_DatName = Mid(s_Pfad, iZt + 1)
End Sub

Walter Gutermann
 
Mmmh...da sind die von mir genannten Methoden aber praktischer...und vor allem sind sie genau dafür da :-)
Code:
//JScript
fso = new ActiveXObject("Scripting.FileSystemObject");
dir = 'C:/Windows/test.txt';
WScript.echo('Dateiname: ' + fso.GetFileName(dir)+
             '\nVerzeichnis: ' + fso.GetParentFolderName(dir));
 

Neue Beiträge

Zurück