Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBA String zerlegen

Frage Entwicklung VB for Applications

Mitglied: Phoboz

Phoboz (Level 1) - Jetzt verbinden

22.02.2013 um 08:21 Uhr, 5507 Aufrufe, 15 Kommentare

Hallo,

folgender String

string = "<Path>C:/Music/Abba/Abba Gold/money.mp3</Path>"

möchte ich so zerlegt haben das er wie folget in der Variablen steht

string = "*money.mp3*"

die Sternchen benötige ich als Jokerzeichen. Und müssen auch vorhanden sein.
Habe mehrere solche Strings *.mp3, die immer so *SongName.mp3* in String stehen sollen:

<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>
<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>

Vllt weiß auch einer eine Lösung wenn der SongName.mp3 an irgendeiner Stelle im String steht, Bsp.:

<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>
<Path>C:/Music/Abba/Mama Mia.mp3/Abba Gold</Path>


Bitte um Hilfe.



Grüße

Phoboz
Mitglied: LordXearo
22.02.2013 um 08:49 Uhr
Hi,

du könntest z.B. nach dem . (Punkt) im String suchen und dann alle Zeichen davor und danach speichern bis zum "/" .

Gruß

Xearo
Bitte warten ..
Mitglied: Phoboz
22.02.2013, aktualisiert um 09:37 Uhr
Hallo,

da es Strings gibt wo nach .mp3 ein "<"kommt muss man das rechts gehen ein bisschen anders gestalten. Z.B. gehe ab "." 4 nach rechts
bin soweit brauch allerdings Hilfe.

01.
Sub SrString() 
02.
 
03.
'Strings 
04.
 
05.
String1 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
06.
String2 = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>" 
07.
String3 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
08.
Suche = "." 
09.
 
10.
Position = InStr(8, String1, Suche) 'sucht mir die Position wo der Punkt ist. 
11.
Teil1 = Mid(String1, Position, 4) '= ".mp3" 
12.
Teil2 = "?" 'gehe von Postion solange nach links bis "/" 
13.
Lösung = Teil1 & Teil2 
14.
 
15.
MsgBox Lösung 'Soll mir "Waterloo.mp3" ausgeben 
16.
 
17.
 
18.
Lösung = "*" & Lösung & "*" 'Sternchen vor und hinter den String 
19.
'benötigtes Ergbnis "*Waterloo.mp3*" 
20.
 
21.
End Sub
Bitte warten ..
Mitglied: colinardo
22.02.2013, aktualisiert um 09:50 Uhr
Hi Phoboz,
nach dem Muster deiner Stringdaten kannst du mit folgendem RegularExpression-Objekt dein MP3 an jeder Stelle zwischen den "<path>"-Tags platzieren:
Das Ergebnis steht dann in ResultString.
01.
Dim myRegExp, myMatches, ResultString,rawData 
02.
rawData = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>" 
03.
Set myRegExp = New RegExp 
04.
myRegExp.IgnoreCase = True 
05.
myRegExp.Pattern = "<Path>.*/(.*.mp3).*</Path>" 
06.
Set myMatches = myRegExp.Execute(rawData) 
07.
If myMatches.Count >= 1 Then 
08.
	ResultString = "*" & myMatches(0).SubMatches(0) & "*" 
09.
Else 
10.
	ResultString = "" 
11.
End If
Grüße Uwe
Bitte warten ..
Mitglied: Phoboz
22.02.2013, aktualisiert um 09:57 Uhr
Hallo Uwe,

Danke

Allerdings soll ich das in VBA machen. Wenn ich deinen Code nehme krieg ich Errors
"Fehler beim Kompilieren. Benutzerdefinierter Typ nicht definiert" Zeile 3.

kann mir einer vllt die Lösung für Teil2 sagen (siehe meinen Code oben)


Grüße

Phoboz
Bitte warten ..
Mitglied: colinardo
22.02.2013, aktualisiert um 10:02 Uhr
Das ist VBA bzw. Visual Basic Script und funktioniert! Du musst in VBA noch die Verweis auf das "Microsoft VBScript Regular Expressions" Objekt hinzufügen (Menü "Extras/Verweise") wenn du das in Microsoft Office verwendest. Dann läuft es...
Bitte warten ..
Mitglied: Phoboz
22.02.2013 um 10:05 Uhr
Hallo Uwe,

Verweise ist bei mir ausgegraut (Office 2007)?

Da ich die Aufgabe von einem Lehrer erhalten habe und wir noch nicht soweit mit VBA sind... weiß ich nicht, ob er mir die Lösung abkauft

Ich bin dir dankbar, dass du den Code geschrieben hast, allerdings würde ich das iwie so machen wie ich es oben in dem Code habe... geht das iwie kannst du dir das einmal angucken ?


Grüße

Phoboz
Bitte warten ..
Mitglied: colinardo
22.02.2013, aktualisiert um 10:49 Uhr
OK da will wohl einer wieder schummeln
Nach der altertümlichen Weise geht das so:
01.
SearchString = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
02.
Suche = "." 
03.
 
04.
' Suche den Punkt und gehe 3 Zeichen nach rechts -> jetzt haben wir das Position für das Ende des Dateinamens 
05.
PositionEnd = InStr(1, SearchString, Suche)+3 
06.
'Suche vom Ende des Dateinamens rückwärts nach dem ersten "/" und gehe 1 Zeichen nach rechts -> Das ist die StartPosition des Dateinamens 
07.
PositionStart = InStrRev(SearchString,"/",PositionEnd)+1 
08.
'Nun wird der ganze Dateiname extrahiert. Die Länge ermitteln wir indem wir die Endposition von der Startposition abziehen 
09.
filename = Mid(SearchString,PositionStart,PositionEnd-PositionStart) 
10.
 
11.
Loesung = "*" & filename & "*" 
12.
 
13.
wscript.Echo Loesung
Nur darf bei dieser Methode dein Dateiname oder der Pfad keine weiteren Punkte haben.

8-) Uwe
Bitte warten ..
Mitglied: Phoboz
22.02.2013, aktualisiert um 10:49 Uhr
Hallo,

DANKE!!!


Grüße

Phoboz
Bitte warten ..
Mitglied: LordXearo
22.02.2013 um 10:50 Uhr
War zu langsam. Mit VBA zu programmieren ist für mich ein krampf.....
Keine schöne Lösung, aber trotzdem:

01.
Sub SrString() 
02.
Dim string1 As String 
03.
Dim teilstring1 As Variant 
04.
Dim z As Integer 
05.
z = 1 
06.
string1 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
07.
String2 = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>" 
08.
String3 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
09.
 
10.
Position = InStr(8, string1, Suche) 'sucht mir die Position wo der Punkt ist. 
11.
 
12.
teilstring1 = Split(string1, ".") 
13.
Teil2 = Left(teilstring1(1), "3") 
14.
Do 
15.
If (InStr(Right(teilstring1(0), z), "/") > 0) Then 
16.
    Exit Do 
17.
End If 
18.
z = z + 1 
19.
Loop 
20.
Teil1 = Right(teilstring1(0), z - 1) 
21.
Teil1 = Teil1 & "." 
22.
 
23.
Lösung = Teil1 & Teil2 
24.
 
25.
MsgBox Lösung 'Soll mir "Waterloo.mp3" ausgeben 
26.
Lösung = "*" & Lösung & "*" 'Sternchen vor und hinter den String 
27.
'benötigtes Ergbnis "*Waterloo.mp3*" 
28.
End Sub
Bitte warten ..
Mitglied: colinardo
22.02.2013 um 10:52 Uhr
Bitte Beitrag noch als gelöst markieren, merci !
Bitte warten ..
Mitglied: Phoboz
22.02.2013 um 11:12 Uhr
Hallo,

funktioniert super!

aber hab was bemerkt.

Ich lese den String aus einer Datei. den String den ich bekomme sieht so aus:

"[]<Path>C:/Music/Abba/Abba Gold/money.mp3</Path>"

vor dem String ist ein Viereckiges Kästchen....in der Datei ist dieser Bereich leer krieg deswegen nur müll zurück...

krieg aus dem String das viereckige Kästchen (leerer Raum) iwie weg?

hab schon Ltrim versucht
Bitte warten ..
Mitglied: colinardo
22.02.2013, aktualisiert um 11:22 Uhr
Wenn es nur zwei eckige Klammern sind:
Right(DeinString,Len(DeinString)-2)
oder
Mid(DeinString,3,Len(DeinString))
Zieh dir das hier bitte mal rein :http://www.w3schools.com/vbscript/vbscript_ref_functions.asp
Denke das der Thread gelöst ist. Das ist hier kein VBA-Kurs.

Grüße Uwe
Bitte warten ..
Mitglied: miniversum
22.02.2013, aktualisiert um 11:20 Uhr
Hallo

Warum nicht einfach so?:
01.
Sub LiedSuche() 
02.
    Dim endpos As Long 
03.
    Dim startpos As Long 
04.
    Dim Lösung As String 
05.
     
06.
    String1 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
07.
    String2 = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>" 
08.
    String3 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
09.
 
10.
    endpos = InStrRev(LCase(String1), ".mp3") 
11.
    If endpos > 0 Then 
12.
        startpos = InStrRev(LCase(String1), "/", endpos) 
13.
        lösung = "*" & Mid(String1, startpos + 1, endpos - startpos + 3) & "*" 
14.
    Else 
15.
        MsgBox """.mp3"" not found" 
16.
    End If 
17.
    MsgBox lösung 
18.
End Sub
Bitte warten ..
Mitglied: Phoboz
22.02.2013 um 11:23 Uhr
Hallo,

jetzt habe ich es.

Ich danke Euch allen!


*Resolved*
Bitte warten ..
Mitglied: bastla
22.02.2013, aktualisiert um 13:08 Uhr
@ colinardo
Du musst in VBA noch die Verweis auf das "Microsoft VBScript Regular Expressions" Objekt hinzufügen (Menü "Extras/Verweise")
Den Verweis brauchst Du nicht, wenn "myRegExp" einfach per
Set myRegExp = CreateObject("VBScript.RegExp")
erzeugt wird ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell String zerlegen in Array, DataTable, Hashtable speichern (7)

Frage von derhoeppi zum Thema Batch & Shell ...

VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

Microsoft Office
gelöst Excel-Formel oder VBA (7)

Frage von nicki01 zum Thema Microsoft Office ...

VB for Applications
gelöst VBA-Makro verschwindet nach Speichern (5)

Frage von lupi1989 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...