Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1096to1100
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

Textimport-Darstellung in vernüftige Spalten

Textimport-Darstellung in vernüftige Spalten
Lucia
Hallo zusammen,
Ich habe folgende Herausforderung. Bei uns wird monatlich aus einem ERP eine Debitorenliste herausgelassen aus der wir eine "Mahnliste" in Excel erstellen, die dann an die Verantwortlichen zum Check geht. Das Vorgehen ist noch recht aufwendig, was unter anderem an dem Knackpunkt liegt, weswegen ich eure Hilfe brauche. Leider ist das was als Textdatei aus dem ERP System rauskommt nicht schön in Spalten zu bekommen, um dann in den weiteren Schritten easy und schnell z.B. Spezialfilter drüber zulegen, weil die Datei die Daten zu Kunden gruppiert. Das heißt bei einem "normalen" import in Excel habe ich in Spalte C zum einen die Kundenummer stehen, drei Zeilen drunter dann die Fälligkeit der Rechnung. Das hieß bis jetzt immer manuell durch 200 Datensätze gehen; Kunden rauspicken, Rechnungen zuordnen - das kann es doch nicht sein! Mir ist aber auch noch kein vernüftiger Gedanke gekommen, wie ich das eventuell lösen könnte. Habt ihr eine Ideee?
Ich habe ein in Excel importiertes Beispiel mal rangehängt:
https://www.herber.de/bbs/user/64163.xls
Ziel ist es aus diesem Import per Knopfdruck ein Tabellenblatt zu erstellen, das eine vernüftige Kopfzeile hat über die man Auswertungen fahren kann.
Vielen dank euch schon mal,
Lucia

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Textimport-Darstellung in vernüftige Spalten
01.09.2009 19:22:45
fcs
Hallo Lucia,
Der Import der Textdatei nach Excel ist noch nicht ideal für eine automatisierte Weiterverarbeitung in Excel.
Ich nehme an, der Import erfolgt mit Spalten fester Breite und Einstellung Standard für alle Spalten.
Dabei werden jedoch noch nicht alle Spalten aufgeteilt entsprechend der Zeile
Datum Fälligk. Beleg Rechnung Text MS Währung Betrag EUR Betrag Rest EUR
Das ist aber für die weitere Verarbeitung zwingend erforderlich.
Außerdem sollten Alle Spalten zunächst als "Text" importiert werden.
So macht Excel keine eigenständigen Formatierungen an den Informationen in den Zeilen die die Kundeninformation enthalten und es ist möglich die Informationen, die für die Auswertung in separate Spalten eingetragen werden müssen wieder zusammen zubauen. Die Endformatierungen etc. macht dann die Aufbereitungsprozedur.
Ideal wäre es, wenn du eine Original-EPR-Text-Datei mit neutralisierten Kundeninformationen hochladen könntest. Wenn möglich eine, die mindestens 2 Seiten enthält, da die sich auf jeder Seite wiederholenden Zeilen auch berücksichtigt werden muss. Dabei Inhalt bitte so überschreiben, dass keine Spaltenverschiebungen auftreten! Denn möglicherweise ist es einfacher, die Inhalte direkt aus der Textdatei auszulesen und aufzubereiten, als erst nach Excel zu importieren und dann eine Aufbereitung zu versuchen.
Gruß
Franz
Anzeige
AW: Textimport-Darstellung in vernüftige Spalten
01.09.2009 19:40:26
Uduuh
Hallo,
im Forum werden Hilfestellungen und Tipps gegeben.
das geht darüber weit hinaus und ist ein Fall für Auftragsprogrammierung.
Gruß aus’m Pott
Udo

AW: Textimport-Darstellung in vernüftige Spalten
02.09.2009 10:10:29
Lucia
Hi zusammen,
@ fcs:Leider verstehe ich nicht ganz was du meinst mit überschreiben und auslesen der Textdatei - welche Erleichterung soll das manuelle überschreiben haben und wohin wird ausgelesen wenn nicht doch dann in Excel? Steh´ich grad auf dem Schlauch.
Gedanklich bin ich jetzt auf dem folgenden Lösungsweg: Ich lese die Daten so ein, wie im hochgeladenen Beispiel, dann könnte ich über eine Abfrage alle Daten aus Spalte A auslesen, die ein Datum enthalten bzw. aus Spalte B, die ein Datum kleiner vorgestern haben und nacheinander in ein zweites Tabellenblatt aufliste. Über eine andere datei könnte ich schauen, welcher Debitor hinter dem Beleg liegt.
Andere Idee: Über Belegnummer gehen, die ist eindeutig definiert, diese nacheinander in einem zweiten Blatt auflisten und über sverweis dann die jeweiligen Daten (bis auf Debitor) zuordnen.
Wie ist deine Meinung zu dem Vorgehen? Sehr holprig?
@ Uduuh: Möglicherweise haben wir uns da ein bischen falsch verstanden. Ich war auf der suche nach einer Hilfestellung, da ich mich gestern gedanklich schon ziemlich verkorkst hatte (bin ja kein Profi) - ein kleiner Hinweis wie man das auch anders angehen kann. Bitte erklär mir da die Schwelle zur Auftragsprogrammierung.
Vielen Dank,
Lucia
Anzeige
AW: Textimport-Darstellung in vernüftige Spalten
02.09.2009 16:14:16
fcs
Hallo Lucia,
man kann die Text-Datei auch Zeilenweise per Makro einlesen und analysieren, ohne sie vorher in eine Excel-Datei zu laden.
Das Ergebnis wird dann in eine Mustertabelle oder in eine Leertabelle geschrieben.
Das Ganze läuft dann in 2 Haupt Do-Loop-Schleifen bis das Ende der Text-Datei erreicht ist nach folgendem Schema:
1. Do-Loop-Schleife
Lese Zeilen bis Zeile mit "Konto" beginnt.
- Schneide Konto, Kunde und Saldo aus dem Text und merke dies Info in 3 Variablen
Lese nächste Zeile ein
- Schneide zHd und Kredit aus dem Text und merke diese Info in 2 Variablen
Lese nächste Zeile ein
- Schneide Telefonnummer aus dem Text und merke diese Info in 1 Variable
Lese Zeilen bis Zeile mit "Datum" beginnt.
Überspringe eine Zeile
2. Do-Loop-Schleife bis zur nächsten Leerzeile
Lese nächste Zeile ein
Schneide die Informationen aus der Zeile und speichere in Variablen.
Dabei
- Umwandlung der Datumsangaben in Excel-Datum
- Umwandlung von Beträgen/Nummern in entsprechende Zahlen
Schreibe die in der 1. Loop gemerkten Kundeninfos und die Daten aus der Zeile in eine Excel-Zeile
2.Do-Loop-Ende
Verlasse Loop wenn Datei zuEnde
1. Do-Loop-Ende
Innerhalb der Schleifen müssen dann noch die Zeilen übersprungen werden, die sich auf jeder Seite wiederholen.
Im Prinzip wird dann mit der Textdatei etwas ähnliches gemacht wie du es mit der Exceldatei vorhast. Der Vorteil ist aber, dass man mit den Original-Daten arbeitet und nicht mit dem was was Excel beim Import der Textdatei aus den Daten macht.
Das Überschreiben von Daten bezog sich hier auf die Beispiel-Textdatei, um die ich gebeten hatte. Wenn du darin im Editor oder Notepad die Kundeninfo neutral gestaltest, dann solltest darauf achten, dass du die Zeichen überschreibst und keine Zeichen löschst oder einfügst, so das die Zeichenzahl und somit der Spaltenaufbau in der Textdatei nicht verändert wird.
Mein Problem mit deiner Beispieldatei war, dass die rechten Betrags-Spalten irgendwie chaotisch getrennt wurden. Dadurch sind sie für eine systematische Auswertung nicht mehr verwendbar.
Gruß
Franz
Hier mal ein Ansatz wie du deine importierten Daten auswerten und in ein neues Blatt übertragen kannst.

Sub ERP_Import()
Dim wksERP As Worksheet, wksImport As Worksheet, bolDatum As Boolean
Dim ZeileERP As Long, ZeileImport As Long, Spalte As Long
Dim varKonto, strKunde As String, varSaldo
Set wksERP = ActiveSheet
'Neues Blatt anlegen
Workbooks.Add Template:=xlWBATWorksheet
Set wksImport = ActiveSheet
With wksImport
'Spaltentitel eintragen
ZeileImport = 1
.Cells(ZeileImport, 1) = "Konto"
.Cells(ZeileImport, 2) = "Kunde"
.Cells(ZeileImport, 3) = "Saldo"
.Cells(ZeileImport, 4) = "Datum"
.Cells(ZeileImport, 5) = "Fälligk."
.Cells(ZeileImport, 6) = "Beleg"
.Cells(ZeileImport, 7) = "Rechnung"
.Cells(ZeileImport, 8) = "Ware"
.Cells(ZeileImport, 9) = "MS"
'Spalten formatieren - Zahlenformate
.Columns(2).NumberFormat = "@" 'als Text
.Columns(3).NumberFormat = "#,##.00"
.Columns(4).NumberFormat = "DD.MM.YYYY"
.Columns(5).NumberFormat = "DD.MM.YYYY"
.Columns(8).NumberFormat = "@" 'als Text
'Spalten formatieren - Breiten
.Columns(1).ColumnWidth = 8
.Columns(2).ColumnWidth = 15
.Columns(3).ColumnWidth = 8
.Columns(4).ColumnWidth = 10
.Columns(5).ColumnWidth = 10
.Columns(6).ColumnWidth = 10
.Columns(7).ColumnWidth = 10
.Columns(8).ColumnWidth = 20
.Columns(9).ColumnWidth = 4
Range("C2").Select
ActiveWindow.FreezePanes = True
End With
With wksERP
bolDatum = True
For ZeileERP = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
'Spalte 1 prüfen
If .Cells(ZeileERP, 1).Value = "OFFENE DEB" _
Or .Cells(ZeileERP, 1).Value = "Bis Datum" _
Or .Cells(ZeileERP, 1).Value = "" Then
'Do nothing, Titelzeilen und Leerzeilen
ElseIf Asc(.Cells(ZeileERP, 1)) = 45 Then
'Horizontalstriche im Blatt
'do nothing
Else
If .Cells(ZeileERP, 1).Value = "Konto ...:" And bolDatum = True Then
'Kundeninfos merken
varKonto = .Cells(ZeileERP, 2).Value
strKunde = .Cells(ZeileERP, 3).Value & .Cells(ZeileERP, 4).Value _
& .Cells(ZeileERP, 5).Value
varSaldo = .Cells(ZeileERP, 9).Value
bolDatum = False
ElseIf .Cells(ZeileERP, 1).Value = "Datum" And bolDatum = False Then
bolDatum = True
ElseIf bolDatum = True Then
ZeileImport = ZeileImport + 1
'Kundendaten übertragen
wksImport.Cells(ZeileImport, 1) = varKonto
wksImport.Cells(ZeileImport, 2) = strKunde
wksImport.Cells(ZeileImport, 3) = varSaldo
'Zeilendaten übertragen
For Spalte = 1 To 6
wksImport.Cells(ZeileImport, Spalte + 3).Value = .Cells(ZeileERP, Spalte).Value
Next
End If
End If
Next
End With
End Sub

Anzeige
AW: Textimport-Darstellung in vernüftige Spalten
03.09.2009 11:13:45
Lucia
huihuihuihuihui....das ist ziemlich viel...da werd ich mich am Wochenende mal länger ransetzen, um das zu kapieren. Also nicht wundern, wenn die ergebnismeldung etwas auf sich warten lässt;-) Aber Danke schon mal!!!

350 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige