Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
904to908
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
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
csv-Dateien auslesen
06.09.2007 08:35:00
Matthias
Hallo,
da ich nicht gut im VBA-Programmierung bin und hier schon einmal eine super Unterstützung bekommen habe, wende ich mich mit meinem Problem wieder an Euch.
Ich habe viele Ordner, die mit Daten_07_2007 benamst sind. (Also immer monatsmäßig sozusagen Daten_08_2007 etc.)
In diesen Ordnern stehen viele *.csv Dateien, aus denen die Daten in ein Excel-File übernommen werden sollen.
Ein Beispiel für eine solche *.csv-Datei habe ich hier:

Die Datei https://www.herber.de/bbs/user/45729.xls wurde aus Datenschutzgründen gelöscht


(leider nur als *.xls-Datei, da ich keine csv hochladen darf)
Die csv-Dateien beginnen immer mit ENV.
In den Dateien stehen verschiedenste Daten.
Ab Zelle A3 stehen die Daten.
Es können sehr viele Daten in den csv-Dateien stehen, somit müsste man Zeile für Zeile durchgehen und Prüfen ob entweder Verbindungen "Business Intern zu D1" oder "Verbindungen Business Intern zur TK-Anlage" steht (siehe rote Markierung in csv--Datei)
Wenn in diesen Zeilen diese Wort-/Zeichenreihenfolge vorhanden ist, dann sollen die blau (in csv-Datei) markierten Werte (Sekunden) summiert werden.
Aber jeweils für "Verbindungen Business Intern zu D1" und "Verbindungen Business Intern zur TK-Anlage" getrennt.
Die Reihenfolge der Daten in einer Zelle ist immer die gleiche und auch der Abstand zwischen der Gesuchten Wort-/Zeichenreihenfolge zum markierten Wert (Sekunden) ist immer gleich. Dies ist nur ein Datum mit Uhrzeit.
Es wäre schön, wenn dies entweder über einen Button-Klick gehen könnte oder optimaler wäre bei öffnen des Excel-Files.
Ich würde mich freuen, wenn mir jemand helfen könnte.
Solltet Ihr Fragen haben so beantworte ich diese sehr gerne.
Vielen Dank im Voraus
Gruß
Matthias

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: csv-Dateien auslesen
06.09.2007 11:07:17
Chaos
Servus Matthias,
also wenn deine Daten immer so aufgebaut sind, wie in der Beispielmappe, dann geht es wie in der angehängten Mappe:
https://www.herber.de/bbs/user/45738.xls
Button Summieren drücken!
Gruß
Chaos

AW: csv-Dateien auslesen
06.09.2007 12:29:21
Matthias
Hallo Chaos,
das sieht soweit schon super aus.
Allerdings sollte die Summierung in einer extra Datei stattfinden, denn so muss ich das Makro ja in jede Datei reinkopieren und kann die Summe mir auch nicht durch Zellenformatierung in Stunden/Minuten/Sekunden anzeigen lassen.
Da es von dieser Sorte im schnitt ca 250 - 350 Datei pro Ordner sind wird das ganz schön viel Arbeit.
Gruß
Matthias

Anzeige
AW: Nachfrage
06.09.2007 12:46:00
Chaos
Servus Matthias,
hast du schon eine Routine zum Einlesen der .csv-Dateien ? Wenn ja, poste diese bitte mal.
Gruß
Chaos

AW: Nachfrage
06.09.2007 12:47:00
Matthias
Hallo ..
.. nein so eine Routine habe ich leider noch nicht :-(
Gruß

AW: Nachfrage
06.09.2007 12:54:00
Chaos
Das ist auch kein Problem,
kann man relativ leicht erstellen. Ich bräuchte aber eine csv.Datei zum Testen (habe keine zur Verfügung und kann auch keine erzeugen). Evtl. kannst du mir ja eine schicken, wenn du sie schon nicht hochladen kannst.
Christian.Stadter@Henkel.com
Wäre für mich einfacher zum Testen.
Gruß
Chris

AW: Nachfrage
06.09.2007 13:42:02
Matthias
Datei habe ich Dir per Mail zukommen lassen.
Grüße

Anzeige
AW: Nachfrage
06.09.2007 15:36:00
Chaos
Servus,
folgende Anmerkungen:
Das Ergebnis wird in Sheets(2) geschrieben (für jede Datei). Nurmal zur Ansicht!
Den Pfad im Makro Datei_vorhanden musst du eben anpassen. Ich habe 2 InpuBoxen eingebaut, damit du den Ordner variabel auswählen kannst, sonst schreibt das Makro alle Werte für alle Dateien und du verlierst ganz leicht den Überblick.
https://www.herber.de/bbs/user/45753.xls
Gruß
Chris

AW: Nachfrage
06.09.2007 15:43:00
Martin
Dankeschön,
kann es heute leider nicht mehr testen, werde es morgen früh machen.
Gruß und Danke

Anzeige
AW: Nachtrag
06.09.2007 15:48:10
Chaos
Servus,
deine Ordner heißen:
Daten_06_2006, u.s.w. : also für Jahr 2006 und für Monat 06 in die InputBoxen eingeben:
Gruß
Chaos

AW: Nachtrag
07.09.2007 08:18:00
Matthias
Hallo Chaos ..
.. das Einlesen der Dateien funktioniert soweit einwandfrei.
Allerdings schreibt er für jede eingelesene Datei:

EVN_xxxx_xxxx_xxxx.csv
Verbindungen Buisness Intern zu D1:
0 s
Verbindungen Buisness Intern zur TK-Anlage:
0 s
------------------------------------------------------


a) er liest immer nur 0s (0 Sekunden) aus
b) die Summe der Sekunden sollte über den kompletten Monat laufen, d.h. wenn ich Daten_07_2007 einlese, dann soll am Ende des einlesevorgangs einmal eine oben zittierte Ausgabe stattfinden, mit der Summe aus allen eingelesen Dateien
Die Abfrage am Anfang ist Top. Das ist die optimale Lösung mit den beiden Input-Boxen.
Noch was: Was schreibt das Makro in das erste Tabellenblatt? Einen Teil vom Dateinamen oder einen Teil aus dem Inhalt der csv-Datei-Daten?
DANKE
Gruß
Matthias

Anzeige
AW: Nachtrag
07.09.2007 12:58:00
Chaos
Servus,
das Makro schreibt in das erste Tabellenblatt die jeweils aktuellen Daten aus der gerade zum Einlesen offenen .csv-Datei. Hieraus werden dann die Zeiten ausgelesen.
Bei mir funktioniert das einwandfrei mit deiner Beispiel-.csv.
Das mit den Nullen als Ergebnis kann ich nicht nachvollziehen, ausser die Zeichenfolge der eingelesenen csv.-Zeilen entspricht nicht derjenigen, die du als Beispiel aufgeführt hast oder die Werte stehen nicht in A1:A x, sondern sind irgendwie getrennt, oder beim Einlesen haut was nicht hin.
Aber dafür bruche ich eine Original-.csv, um mir die daten anzuschauen, sonst kann ich dazu garnichts sagen.
Gruß
Chaos
Dann müssen die - 153 und 163 angepasst werden.

Anzeige
AW: Nachtrag
07.09.2007 13:23:30
Matthias
Hallo,
ich hab bissle mit den Zahlen gespielt, aber keine Verbesserung erhalten.
Ich habe Dir noch mal ein weiteres csv-File per mail geschickt.
Gruß
Matthias

