Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
984to988
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
984to988
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Textdatei in Tabelle queer statt längs einlesen

Textdatei in Tabelle queer statt längs einlesen
19.06.2008 12:50:00
Joachim
Hi,
kann man in eine Excel Tabelle Daten auch nebeneinander anstatt untereinender einlesen ?
Habe folgendes Problem: meine Quellformat ist eine Textdatei und ist ungefähr so aufgebaut :
Zuerst kommt irgend ein Sonderzeichen, was bei Bedarf durch jedes andere Zeichen zu ersetzen wäre. Danach kommen die Datensätze, dann eine leere Zeile und dann wieder von vorne. Die Zeilen 1 - 105 gehören jeweils zu einem Datensatz (= 1 Zeile) :
%
Zeile1: xyz
Zeile2: zxy
Zeile3: yzx
:
:
Zeile105: xyz
%
Zeile1: xyz
Zeile2: zxy
Zeile3: yzx
:
:
Zeile105: xyz
%
Zeile1: xyz
Zeile2: zxy
Zeile3: yzx
:
:
Zeile105: xyz
usw. usw.
Kann man so eine Art von Textdatei irgend wie (per Excel-Funktion oder Makro) queer einlesen:
Zeile1: xyz Zeile2: zxy Zeile3: yzx ....... Zeile105: xyz
und dann wenn das Sonderzeichen kommt, dann wieder von vorne bei Spalte A mit dem nächsten Datensatz beginnt:
Zeile1: xyz Zeile2: zxy Zeile3: yzx ....... Zeile105: xyz
Zeile1: xyz Zeile2: zxy Zeile3: yzx ....... Zeile105: xyz
Zeile1: xyz Zeile2: zxy Zeile3: yzx ....... Zeile105: xyz
:
:
Vielleicht weiss jemand , wie das geht.
Danke mal
Joachim

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdatei in Tabelle queer statt längs einlesen
19.06.2008 13:38:00
Rudi
Hallo,
wenn das immer gleich ist:
Die .txt importieren, so dass sie in A1 beginnt.
In Tabelle2!A1:

=INDEX(Tabelle1!$A:$A;107*ZEILE()-106+SPALTE())


und nach rechts und unten kopieren.
Gruß
Rudi

AW: Textdatei in Tabelle queer statt längs einlese
19.06.2008 17:15:00
Joachim
Hallo Rudi,
die erste Zeile wird zwar eingelesen aber in der zweiten Zeile stehen nur Nuller, so ungefähr:
Zeile1 Zeile2 Zeile3 Zeile4 Zeile5 .....
0 0 0 0 0 .....
0 0 0 0 0 .....
0 0 0 0 0 .....
0 0 0 0 0 .....
Also, ab der zweiten Zeile wird nicht mehr eingelesen
Hast Du das bei Dur getestet ?
Gruss
Joachim

Anzeige
AW: Textdatei in Tabelle queer statt längs einlese
19.06.2008 22:52:48
Rudi
Hallo,

Hast Du das bei Dur getestet ?


natürlich.
Gruß
Rudi

AW: Textdatei in Tabelle queer statt längs einlesen
19.06.2008 19:47:04
Tino
Hallo,
versuche es mal mit diesem Code.
Tabelle befindet sich im Ordner der Textdatei und die Textdatei habe ich Test.txt genannt.

Option Explicit
Sub LeseTXT()
Dim Pfad As String
'damit es etwas schneller geht
EventAusAn False
'Inhalt Zellen löschen
Cells.ClearContents
'Pfad der Textdatei wo sich die Excelmappe befindet
Pfad = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "")
'Textdatei Zeilenweise einlesen
If Lese_TXT(Pfad & "Test.txt") = True Then
EventAusAn
MsgBox "Textdatei wurde gelesen", vbInformation
Else
EventAusAn
MsgBox "Es sind Fehler aufgetreten!", vbCritical
End If
End Sub
Function Lese_TXT(ByVal sFilename As String) As Boolean
Dim F As Integer
Dim sLine As String
Dim A As Long, B As Long
On Error GoTo Fehler: 'Fehler abfangen
' Existiert die Datei ?
If Dir$(sFilename, vbNormal)  "" Then
F = FreeFile
Open sFilename For Input As #F
While Not EOF(F)
Line Input #F, sLine
If Trim$(sLine) = "%" Then
A = A + 1: B = 1
GoTo NächsteZeile
End If
Cells(A, B).Value = Trim$(sLine)
B = B + 1
NächsteZeile:
Wend
Close #F
Else
Lese_TXT = False
End If
Lese_TXT = True
Exit Function
Fehler:
On Error Resume Next
Close #F
Lese_TXT = False
End Function
Sub EventAusAn(Optional Zustand As Boolean = True)
Static ZustandAlt As Long
If Zustand = False Then ZustandAlt = Application.Calculation
With Application
.EnableEvents = Zustand
.ScreenUpdating = Zustand
.Calculation = IIf(Zustand = True, ZustandAlt, xlCalculationManual)
End With
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Textdatei in Tabelle queer statt längs einlesen
20.06.2008 10:31:00
Joachim
Hallo Tino,
das klappt ja wunderbar :-) Grosses danke
Noch eine Frage: Ist es auch möglich, nur einen Teil eines Datensatzes auszulesen ? Also, dass ich nicht den kompletten Datensatz einlese, sondern deffiniere, sobald mein "%" -Zeichen kommt , möchte ich die Zeile mit dem Namen "ABC", die Zeile mit dem Name "YZX" und mit dem Name "XYZ" nach Excel kopieren.
Das Problem bei meiner Textdatei ist, nicht alle Datensätze haben gleich viel Zeilen. Es werden zwar alle Daten eingelese, hat aber zu folge, dass die gleichen Zeilen (Kategoriene) nicht alle untereinender in der Exceltabelle stehn.
Wenn ich dass mit dem zusätlichen Filtern machen könnte, dann würden auch immer die gleichen Kategorien pro datensatz schon sauber untereinender stehn.
Alle Zeilen sind so aufgebaut:
Name: xyz
BDE: zxy
Target: yzx
:
:
(Jede Kategorie endet mit einem Doppelpunkt und dahinter kommt die Information)
Kannst Du Dir vor stellen, wie ich das meine ?
Gruss
Joachim

Anzeige
AW: Textdatei in Tabelle queer statt längs einlesen
20.06.2008 16:35:52
Tino
Hallo,
versuche es mal hiermit.
In der Zeile
Lese_TXT(Pfad & "Test.txt", "Name1 Name2 Name3")
Wird als 2. Argument beliebig viele Namen getrennt durch ein Leerzeichen übergeben.

Sub LeseTXT()
Dim Pfad As String
'damit es etwas schneller geht
EventAusAn False
'Inhalt Zellen löschen
Cells.ClearContents
'Pfad der Textdatei wo sich die Excelmappe befindet
Pfad = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "")
'Textdatei Zeilenweise einlesen
If Lese_TXT(Pfad & "Test.txt", "Name1 Name2 Name3") = True Then
EventAusAn
MsgBox "Textdatei wurde gelesen", vbInformation
Else
EventAusAn
MsgBox "Es sind Fehler aufgetreten!", vbCritical
End If
End Sub
Function Lese_TXT(ByVal sFilename As String, strName As String) As Boolean
Dim F As Integer
Dim sLine As String
Dim A As Long, B As Long
Dim meinBlock As Boolean
On Error GoTo Fehler: 'Fehler abfangen
' Existiert die Datei ?
If Dir$(sFilename, vbNormal)  "" Then
F = FreeFile
Open sFilename For Input As #F
While Not EOF(F)
Line Input #F, sLine
If InStr(strName, Trim$(sLine)) > 0 Then
meinBlock = True
A = A + 1: B = 1
End If
If Trim$(sLine) = "%" Then meinBlock = False
If meinBlock = True Then
Cells(A, B).Value = Trim$(sLine)
B = B + 1
End If
NächsteZeile:
Wend
goExit:
Close #F
Else
Lese_TXT = False
End If
Lese_TXT = True
Exit Function
Fehler:
On Error Resume Next
Close #F
Lese_TXT = False
End Function
Sub EventAusAn(Optional Zustand As Boolean = True)
Static ZustandAlt As Long
If Zustand = False Then ZustandAlt = Application.Calculation
With Application
.EnableEvents = Zustand
.ScreenUpdating = Zustand
.Calculation = IIf(Zustand = True, ZustandAlt, xlCalculationManual)
End With
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Textdatei in Tabelle queer statt längs einlesen
20.06.2008 17:08:00
Tino
Hallo,
hier noch eine zweite Möglichkeit, sollte in Deiner Textdatei der Name auch in irgendeiner Form Bestandteil in den übrigen Texten sein funktioniert die 1. nicht.
Beispiel such Name = „Joachim 1“ so wird bei einer Zeile mit 1 dies als Name gefunden, dies wäre
ja falsch.
Option Explicit

Sub LeseTXT()
Dim Pfad As String
'damit es etwas schneller geht
EventAusAn False
'Inhalt Zellen löschen
Cells.ClearContents
'Pfad der Textdatei wo sich die Excelmappe befindet
Pfad = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "")
'Textdatei Zeilenweise einlesen
If Lese_TXT(Pfad & "Test.txt", "Tino Margit Marvin") = True Then
EventAusAn
MsgBox "Textdatei wurde gelesen", vbInformation
Else
EventAusAn
MsgBox "Es sind Fehler aufgetreten!", vbCritical
End If
End Sub



Function Lese_TXT(ByVal sFilename As String, strName As String) As Boolean
Dim F As Integer
Dim sLine As String
Dim A As Long, B As Long
Dim meinBlock As Boolean
Dim strSuch() As String
Dim lAnz As Long
On Error GoTo Fehler: 'Fehler abfangen
strSuch = Split(strName, " ")
' Existiert die Datei ?
If Dir$(sFilename, vbNormal)  "" Then
F = FreeFile
Open sFilename For Input As #F
While Not EOF(F)
Line Input #F, sLine
For lAnz = 0 To UBound(strSuch)
If strSuch(lAnz) = Trim$(sLine) Then
meinBlock = True
A = A + 1: B = 1
Exit For
End If
Next lAnz
If Trim$(sLine) = "%" Then meinBlock = False
If meinBlock = True Then
Cells(A, B).Value = Trim$(sLine)
B = B + 1
End If
NächsteZeile:
Wend
Close #F
Else
Lese_TXT = False
End If
Lese_TXT = True
Exit Function
Fehler:
On Error Resume Next
Close #F
Lese_TXT = False
End Function



Sub EventAusAn(Optional Zustand As Boolean = True)
Static ZustandAlt As Long
If Zustand = False Then ZustandAlt = Application.Calculation
With Application
.EnableEvents = Zustand
.ScreenUpdating = Zustand
.Calculation = IIf(Zustand = True, ZustandAlt, xlCalculationManual)
End With
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Textdatei in Tabelle queer statt längs einlese
20.06.2008 21:00:43
Joachim
Hallo Tino,
Danke dass Du Dich meiner noch mal annimmst :-)
Habe den Code eingefügt und habe nun in der Zeile :
If Lese_TXT(Pfad & "Test.txt", "Category SBRNr Target") = True Then
eine Fehlermeldung:
"Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft"
Wenn Es bei Dir funktioniert, kann es evt damit zu tun haben, das ich heute Mittag auf einem Office 2003 Rechner gearbeitet habe und jetzt gerade auf diesem Rechner nur Office 2000 zur Verfügung habe ?
Gruss
Joachim

AW: Textdatei in Tabelle queer statt längs einlese
20.06.2008 21:16:00
Tino
Hallo,
habe kein Office 2000 unter 2003 hat es bei mir funktioniert, versuch mal und mach aus der Funktion dass ByVal raus.
also nur:
Function Lese_TXT(sFilename As String, strName As String) As Boolean
Gruß Tino

Anzeige
AW: Textdatei in Tabelle queer statt längs einlese
20.06.2008 21:52:00
Joachim
Hi Tino,
dann kommt zwar das Fenster, die Daten seien eingelesen, aber das ganze Tabellenblatt bleibt leer.
keine Daten drin.
Ich denke ich teste es am Montag noch mal, wenn ich wieder an meinem Otice 2003 Rechner bin. Dann kann ich das mit der Version wenigstens ausschliessen.
Oder soll ich Dir mal meine Textdatei schicken ?
Gruss
Joachim

AW: Textdatei in Tabelle queer statt längs einlese
20.06.2008 22:34:00
Tino
Hallo,
ja die Textdatei wäre nicht schlecht
Gruß Tino

AW: Textdatei in Tabelle queer statt längs einlese
20.06.2008 22:38:00
Joachim
OK, wohin ?

AW: Textdatei in Tabelle queer statt längs einlese
20.06.2008 22:45:00
Tino
Hallo,
entweder hier reinstellen oder an excel@tinomargit.com
Komme aber erst morgen früh dazu, bin auf nachtschicht
Gruß Tino

Anzeige
AW: Textdatei in Tabelle queer statt längs einlese
20.06.2008 23:09:00
Joachim
Hi Tino,
Mail ist unterwegs.
Kein Problem, mach Dir keinen Stress.
Wünsche schöne Nachtschicht.
Gruss
Joachim

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige