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

CSV einlesen geht nicht auf jedem Blatt

CSV einlesen geht nicht auf jedem Blatt
24.11.2020 16:36:53
May
Hallo ihr Lieben,
ich bin noch recht am Anfang meiner VBA-Reise.
Ich habe einen Code geschrieben, der eine CSV-Datei zeilenweise einliest. Da ich nicht alle Informationen aus der CSV-Datei benötige, hab ich eine Schleife und eine If-Bedingung eingebaut. Ob diese Verschachtelung so schön ist oder ob man es so macht, weiß ich nicht..
Ich schreibe meistens außerhalb der eigentlichen Excel, in der es später läuft, um die Excel nicht so schnell durcheinander zu bringen.
Nun hat mein Code genau so funktioniert, wie ich das wollte. Nach dem Übertragen in die Excel und Ansprechen des Tabellenblattes ("Computed"), in das die Daten sollen, läuft das Makro nicht mehr, bzw. er "rechnet" ewig, in einem neu hinzugefügten Blatt in derselben Excel funktioniert es aber.
Ich hatte das Problem schonmal und weiß nicht, warum es hier aber nicht dort funktioniert.
Mein Code sieht folgend aus:
Sub exportCSV_importieren()
Dim QuellDatei As String    'Speicherort der Textdatei
Dim Inhalt As String        'Inhalt der TextDatei
Dim Informationen() As String 'Array der TextDatei
Dim Zeile%, Spalte%, letztezeile As Integer       '% = Kurzform vom Datentyp Integer
Dim i%, k As Integer            'Laufvariablen
Dim Kanäle%, Export%, irrelevant As Integer
Kanäle = 4
Export = 11
irrelevant = 6
'Variablen Startwerte zuweisen
Zeile = 4
Spalte = 14
'QuellDatei ansprechen
QuellDatei = ThisWorkbook.Path & "\Filterung\export.csv"
'QuellDatei öffnen
Open QuellDatei For Input As #1
'Informationen in das Tabellenblatt eintragen
Do While Not EOF(1) 'Schleife läuft bis DatenEnde erreicht (EOF = End of File)
'Inhalt der QuellDatei zeilenweise einlesen
Line Input #1, Inhalt
Informationen = Split(Inhalt, ",")
For i = 0 To UBound(Informationen)
For k = 0 To Export
If k > irrelevant Then
If k Mod 2  0 Then
Sheets("Computed").Cells(Zeile, Spalte) = Informationen(i)
Spalte = Spalte + 1
End If
End If
i = i + 1
Next k
k = 0
Zeile = Zeile + 1
Spalte = 14
Next i
Loop
Close #1
End Sub

Die Werte für Kanäle/Export/irrelevant sollen variabel bleiben und später noch angefragt werden.
Vielleicht kann mir ja einer, erstmal ohne die Arbeitsmappe, helfen oder sagen, ob es am Code liegt oder in der Excel irgendwas "los ist".
Lieben Gruß

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV einlesen geht nicht auf jedem Blatt
24.11.2020 17:36:05
onur
"in einem neu hinzugefügten Blatt in derselben Excel" ? Sagst du auch immer: "Ich habe dir eben eine Outlook geschickt" ?
For k = 0 To Export
If k > irrelevant Then
If k Mod 2  0 Then
?
Wieso nicht direkt nur:
For k = 7 To Export step 2
?
oder
For k = irrelevant + 1 To Export
If k Mod 2  0 Then
Was ich auch nicht verstehe:
i = i + 1

i ist doch die Laufvariable der Schleife und wird sowieso immer um 1 erhöht - durch deine Schleife wird sie aber jedes mal um 2 erhöht.
Ausserdem ist ein Code ohner die Datei nicht viel Wert.
Anzeige
AW: CSV einlesen geht nicht auf jedem Blatt
24.11.2020 20:19:55
May
*"..in derselben Excel-Datei", oder was meinst du?
Klingen logisch deine Vorschläge, bekomme allerdings Fehlermeldungen..
For k = 7 To Export step 2
Da bekomme ich eine Fehlermeldung: "Index außerhalb des gültigen Bereichs.."
For k = irrelevant + 1 To Export
If k Mod 2 0 Then
Dort kommt "Überlauf"
i=i+1 setze ich dort hin, weil er i ja erst erhöht, nachdem er die "for k = 0 To Export Schleife" verlässt und er somit nicht den richtigen Wert aus der CSV-Datei einfügen würde. Ich habe es mit der der CSV-Datei abgeglichen und so werden wie Werte richtig zugeordnet.
Meinst du, ich sollte die Excel-Mappe mal hochladen? Sorry, bin neu hier..
Anzeige
AW: CSV einlesen geht nicht auf jedem Blatt
24.11.2020 20:23:40
onur
Wäre ganz gut, die Datei hochzuladen, denn nur anhand des Codes ist alles viel schwerer, wie du siehst.
AW: CSV einlesen geht nicht auf jedem Blatt
24.11.2020 20:43:00
May
Ich habe eben einige Blätter aus der Datei gelöscht und andere Makros, da sie sonst zu groß gewesen wäre. Jetzt klappt es auch, die Werte in das gewünschte Blatt einzufügen..
Weißt du, ob es Probleme gibt, wenn eine Arbeitsmappe zu groß ist?
AW: CSV einlesen geht nicht auf jedem Blatt
24.11.2020 20:45:12
onur
Max 300 KB - Aber du kannst sie versuchsweise als XLSB speichern, dann wird sie kleiner.
AW: CSV einlesen geht nicht auf jedem Blatt
24.11.2020 20:47:50
May
Ne, ich meinte beim Ausführen eines Makros. Also weil es nun als ich einige Daten gelöscht habe, ging.
Okay, das kann ich sonst mal versuchen.
Anzeige
AW: CSV einlesen geht nicht auf jedem Blatt
24.11.2020 21:03:06
May
Ich bekomme sie leider nicht auf 300 KB..
AW: CSV einlesen geht nicht auf jedem Blatt
24.11.2020 21:04:34
onur
Poste mal via Dropbox .
Einfach anmelden, hochladen und Link hier einstellen.
AW: CSV einlesen geht nicht auf jedem Blatt
24.11.2020 21:24:02
onur
Brauchst du immer nur diese 3 Spalten?
Das ist wohl nicht dein Code, oder? Hast wohl irgendwo gefunden und versucht anzupassen?
Anzeige
AW: CSV einlesen geht nicht auf jedem Blatt
24.11.2020 21:32:52
May
Ne, es kann auch sein, dass ich nach hinten raus noch mehr Spalten brauche. Deshalb habe ich die Variablen Kanäle/Export/irrelevant mit aufgenommen.
Na ja doch. Ich bin nun auch noch kein Profi darin. Wieso?
AW: CSV einlesen geht nicht auf jedem Blatt
25.11.2020 08:18:07
May
Okay, das sieht super aus und funktioniert. Ich wusste nicht, dass es so einfach geht. Danke!
Ich verstehe noch nicht, durch welchen Teil des Codes die Überschriften der CSV-Datei, also "besch180","KLinks180".., außen vorgelassen werden bzw. wie das funktioniert. Ohne das "If zeile 'größer' 3 Then" tauchen sie auf, aber ist das genau dafür oder für was anderes vorhanden? Das würde ich gerne verstehen.
Und eine weitere Sache habe ich noch: Die Excel-Mappe ist zur Auswertung von Versuchen und es kann sein, dass die export.csv noch weitere Spalten enthalten kann, wie du ja schon gefragt hast. Die Anzahl möchte ich aber nicht manuell im Code ergänzen. Ich dachte an eine Abfrage, wieviele Kanäle..verwendet wurden. Gibt es da eine (elegante - das liegt mir ja noch nicht so) Möglichkeit, das in die ".Range().Arr()"-Anweisungen oder wo sinnvoll einzubinden?
Lieben Gruß und Danke nochmal für deine Hilfe!
Anzeige
AW: CSV einlesen geht nicht auf jedem Blatt
25.11.2020 13:17:56
onur
Gar kein Problem, mache ich, sobald ich nachher wieder zu Hause bin.
AW: CSV einlesen geht nicht auf jedem Blatt
26.11.2020 20:38:18
May
Sorry, hab gerade noch so viele andere Baustellen.. Habs mir angeguckt und noch nicht ganz verstanden, wie der Code augebaut ist. Muss ich nochmal genau unter die Lupe nehmen.
Danke auf jeden Fall für deine Arbeit!
Falls du noch eine schnelle Antwort auf die Frage mit den Überschriften hast, würde ich mich freuen - um nach und nach mehr zu verstehen, wie ich mit VBA umgehen muss. Ansonsten schönen Abend :-)
Anzeige
AW: CSV einlesen geht nicht auf jedem Blatt
26.11.2020 20:39:26
onur
"auf die Frage mit den Überschriften" ?
AW: CSV einlesen geht nicht auf jedem Blatt
26.11.2020 20:46:44
onur
"Ich verstehe noch nicht, durch welchen Teil des Codes die Überschriften der CSV-Datei, also "besch180","KLinks180".., außen vorgelassen werden bzw. wie das funktioniert. Ohne das "If zeile 'größer' 3 Then" tauchen sie auf, aber ist das genau dafür " - sorry, hatte ich schon beantwortet, aber offenbar ist die Antwort irgendwie verschwunden.
Du hast es erraten - es ist genau dafür. Da die CSV bereits in der ersten Zeile die Überschriften enthält, muss diese Zeile natürlich übersprungen werden.
AW: CSV einlesen geht nicht auf jedem Blatt
26.11.2020 20:57:35
May
Macht ja nichts.
Alles klar, Danke!
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige