PDA

Vollständige Version anzeigen : Teile aus einem String herausnehmen


T.P
18.11.2005, 07:32
Guten Morgen alle zusammen,

leider besitze ich nur sehr geringe Kenntnisse in VBA deshalb hoffe ihr könnt mir hier weiter helfen. Hinter Laufwerke verbirgt sich z.B folgender Pfad:
C:\MP3\Bloodhound Gang\The Bad Touch (Single)\. Mit der unteren Zeile nehme ich den Pfad wegC:\MP3\ allerdings möchte ich nun das in Cells (z,2 ) = alles erscheint was hinter dem 3 "\" steht also in meinem Fall dann The Bad Touch (Single) (Titel der CD) und in Cells (z, 1) dann nur noch der Interpret Bloodhound Gang. Leider kann ich ich die Trennung nur bei " \ " vollziehen da sich der Name der Interpreten und Titel immer ändert. Ich hoffe ich habe mich einiger maßen verständlich ausgedrückt. Schon im voraus vielen Dank für eure Hilfe


Cells(z, 1) = (Mid(Laufwerk, 5, Len(Laufwerk)))
Cells(z, 2) = ?


Gruß Timo

Hajo_Zi
18.11.2005, 08:14
Hallo Timo,

Option Explicit

Sub Timo()
Dim Laufwerk As String
Dim InI As Integer
Dim Z As Long
Z = 1
Laufwerk = "C:\MP3\Bloodhound Gang\The Bad Touch (Single)\"
' erster "\" an Position 3
' zweiten ermitteln
InI = InStr(4, Laufwerk, "\")
' Ordner nach 4. "\" abtrennen
Cells(Z, 1) = Mid(Laufwerk, InStr(InI + 1, Laufwerk, "\") + 1)
End Sub

<img src="http://home.media-n.de/ziplies/images/grusz.gif" align="middle" height="40" alt="Grußformel">
<a href="http://home.media-n.de/ziplies/" target="_blank">
<img border="0" src="http://home.media-n.de/ziplies/images/logo_hajo.gif" align="middle" height="40" alt="Homepage"></a>

T.P
18.11.2005, 09:05
Hallo Hajo,

leider komme ich mit deiner Lösung nicht ganz klar. Was aller wohl mehr daran liegt, das ich nur eine Zeile des Makros abgebildet habe und mich sehr schlecht ausdrücken was VBA betrifft. Deshalb stelle ich hier mal das ganze Makro rein das ich mir aus dem Internet gezogen habe und geringfühig angepasst habe.

Vielleicht wird es so ersichtlicher was ich wil.

Gruß Timo

Public Type BROWSEINFO '
hOwner As Long '
pidlRoot As Long '
pszDisplayName As String '
lpszTitle As String '
ulFlags As Long '
lpfn As Long '
lParam As Long '
iImage As Long '
End Type '
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long



Private z!

Sub Dateisuche(Laufwerk, Dateien)
Dim tmp, Wdhlg, Dateiname As String
On Error Resume Next
If Right(Laufwerk, 1) <> "\" Then Laufwerk = Laufwerk + "\"
tmp = Dir(Laufwerk & Dateien)
Do While Len(tmp)

Dateiname = Laufwerk & tmp
Application.StatusBar = Dateiname
'Die folgenden Angaben können auch in eine Feldvariable
'oder in eine Listbox eingelesen werden:

Cells(z, 1).Select
Cells(z, 1) = (Mid(Laufwerk, 14, Len(Laufwerk))) 'hier den Interpreten
'Cells(z, 2) = " Hier hätte ich gerne den Titel der CD stehen
Cells(z, 3) = tmp 'nur Dateiname
Cells(z, 4) = FileDateTime(Laufwerk & tmp) 'Datum/Zeit
Cells(z, 5) = FileLen(Laufwerk & tmp) 'Größe
Cells(z, 6) = path
z = z + 1
tmp = Dir()
Loop
tmp = Dir(Laufwerk, vbDirectory)
Do While Len(tmp)
If (tmp <> ".") And (tmp <> "..") Then
If (GetAttr(Laufwerk & tmp) And vbDirectory) = vbDirectory Then
Dateisuche Laufwerk & tmp, Dateien '
z = z - 1
Wdhlg = Dir(Laufwerk, vbDirectory)
z = z + 1
Do While Wdhlg <> tmp
Wdhlg = Dir()
Loop
End If
End If
tmp = Dir()
Loop
On Error GoTo 0
Application.StatusBar = False
End Sub


'Aufruf mit dem folgenden Makro
Sub Suchen()
Dim Laufwerk$, Dateien$
'Erste Zeile, in der eine Eintragung erfolgt
z = 2
'Alte Eintragungen löschen
[a2:e50000] = ""
'Den Variablen Laufwerk und Dateien kann auch ein Wert direkt zugewiesen werden.
Laufwerk = "C:\MP3\Musik"
If Laufwerk = "" Then Exit Sub
Dateien = "*.mp3"
'Dateien = InputBox("Nach welchen Dateien soll in" & Chr(10) & " " & Laufwerk & Chr(10) & "gesucht werden (z. B. *.xls)?", "Dateityp", "*.mp3")
If Dateien = "" Then Exit Sub
Dateisuche Laufwerk, Dateien
End Sub

borusse
18.11.2005, 10:30
Sub Timo()

Dim Laufwerk As String
Dim InI As Integer
Dim Z As Long
Z = 1
Laufwerk = "C:\MP3\Bloodhound Gang\The Bad Touch (Single)\"

Dim SuchText, SuchZeichen, Pos1, Pos2
SuchText = Laufwerk ' Zu durchsuchende
' Zeichenfolge.
SuchZeichen = "\" ' Nach "\" suchen.

' Reiner Textvergleich ab Position 8. Das Ergebnis ist 23 als erstes Zeichen nach Ende des Band-Namens.
Pos1 = InStr(8, SuchText, SuchZeichen, 1)
' Gleiches Prinzip für vorherigen Backslash. Das Ergebnis ist 7.
Pos2 = InStr(4, SuchText, SuchZeichen, 1)
' Ausgabe des Ergebnisses
Cells(Z, 1) = Mid(Laufwerk, Pos2 + 1, Pos1 - Pos2 - 1)

End Sub
;)