AW: Nachtrag
07.09.2007 14:52:00
Chaos
Servus Matthias,
es gibt in dieser neuen CSV-Datei mal 2 wesentliche Unterschiede:
1. Die Anzahl der Zeichen vor der Sekundenzahl, weicht ab von dem, was du beim ertenmal geschickt hattest und 2. der Text in den verschiedenen Teilen lautet: Verbindungen zu D1, u.s.w. und nicht Verbindungen Buisness Intern zu D1.
Somit kann die Auslese-Routine nichts finden und das Ergebnis ist 0.
Also Fakt ist, dass die ganzen möglichen Text-Varianten abgefragt werden müssen. Fakt ist auch, dass die Zeichenanzahl vor der Sekundenangabe nicht variieren darf, weil es sonst zu Fehlern kommt.
Wenn diese Dinge nicht gegeben sind, dann muss man es auf anderem Wege versuchen.
Die x-en sind wahrscheinlich Ersatz für Namen u.s.w., d.h.: sie werden nicht immer den gleichen Namen darstellen, was es noch schwieriger macht.
Gruß
Chaos

Anzeige
Infos
07.09.2007 16:06:40
Matthias
Hallo Chaos,
zu 1. das habe ich leider erst bei näherem hinsehen gesehen, dass die Zeichenanzahl abweicht, sorry ..

1. Die Anzahl der Zeichen vor der Sekundenzahl, weicht ab von dem, was du beim ertenmal geschickt hattest und 2. der Text in den verschiedenen Teilen lautet: Verbindungen zu D1, u.s.w. und nicht Verbindungen Buisness Intern zu D1.


Ich habe es im Originalfile abgezählt und die Zeichenanzahl passt, bis auf einmal, da sind 2 zeichen mehr, wie im per e-mail geschickten File geschrieben. (habe ich wie gesagt, leider erst heute gemerkt)
zu 2. Verbindungen Business Intern zu D1 gibt es in dem File was ich dir geschickt habe. Habe doch geschrieben "nach unten scrollen"
Ich benötige halt nur die Werte (Summe der Sekunden) von "Business Intern zu D1" und "Verbindungen Business Intern zur TK-Anlage", die anderen Werte sind mir egal
die x-en sind immer gleich!! d.h. sie haben immer die länge, die ich in x-en angegeben habe, also wenn ich 14-x-en geschrieben habe, dann sind das auch 14 zeichen im Original, wenn ich 12-x-en eingesetzt haben, dann sind das auch genau 12 zeichen im Original
Gruß
Matthias

Anzeige
AW: Infos
07.09.2007 16:52:00
Chaos
Servus,
das ist nicht das Problem. Die x-en sind völlig wurscht. Das Problem ist die Gesamtzahl der Zeichen vor dem Teilstring Verbindungen...
Und diese ist unterschiedlich!
=LINKS(A3;FINDEN("Verbindung";A3)-1)
hiermit kann man den Teilstring bis Verbindung isolieren.
Als Ansatz:
Daten einlesen, wie gehabt:
Dann Schleife einbauen:
For zeile = 3 To letzte ' in B2 steht das: =LINKS(A2;FINDEN("Verbindung";A2)-1), hoffe du weisst wie man die letzte findet
Cells(2, 2).Copy Cells(zeile, 2)
Next zeile
For zeileNeu = 3 To letzte
str = Len(Cells(zeile1, 1).Value) ' kompletter Zellinhalt
strNeu = Len(cells(zeile1, 2).Value) ' Anzahl Zeichen im Teilstring vor Verbindungen...
diff = str - strNeu
Cells(zeile1, 3).Value = Right(cells(zeile1, 1).Value, diff) ' schreibt in Spalte C den Teilstring ab Verbindungen
Next zeile
Dann für alle gewünschten Möglichkeiten:
dieses Teilmakro laufen lassen:
For Each zelle In bereich ' ab hier werden die Daten ausgelesen
If zelle.Value Like "Verbindungen Business Intern zu D1*" Then 'oder Verbindungen Intern zur TK-Anlage row = zelle.row
anz = Len(Range("A" & row).Value)
diff = anz - 153 ' Hier die Zeichenzahl bis zum Komma vor der Sekundenzahl abziehen
wert = Right(Range("A" & row).Value, diff)
wertNeu = Left(wert, 5)
Range("IV" & row).Value = wertNeu
Dim I As Integer
For I = 2 To 5
Select Case Mid(wertNeu, I, 1)
Case ",":
wertNeu = Left(wertNeu, I - 1)
Range("IV" & row).Value = wertNeu
Exit For
End Select
Next I
End If
Next zelle
summe = WorksheetFunction.Sum(Range("IV3:IV" & letzte)) ' hier natürlich für jede Möglichkeit eine Spalte reservieren
Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = summe ' schreibt die Summen der Einzeldateien nach Sheet(2), diese müssen dann natürlich noch aufsummiert werden.
und diesen teil komplett rausnehmen:
Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = Dateiname
Sheets(2).Range("A65536").End(xlUp).Offset(0, 0).Font.Bold = True
Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = "Verbindungen Buisness Intern zu D1:"
Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = summe & " s"
Sheets(2).Range("A65536").End(xlUp).Offset(0, 0).Font.ColorIndex = 3
Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = "Verbindungen Buisness Intern zur TK-Anlage:"
Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = summe1 & " s"
Sheets(2).Range("A65536").End(xlUp).Offset(0, 0).Font.ColorIndex = 3
Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = "------------------------------------------------------"
Aber du brauchst ja eh nur 2 Varianten. Aber wenn die Zeichenzahl stimmt, wie du sagst, könnte es natürlich auch daran liegen, dass es keine Verbindungen gab. Wie gesagt nicht die Anzahl der x-en ist entscheidend, sondern die Gesamtanzahl der Zeichen.
Ich hoffe du kommst damit zurecht, weil ich leider keine Zeit mehr habe, mich darum zu kümmern.
Fahre nämlich morgen in Urlaub und bin die nächsten 2 Wochen nicht erreichbar.
Gruß
Chaos

Anzeige
AW: Infos
07.09.2007 17:48:00
Matthias
Hallo,
danke für deine super schnellen Antworten.
Ich kann alles leider erst ab Montag testen und hoffe das ich es soweit hinbekomme .. dank deiner Unterstützung.
Ich wünsch dir einen schönen Urlaub und danke dir nochmals für deine Zeit die du investeriert hast.
Gruß
Matthias

AW: Infos
20.09.2007 12:59:02
Matthias
Hallo Chaos,
vielen Dank für deine geopferte zeit.
Leider konnte ich den letzten Akt nicht nachvollziehen und das Makro hat leider auch nicht funktioniert.
Das Problem war denke ich, dass du die Zeilen von hinten nach vorne gelesen hast.
Ich habe nun die Lösung von Franz genommen.
Trotzdem muss ich sagen, dass ich deine Unterstützung toll fand. Klasse Einsatz.
Schönen Urlaub noch.
Gruß
Matthias

AW: csv-Dateien auslesen
06.09.2007 11:24:24
fcs
Hallo Mathias,
wenn es probleme mit der CSV-Datei gibt, dann kopiere als Beispiel eine Datei und benenne die Dateiendung um von CSV in txt.
Öffne die Datei mit einem Text-Editor (z.B. Wordpad) und lösche alles bis auf die ersten 5 Datenzeilen und anonymisiere persönliche Daten. Dann kannst du die Daten hier auch hochladen und es ist für jemenden der Helfen will einfacher mit den Daten zu testen.
Ich kann frühestens heute Abend nach einer Lösung suchen.
Sollen die Daten aus den CSV-Dateien eines Ordners in eine Tabelle geschrieben werden?
Wieviele CSV-Datein können es ca. pro Ordner sein?
Wieviele Datenzeilen können es pro CSV-Datei oder auch insgesamt sein? Kritische Grenze für Exceltabellen (bis Version 2003, XP): ca. 65000!!
Gruß
Franz

AW: csv-Dateien auslesen
06.09.2007 12:40:00
Matthias
Hallo Franz,
danke erstmal für den Tip mit dem Hochladen der csv-Datei.
Wenn möglich sollen die Daten in eine neue Tabelle geschrieben werden.
D.h. es wäre klasse, wenn man eine neue Excel-Datei anlegt und in diese Datei die Daten dann einlesen könnte. Sprich ich habe meine EVN_xxx.csv-Datei in einem Ordner und die selbst erstellte Excel-Datei, in der die Daten aus den csv-Dateien eingelesen werden, im selben Ordner.
Optimal wäre es, wenn ich im root-Ordner die selbst erstellte Excel-Datei habe, in der ich die Daten aus den SubOrdner, in denen die csv-Dateien stehen, eingelesen werden. Die SubOrdner haben folgende Namen: Daten_06_2007, Daten_07_2007, etc.
In den Ordnern stehen derzeit wenn es hochkommt max. 350 Dateien (Größe bis ca 100kb)
Datenzeilen der bisher größten Datei waren wesentlich weniger als 1.000
Solltest Du weitere Fragen haben, werde ich Dir diese umgehend beantworten.
Gruß
Matthias

AW: csv-Dateien auslesen
10.09.2007 10:34:13
Matthias
Hallo Franz,
hattest du inzwischen Zeit dich mit meinem Problem zu beschäftigen?
Chaos konnte mir etwas weiterhelfen, allerdings bin ich halt ein Anfänger und kenne mich mit VBA nicht wirklich aus. Die Datei, die mir Chaos bereitgestellt hat, funktioniert soweit schon, aber, er liest die daten von rechts nach links, wenn ich das richtig sehe. Dies funktioniert leider aber nicht wirklich, da nach der Angabe des Wertes, den ich benötige, die Zeilen eine unterschiedliche Länge aufweisen.
Ich würde mich freuen, wenn du mir weiterhelfen könntest. Das man die Daten eventuell von links nach rechts auslesen könnte oder vielleicht hast du auch eine komplett andere Lösung.
Würde mich freuen, wenn das klappt.
Vielen Dank im Voraus.
Fragen beantworte ich gerne.
Gruß
Matthias

AW: csv-Dateien auslesen
10.09.2007 12:57:37
fcs
Hallo Mathias,
nachdem Chaos sich intensiv engagierte hab ich keine Lösung mehr verfolgt.
Ich bräuchte dann zum Testen aber mal ein Original CSV-File, ggf. mit neutralisierten Daten.
Meine e-mail-Adresse findest du unter Forums-Seiten - Profile - Profilliste - Name: fcs
Meiner Meinung nach müsste man das Ganze in den Griff bekommen, indem man die .CSV-Dateien temporär in .TXT umbenennt und jeweils die Textdateien in Excel mit entsprechenden Trennzeichen für Datenfelder öffnet. CSV-Dateien führen unter Excel-VBA irgendwie ein Eigenleben, so dass dass das spaltenkorrekte Öffnen oft nicht funktioniert.
Dann sollten die Daten spaltenrichtig in der Tabelle stehen und man kann "einfach" über die Spalten mit SUMMEWENN summieren.
Gruß
Franz

AW: csv-Dateien auslesen
12.09.2007 10:44:39
Matthias
Hallo Franz,
habe Dir soweit alles per Mail zukommen lassen.
Ich Danke Dir im Voraus für deine Zeit die du investierst.
Sollten Fragen sein beantworte ich Dir diese gerne.
Gruß
Matthias

AW: csv-Dateien auslesen
20.09.2007 12:56:00
Matthias
Hallo Franz,
vielen herzlichen Dank für Deine großartige Unterstützung.
Es hat einwandfrei geklappt.
Danke, dass du Dir so viel Zeit genommen hast.
Das Makro funktioniert einwandfrei.
Gruß
Matthias

295 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige