Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

CSV Wert auslesen und dann Zeile kopieren

Forumthread: CSV Wert auslesen und dann Zeile kopieren

CSV Wert auslesen und dann Zeile kopieren
01.06.2025 14:13:05
Mike
Hallo zusammen,

ich hoffe Ihr könnt mir bei einem Problem helfen.

Ausgangssituation:
1 CSV Datei (größe ca 9 MB mit Kundendaten)
1 xlsm-Datei mit mehreren Tabellenblättern

Bislang kopiere ich mittels VBA Code den kompletten Inhalt der CSV Datei (ohne diese zu öffnen) in die xlsm Datei in das
Tabellenblatt "Daten" ein, was die xlsm Datei beim abspeichern aufbläht (ca 6 MB).

Hier der aktuelle Code:

Sub Import_Daten()


Dim sPfad As String
Dim wbQuelle As Workbook

'ScreenUpdating und PopUps deaktivieren'
Application.ScreenUpdating = False
Application.DisplayAlerts = False

'Dateipfad der Quelldatei'
sPfad = "Pfad zur Quelle.csv"

'Prüfen, ob Datei existiert'
If Dir(sPfad) > "" Then

'Arbeitsmappe öffnen'
Set wbQuelle = Workbooks.Open(sPfad, local:=True)

'Daten kopieren und einfügen'
wbQuelle.Worksheets(1).Range("A:CU").Copy ThisWorkbook.Worksheets(13).Range("A1")

'Arbeitsmappe schliessen'
wbQuelle.Close SaveChanges:=False
End If

'ScreenUpdating und PopUps aktivieren'
Application.ScreenUpdating = True
Application.DisplayAlerts = True


End Sub



Gibt es die Möglichkeit mittels VBA einen Code zu schreiben der folgendes kann:

Im Feld E8 der xlsm Datei steht die Kundennummer, diese soll bim klicken auf einen Button in der CSV gesucht werden ohne diese zu öffnen,
anschließend soll die komplett Zeile in der die Kundennummer steht in die xlsm Datei (Tabellenblatt "Daten") kopiert werden.

Hoffe ich habe mich verständlich ausgedrückt.

Vielen Dank für Eure Hilfe.
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV Wert auslesen und dann Zeile kopieren
01.06.2025 14:31:29
BoskoBiati
Hi,

Dein Excel bietet Dir doch Alles, was Du brauchst:

Userbild

Gruß

Edgar

AW: CSV Wert auslesen und dann Zeile kopieren
01.06.2025 14:34:32
Eifeljoi 5
Hallo

Mein Tipp:
Warum VBA? Und warum kopieren? Ich halte absolut nix von kopieren, hier passieren die meisten Fehler.
Besser lade nur den Teil der csv-Datei per Power Query ein den du wirklich an der Stelle auch wirklich brauchst.
Anzeige
AW: CSV Wert auslesen und dann Zeile kopieren
01.06.2025 22:16:10
Mike
Danke für die schnellen Antworten.

Ich kenne mich mit Power Query nicht aus. VBA habe ich auch nur über Tutorials zusammengefügt.

Bislang funktioniert das mit dem kopieren ohne Probleme. Vielleicht könnte ich etwas Hilfestellung
bekommen.

Wichtig ist dass die Kundendetails bei Eingabe der Kundennummer ausgespielt bekomme. Damit ich
nur mit diesem Datensatz in der Excel-Datei weiter arbeiten kann.

Vielen Dank.
Anzeige
Wenn du ein paar...
02.06.2025 21:59:24
Case
Moin Mike, :-)

... anonymisierte Daten in einer Beispiel-CSV-Datei (Aufbau ist wichtig) zur Verfügung stellst (kannst die Datei auch zippen, oder umbenennen, falls *.csv nicht zum hochalden geht), dann zeige ich dir wie das per VBA und Power Query geht. ;-)

Servus
Case
Anzeige
AW: Wenn du ein paar...
06.06.2025 21:30:13
Mike
Hallo Case,

bitte entschuldige die verspätete Antwort.

Anbei die csv Datei als txt-Datei. Die Originaldatei hat insgesamt 15000 Datensätze.
Ich habe diese txt Datei auf 7 Datensätze reduziert. Konnte keine zip Datei hochladen.

In der xlsm-Datei suchen wir nach dem Kennzeichen (XX-XX...).

Falls dies nicht möglich ist werde ich nach wie vor die csv Datei importieren.

Vielen Dank für die Hilfe.

Gruß Mike


https://www.herber.de/bbs/user/177689.txt
Anzeige
AW: Wenn du ein paar...
06.06.2025 22:48:11
daniel
Hi
sowas in der art?

Sub test()

Dim pfad As String
Dim f As Long

Dim x As String, y
Dim suchwert As String

pfad = "C:\???\???.csv"

suchwert = Sheets("Tabelle1").Range("E8").Value
f = FreeFile
Open pfad For Input As f

Do While Not EOF(f)
Line Input #f, x
If x Like "*" & suchwert & "*" Then
y = Split(x, ";")
Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, UBound(y) + 1) = y
End If
Loop
Close #f
End Sub


Gruß Daniel
Anzeige
Im Anhang...
07.06.2025 00:05:52
Case
Moin Mike, :-)

… habe ich dir ein Beispiel erstellt (VBA und Power Query): ;-)
https://www.herber.de/bbs/user/177690.zip

H1 habe ich einen Namen (Suchbegriff) gegeben (siehe Namensmanager). ;-)

A1 hat den Namen PfadDatei mit der Formel: ;-)
=TEXTVOR(ZELLE("filename");"[")&"TestDatei.txt"

Damit hast du immer den Pfad in welcher die Exceldatei ist. Daran habe ich noch "TestDatei.txt" angehängt. ;-)

Im Makro arbeite ich mit Input(LOF(1), #1) - die Datei wird auf einen Rutsch in den Speicher gelesen. Bei 15.000 Zeilen sollte das kein Problem sein. ;-)

In Power Query ist in tblErg_2 mit List.PositionOf die Geschwindigkeit wahrscheinlich höher als in tblErg_1 mit Table.SelectRows. Die ist auch nur als Verbindung. ;-)

Das alles ist auf deine Beispieldatei angelegt. Wenn die anders aussieht, musst du anpassen. ;-)

Die Aktualisierung der Query läuft über ein Ereignismakro. Ohne VBA musst du mit STRG+ALT+F5 nach jeder Änderung in H1 die Daten neu holen/laden. ;-)

Schau es dir an - und mach was draus. ;-)

Servus
Case
Anzeige
AW: Im Anhang...
07.06.2025 12:46:29
Mike
Hallo Case,

danke das sieht gut aus, ich werde versuchen mit meinen wenigen Kenntnissen die originale Datei mit
der Tabelle verknüpfen und testen. Schonmal danke für die super Hilfe.

Grüße Mike

Forumthreads zu verwandten Themen

Anzeige
Anzeige