Excel - Strings in Excel zerlegen

Asked By wilpit on 17-Jun-08 07:59 AM
Hallo Zusammen

ich habe das Problem, das ich in Excel aus einer externen DAtei Strings
einklesen muss. Die Strings haben das Format DAteiname:wert1:wert2:wert3
Abhängig vom Dateinamen sind die nachfolgenden 3 Werte in unterschiedliche
Zellen einzutragen.
Nachflgende Funktion habe ich aus eienr VBA Applikation zusammengesetzt.

Die Funktion funktioniert so nicht und meldet Laufzeitfehlet 424

Public Sub test()
strText = "Apfelkuchen.txt:100:10:2"
' Fixer Ausschnitt
MsgBox "Anfang = " & strText.Substring(0, 4)
' Der Teil vor dem ersten :
MsgBox "Datei" & strText.Substring(0, strTxt.IndexOf(":"))
' der Teil nach dem ersten :
MsgBox "REST:" & strText.Substring(strTxt.IndexOf(":") + 1)
End Sub

Was mache ich falsch? oder muss hier erst noch irgend ein Modul geladen
werden?




Claus Busch replied on 17-Jun-08 08:50 AM
Hallo Wilpito,

hier sind Realnamen gerne gesehen und erhöhen die Antwortbereitschaft.

Am Tue, 17 Jun 2008 04:59:00 -0700 schrieb wilpito:


Warum trennst du nicht mit Excel-Bordmitteln? Markiere die Spalte und
gehe auf Daten => Text in Spalten. Gebe dort als Trennzeichen den
Doppelpunkt an.


Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate
Office 2003 SP2 / 2007 Ultimate
wilpit replied on 17-Jun-08 09:01 AM
Danke für den Tipp, Hilft mir nur nicht viel, denn ich brauche den ersten
Teil des Strings um die richtige Zeile zu finden, in der eingetragen werden
soll.
Also noch einmal: wie zerlege ich den String ohne ihn vorher in das Blatt zu
schreiben?
Claus Busch replied on 17-Jun-08 09:20 AM
Hallo Wilpito,

dann probiers doch mal so:
Public Sub test()

Dim strText As String
Dim Start As Integer
Dim Mitte As Integer
Dim Ende As Integer

strText = "Apfelkuchen.txt:100:10:2"
Start = InStr(1, strText, ":")
Mitte = InStr(Start + 1, strText, ":")
Ende = InStr(Mitte + 1, strText, ":")

MsgBox "Anfang = " & Mid(strText, 1, Start - 1)
MsgBox "Teil1 = " & Mid(strText, Start + 1, Mitte - (Start + 1))
MsgBox "Teil2 = " & Mid(strText, Mitte + 1, Ende - (Mitte + 1))
MsgBox "Teil3 = " & Mid(strText, Ende + 1, Len(strText) - Ende)

End Sub


Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate
Office 2003 SP2 / 2007 Ultimate
Peter Schleif replied on 17-Jun-08 09:23 AM
wilpito schrieb am 17.06.2008 13:59 Uhr:

Hmmm? Die Syntax sieht eher nach Javascript aus. :-)

Wenn das unter VBA funktionieren soll, gehört da auf jeden Fall eine
Klasse dazu, welche die Methoden und Eigenschaften des Objekts

Deinen String kannst Du in VBA mit Split zerlegen. Die vier Teile
stehen dir dann in einem null-basierten Array zur Vefügung:

Sub zerlegen()
Dim strText As String
Dim arr     As Variant

strText = "Apfelkuchen.txt:100:10:2"
arr = Split(strText, ":")

MsgBox arr(0) & vbCr & arr(1) & vbCr & arr(2) & vbCr & arr(3)
End Sub