Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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
csv-Import - gefiltert
11.02.2015 08:29:24
Patrick
Hallo Fachkreis,
ich muss mehrere csv-Dateien nach Excel importieren.
Allerdings brauche ich hierfür nur Teile dieser Datei. Soll heißen, ich brauche die zweite und die letzte Zeile der Datei und hier dann auch nur die ersten beiden Spalten. Im Anhang ein Beispiel der csv_Datei. https://www.herber.de/bbs/user/95673.txt
Vielleicht habt ihr eine Idee?
Danke,
Patrick

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: csv-Import - gefiltert
11.02.2015 09:11:03
Klaus
Hallo Patrick,
ich würd das CSV in einem neuen Excel-Workbook öffnen, die zweite und letzte Zeile per VBA kopieren und dann das neue Workbook wieder schließen. Es geht aber bestimmt auch performanter und eleganter, darum lasse ich mal offen.
Grüße,
Klaus M.vdT.

AW: csv-Import - gefiltert
11.02.2015 15:17:04
Patrick
Hi,
danke für euere Tipps....aber...es sind wirklich viele csv Dateien. @Klaus: deshalb habe ich deine Varianbte vorher schon ausgeschlossen.
@Jochen: die Variante hatte ich schon gegoogelt. Aber hier ein Block von 1-26 importiert. Ich brauche aber 1 und letzte Zeile. Und die kann mal 100 und mal 300 sein. Funktioniert also leider auch nicht. @yummi: wenn ich dich richtig verstehe öffnest du den "normalen" Import für txt-Dateien in excel. Das ist bei der Dateianzahl leider auch kein Ziel für mich.
Danke für eure Ideen...aber leider bin ich noch nicht weiter.
Noch weitere Ideen im Kopf versteckt?
Gruß,
Patrick

Anzeige
AW: csv-Import - gefiltert
11.02.2015 15:52:38
JoWE
Hi Ptarick,
wie wär's hiermit:
Sub fixe_Zeilen_aus_Text_Datei()
Const csFile As String = "C:\Daten\DeineDatei.txt"
Dim sTxt As String
Dim sTxt1 As String
Dim i As Long
On Error GoTo errHandler
Open csFile For Input As #1
Do While Not EOF(1)
i = i + 1
Line Input #1, sTxt
If i = 2 Then sTxt2 = sTxt
Loop
Close #1
Cells(1, 1) = sTxt2
Cells(2, 1) = sTxt
Exit Sub
errHandler:
MsgBox "Fehler: " & Err.Number & vbCrLf & Err.Description
End Sub
Gruß
Jochen

AW: csv-Import - gefiltert
11.02.2015 20:00:18
Patrick
Hi Jochen,
auch ein Dank in deine Richtung.
Hier muss ich aber bei jedem Import den Dateinamen ändern, oder? Ich habe es noch nicht versucht mit *.csv mehr zu importieren.
Danke,
Patrick

Anzeige
AW: csv-Import - gefiltert
12.02.2015 13:54:50
JoWE
Hallo nochmal,
ja!
Oder mit "dir" (Directory) 'ne Schleife drum bauen!
Dazu findest Du jede Menge Infos bei Tante Google!
Gruß
Jochen

AW: csv-Import - gefiltert
11.02.2015 09:20:21
yummi
Hallo Patrick,
wenn es wirklich eine csv Datei und nicht eine txt Datei so wie in deinem Anhang ist, dann kannst du sie so öffnen:
Workbooks.Open Filename:=filetoopen, local:=True
filetoopen ist dann entsprechend zu füllen.
WEn Du die Datei so öffnest, dann werden dir alle Spalten einzeln angezeigt und du kannst sie so behandeln, als wenn du ein normales excel file geöffnet hättest.
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
mit geöffneteDatei.Range("A2:B2") bzw.
geöffneteDatei.Range("A" & letztezeile & ":B" & letztezeile) kannst du dann auf die gewünschten Werte zugreifen und damit anstellen was immer du willst.
Gruß
yummi

Anzeige
AW: csv-Import - gefiltert
11.02.2015 16:44:29
Oberschlumpf
Hi Patrick,
ich bins wieder...auch mit ner Lösungsidee :-)
Bezugnehmend auf deinen ersten Thread mit dieser Frage ( https://www.herber.de/forum/messages/1408524.html ), möchte ich noch erwähnen, dass ich dich mit meiner Reaktion eigtl nur darauf aufmerksam machen wollte, dass du einfach nur eine/mehrere Bsp-CSV-Dateien zur Verfügung hättest stellen brauchen.
Denn nur dein Text war wirklich zu wenig.
Nun denn, die Bsp-Datei kam ja mit diesem Thread, und nun schau dir mal meine Lösungsidee an:
https://www.herber.de/bbs/user/95681.xls
Du kannst meine Datei in einem beliebigen Verzeichnis speichern.
Meine Datei ist so aufgebaut:
Teil 1:
durch den Datei-Öffnen-Dialog wirst du aufgefordert, eine CSV-Datei zu öffnen
Tust du das nicht, klickst also auf Abbrechen, wird auch der Code beendet
Teil 2:
In der Tabelle, in der das Makro gestartet wird, werden die Inhalte aller Zellen gelöscht.
Wenn du das nicht willst, deaktiviere die Codezeile
Cells.Delete
Die von dir ausgewählte csv-Datei enthält sowohl den Pfad als auch den Dateinamen.
Es wird der Pfad "ausgelöst", da später der Pfad benötigt wird, weil ja im gleichen Verzeichnis viele csv-Dateien gespeichert sind.
Teil 3:
Hier werden nun in dem Verzeichnis mit den csv-Dateien alle Dateinamen aller csv-Dateien in einer Array-Variablen gesammelt.
Teil 4:
Nun wird nacheinander jede der gefundenen csv-Dateien geöffnet, eingelesen, und nur die gewünschten Werte aus der 2. und letzten Zeile in die Excel-Tabelle in die gewünschten Spalten eingetragen.
FERTIG :-)
Hilfts?
Ciao
Thorsten

Anzeige
AW: csv-Import - gefiltert
11.02.2015 19:41:36
Patrick
Hi Thorsten,
das ist mal ein sehr cooles Makro. Läuft vom Grundsatz her schon sehr gut. Kleine Einschränkung aber: wenn ich nun z.B. heute 5 csv-Dateien einlese und übermorgen stehen in diesem Verzeichnis 5 andere, dann sollte der Import nicht überschrieben sondern unter die letzte Zeile angehangen werden. Geht das auch?
Danke,
Patrick

AW: csv-Import - gefiltert
11.02.2015 23:33:36
Oberschlumpf
Hi Patrick
Schön, freut mich schon mal, dass es dir gefällt.
Den "Schönheitsfehler" beseitigst du, in dem du die Zeile
Cells.Delete
deaktivierst oder löschst.
Nun werden neue Daten immer ab der nächsten, freien Zeile hinzugefügt.
Hilfts?
Ciao
Thorsten

Anzeige
AW: csv-Import - gefiltert
12.02.2015 10:00:19
Patrick
Hi Thorsten!
super! Das hat geholfen.Würde jetzt gerne weitere Dinge ausprobieren. Dafür will ich euch aber nicht alle Zeit rauben...aber an welcher Stelle im Makro kann ich steuern, dass er auch Spalte 12 einliest. Wie du liest bin ich Anfänger. VBA fasziniert - nur leider hab ihcnoch nicht das richtige Lehrmaterial gefunden, dass es auch mal hängenbleibt.
Hätte noch eine andere Idee...aber ich versuche erst noch mal selbst...und dann poste ich vermutlich eine neue Frage.
Danke noch einmal!
Patrick

AW: csv-Import - gefiltert
12.02.2015 13:28:08
Oberschlumpf
Hi Patrick
such im Code nach der Zeile
Erase larDest
(sie kommt im Mom nur 1x vor)
schreib direkt darunter diesen Code:

larDest = Split(larSplit(11), ",")
'wichtig!!!! "C" in die Spalte ändern, wohin du Inhalt Spalte1 der 12. Zeile aus csv-Datei  _
haben willst
With Range("C" & lloNext)
.NumberFormat = "@"
.Value = larDest(0)
End With
'wichtig!!!! "D" in die Spalte ändern, wohin du Inhalt Spalte2 der 12. Zeile aus csv-Datei  _
haben willst
With Range("D" & lloNext)
.NumberFormat = "0000.000"
.Value = larDest(1)
End With
Erase larDest

und beachte! die wichtig!!!-Hinweise
Denn leider hast du mal wieder etwas ungenau formuliert, was du möchtest.
Du hast nicht die Ziel-Spalten verraten, deswegen musst du den Code noch anpassen.
Hilfts?
Ciao
Thorsten

Anzeige
AW: csv-Import - gefiltert
12.02.2015 15:28:48
Patrick
Hallo Thorsten,
sorry mit dem "ungenau"....aber ich hab nach SPALTE 12 und nicht nach ZEILE 12 gefragt - so genau war ich schon ;-)
Die soll dann in Excel in die Spalte I. Kannst du mir einen Tipp geben?
Danke, Patrick

AW: csv-Import - gefiltert
12.02.2015 19:25:17
Oberschlumpf
Hi Patrick
OK, hast Recht...auch ich sollte genauer lesen!
Nun gut, vergiss meine letzte Antwort.
Such im Code nach dieser Zeile:
Erase larSplit
...und schreib direkt oberhalb dieser Zeile diesen Code:

Erase larDest
larDest = Split(larSplit(UBound(larSplit)), ",")
With Range("I" & lloNext)
.NumberFormat = "000.0"
.Value = larDest(11)
End With
Erase larDest
kurze, hofftl verständl Erklärung.
larDest ist eine Array-Variable und kann eigtl unendlich viele, verschiedene Werte aufnehmen, die alle getrennt voneinander angesprochen/abgerufen werden können.
In deinem Fall erhält larDest alle Werte aus den gewünschten Zeilen der csv-Dateien.
Die Anzahl der vielen Werte in larDest ist abhängig davon, wieviele Kommata in den Datenzeilen der csv-Dateien vorhanden sind - denn - ich verwende, dank deiner Info, das Komma (,) als Trennzeichen.
Im Normalfall beginnt die Zählung der Werte einer Array-Variablen mit 0.
Das heißt, ...
...larDest(0) ist der 1. Eintrag der Variablen
...larDest(1) ist der 2. Eintrag der Variablen
...larDest(2) ist der 3. Eintrag der Variablen
...
deswegen ist...
...larDest(11) ist der 12. Eintrag der Variablen
nur für den Fall, dass du dich wunderst, wieso im neuen Code larDest(11) abgerufen wird, obwohl du doch eigentlich den 12. Eintrag haben wolltest.
So, vielleicht hast du nun wieder ein wenig dazu gelernt, was VBA betrifft.
Du fragtest/erwähntest in einem deiner anderen Beiträge, dass du nohc nicht so recht weißt, wie man am besten VBA erlernen kann.
Bei mir geht es am besten, wenn ich ein wirkliches Ziel vor Augen habe, dass ich erreichen möchte.
Am Anfang nutzte ich oft den Makro-Recorder, nur, um einfach erst mal zu sehen, wie denn "echter" VBA-Code aussieht, damit ich ein Gefühl dafür bekomme.
Eine weitere, wirklich gute Info-Quelle ist die Excel-Hilfe an sich.
Ich gebe im VBE einen Befehl ein, den ich zwar kenne, aber noch nicht wirklich verstehe und drücke auf F1.
Sehr oft schon hat mir die Hilfe weiterhelfen können.
Und natürlich hab ich hier im besten Excel-Forum, das ihc kenne, sehr oft sehr viele Fragen gestellt.
Hier sind wirklich sehr oft, sehr viele, sehr kompetente Antworter am Werk.
Deswegen empfehle ich auch dir:
Frag hier so oft wie du willst.
nur ne kleine bitte :-)
Frag nicht alles im gleichen Thread, weil wenn du hier jetzt alles weiter fragst, "muss" meist alles ich beantworten.
Besser ist, wenn neues Problem, dann neuen Thread eröffnen.
Aber mach dir jetzt hier keinen Kopp. Alles ist gut. Ich beantworte ja auch noch immer sehr ausführlich, oder? ;-)
Ach so...leider eine Unsitte vieler Fragender :-/
Fragen werden oft gestellt, aber leider gibt es nicht immer Rückmeldungen, WENN ES DENN erfolgreich war mit einer Antwort.
Da fänd ich es schon shcön, wenn wirklich JEDE Antwort - besonders die, die zur Lösung führen - ausreichend Feedback erhalten.
Denn....wir "opfern" ja für euch unsere Freizeit.
Ciao
Thorsten

Anzeige
AW: csv-Import - gefiltert
12.02.2015 19:57:16
Patrick
Hi Thorsten,
danke für deine Zeit und auch für deine Bemühungen mir ein wenig den Einstieg zu VBA zu erleichtern.
Sehr gute Erklärung der Variablen! Ich gehe ähnlich vor: Makrorecorder auf der einen Seite und die Excel-VBA-Foren auf der anderen Seite. Direkt nach AltF11 einfach lostippen klappt nicht, dafür fehlen mir die ganzen Befehle. Aber ich bleibe dran!
Ach ja...dein Makro läuft super. Aber das wusstest du schon, oder? ;-)
Gruß,
Patrick

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige