Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1388to1392
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Aus Textdokument in Excel-Tabelle

Aus Textdokument in Excel-Tabelle
23.10.2014 11:08:30
Muehli

Guten Morgen,
ich habe folgendes Anliegen:
Ein Textdokument hat folgende Formatierung:
:A: 0001
:B: "Text1"
:C: "Text2"
:D: Text3
:A: 0002
:B: "Text4"
:C: "Text5"
:D: Text6
:A: 0003
:B: "Text7"
:C: "Text8"
:D: Text9
usw.
Ich möchte das Textdokument in eine Excel-Tabelle integrieren.
In der Excel-Tabelle sollte es folgendermaßen aussehen:
|Spalte A|Spalte B|Spalte C|Spalte D|
| 0001 | Text1 | Text2 | Text3 |
| 0002 | Text4 | Text5 | Text6 |
| 0003 | Text7 | Text8 | Text9 |
Das Ganze sollte per Button ausführbar sein.
Es fallen somit die "-Zeichen weg und die Auflistung :A: :B: etc.
Hat jemand eine Ahnung, wie man das mit VBA lösen kann?
Freundliche Grüße
Muehli

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aus Textdokument in Excel-Tabelle
23.10.2014 11:31:12
MCO
Hallo!
Du hast nicht benannt, wo deine Datei liegt, daher hab ich mal einen Pfad angenommen, den du natürlich ändern mußt.
Probier das mal:
Sub einlesen()
Dim spalte As String, strZeile As String
Open "C:\temp\sss.txt" For Input As #1
Cells.Clear
Do While Not EOF(1)
Line Input #1, strZeile
spalte = Replace(Left(strZeile, 3), ":", "")
strZeile = Replace(strZeile, """", "")
If spalte = "A" Then lz = Cells(Rows.Count, "a").End(xlUp).Row + 1
If spalte <> "" Then Cells(lz, spalte) = Trim(Mid(strZeile, 4, 99))
Loop
Close #1
End Sub
Gruß, MCO

Anzeige
AW: Aus Textdokument in Excel-Tabelle
23.10.2014 11:48:35
Muehli
Danke für deine schnelle Antwort!
Er bringt nun den Fehler (ab "Then [...]") mit der Meldung: "Anwendungs- oder objektdefinierter Fehler":
If spalte <> "" Then Cells(lz, spalte) = Trim(Mid(strZeile, 4, 99))

Gruß
Muehli

AW: Aus Textdokument in Excel-Tabelle
23.10.2014 12:09:03
MCO
Hallo!
Bei mir läuft alles...
Wenn du auf die Variablen gehst (beim debuggen), siehst du, welcher Wert dahintersteckt. Sind die alle in Ordnung?
Oder ist z.b. Spalte weder leer ("") noch ein Buchstabe?
Dann sind die Daten in deiner Ausgangsdatei nicht so homogen, wie du beschrieben hast u. die Behandlung des Textes muß daran angepasst werden...
Gruß, MCO

Anzeige
AW: Aus Textdokument in Excel-Tabelle
23.10.2014 13:20:19
Muehli
Also wenn ich das Textdokument auf auf :A:,:B:,:C:,:D: abgeändert habe funktioniert es fast wie gewünscht. War also von mir zu allgemein gefragt. Mein Fehler sry^^.
Jedoch müsste ich dann etwa 10000 Einträge ausbessern.
Die genaue Bezeichnung lautet daher wie folgt:
:N: 0001
:T: "Text1"
:I: "Text2"
:A: Text3
:N: 0002
:T: "Text4"
:I: "Text5"
:A: Text6
:N: 0003
:T: "Text7"
:I: "Text8"
:A: Text9
Soll werden:
|Spalte A|Spalte B|Spalte C|Spalte D|
| 0001 | Text1 | Text2 | Text3 |
| 0002 | Text4 | Text5 | Text6 |
| 0003 | Text7 | Text8 | Text9 |
Die "-Zeichen sind nicht dabei, soweit passt das.
Allerdings schreibt er den Text nicht so:
| 0001 | Text1 | Text2 | Text3 |
Sondern so:
|:N: 0001 | :T: Text1 |:I: Text2 |:A: Text3 |
Die Texte müssen auch nicht zwangsläufig in dieser Reihenfolge in die Spalten der Exceltabelle eingefügt werden. Es können auch Spalten dazwischen frei sein. Ich würde das ganze dann in der Exceltabelle per Makro so sortieren, wie ich es brauche.
Bsp.
|Spalte A|Spalte C|Spalte H|Spalte Z|
| 0001 | Text2 | Text1 | Text3 |
| 0002 | Text5 | Text6 | Text4 |
| 0003 | Text7 | Text8 | Text9 |
Es muss lediglich eine Gruppe (:N:,:T:,:I:,:A:) in einer Zeile sein.
Hoffe man kann das verstehen. =)
Danke für deine/eure Geduld.
Gruß
Muehli

Anzeige
AW: Aus Textdokument in Excel-Tabelle
23.10.2014 13:26:03
Muehli
Änderung zum Beispiel:
Bsp.
|Spalte A|Spalte C|Spalte H|Spalte Z|
| 0001 | Text2 | Text1 | Text3 |
| 0002 | Text5 | Text4 | Text6 |
| 0003 | Text8 | Text7 | Text9 |
Es muss immer der Text aus :N: unter :N: und :A: unter :A: usw.

AW: Aus Textdokument in Excel-Tabelle
24.10.2014 06:37:57
MCO
Guten Morgen!
Wie ist es damit?
Die Zahl am Anfang jeden Datensatzes wird automatisch umformatiert. Kann das so bleiben?
Gruß, MCO
Sub einlesen()
Dim spalte As Single, strZeile As String
Open "C:\temp\sss.txt" For Input As #1
Cells.Clear
spalte = 1
lz = Cells(Rows.Count, "a").End(xlUp).Row + 1
Do While Not EOF(1)
Line Input #1, strZeile
If strZeile <> "" Then 'nur schreiben, wenn ungleich leer
strZeile = Replace(strZeile, """", "")
Cells(lz, spalte) = Trim(Mid(strZeile, 4, 99))
If spalte = 4 Then
lz = Cells(Rows.Count, "a").End(xlUp).Row + 1
spalte = 1
Else
spalte = spalte + 1
End If
End If
Loop
Close #1
End Sub

Anzeige
AW: Aus Textdokument in Excel-Tabelle
24.10.2014 07:27:03
Muehli
Guten Morgen MCO,
ich bin das Ganze jetzt so angegangen (Deine erste Variante minimal geändert):
Private Sub CommandButton1_Click()
Dim spalte As String, strZeile As String
Open Range("O1").Value For Input As #1
Cells.Clear
Do While Not EOF(1)
Line Input #1, strZeile
spalte = Replace(Left(strZeile, 3), ":", "")
strZeile = Replace(strZeile, """", "")
If spalte = "N" Then lz = Cells(Rows.Count, "n").End(xlUp).Row + 1
If spalte <> "" Then Cells(lz, spalte) = Trim(Mid(strZeile, 1, 99))
Loop
'Sortieren
inhalt = Range("T" & i + 2).Value
start = InStr(1, inhalt, " ")
Range("C" & i + 2).Value = Right(inhalt, Len(inhalt) - start)
inhalt = Range("A" & i + 2).Value
start = InStr(1, inhalt, " ")
Range("D" & i + 2).Value = Right(inhalt, Len(inhalt) - start)
inhalt = Range("N" & i + 2).Value
start = InStr(1, inhalt, " ")
Range("A" & i + 2).Value = Right(inhalt, Len(inhalt) - start)
inhalt = Range("I" & i + 2).Value
start = InStr(1, inhalt, " ")
Range("N" & i + 2).Value = Right(inhalt, Len(inhalt) - start)
End Sub
Es funktioniert so, wie gewünscht =)
Vielen Dank für deine Bemühungen!!
Freundliche Grüße
Muehli

Anzeige
AW: Aus Textdokument in Excel-Tabelle
24.10.2014 07:30:28
Muehli
Habe etwas vergessen mit einzufügen:
Private Sub CommandButton1_Click()
Dim spalte As String, strZeile As String
Open Range("O1").Value For Input As #1
Cells.Clear
Do While Not EOF(1)
Line Input #1, strZeile
spalte = Replace(Left(strZeile, 3), ":", "")
strZeile = Replace(strZeile, """", "")
If spalte = "N" Then lz = Cells(Rows.Count, "n").End(xlUp).Row + 1
If spalte <> "" Then Cells(lz, spalte) = Trim(Mid(strZeile, 1, 99))
Loop
'Sortieren
Dim inhalt
Dim start As Integer
Dim i As Long
For i = 0 To 9999
inhalt = Range("T" & i + 2).Value
start = InStr(1, inhalt, " ")
Range("C" & i + 2).Value = Right(inhalt, Len(inhalt) - start)
inhalt = Range("A" & i + 2).Value
start = InStr(1, inhalt, " ")
Range("D" & i + 2).Value = Right(inhalt, Len(inhalt) - start)
inhalt = Range("N" & i + 2).Value
start = InStr(1, inhalt, " ")
Range("A" & i + 2).Value = Right(inhalt, Len(inhalt) - start)
inhalt = Range("I" & i + 2).Value
start = InStr(1, inhalt, " ")
Range("N" & i + 2).Value = Right(inhalt, Len(inhalt) - start)
End Sub

Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige