Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
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-Import

CSV-Import
27.03.2024 11:08:43
Markus K.
Guten Tag zusammen,

ich möchte eine csv-Datei in ein Excel-Sheet importieren und grundsätzlich ist die Herangehensweise klar (zumindest funktioniert der Import schon mal).
Der Import soll täglich ausgeführt werden, das sich die csv-Datei täglich erweitert.
Ein kleiner Ausschnitt der csv-Datei:

Position Form Artmat image article variant
1 BEN 11-17101-01 1117101 11-17101 '01
2 BEN 11-17101-07 1117101 11-17101 '07
3 DINO 11-23301-12 1123301 11-23301 '12
4 DINO 11-23301-14 1123301 11-23301 '14
5 DINO 11-23302-12 1123302 11-23302 '12
6 DINO 11-23302-17 1123302 11-23302 '17
7 FINN 11-24304-01 1124304 11-24304 '01

Das tägliche Update der csv-Datei umfasst weitere Artikel und zugehörige Varianten, die dann natürlich beim Einlesen einsortiert werden sollen.

Ich hätte jetzt im Excel-Sheet jetzt gerne folgende Liste nach dem Import:
In Spalte 1 sollen die Artikel (11-17101 usw.) untereinander stehen und jeweils unter dem Artikel die Varianten (01, 07 usw.) dazu.
11-17101
01
07
11-23301
12
14
11-23302
12
17
11-24304
01
usw...

Ich habe wie gesagt den Import soweit, dass mir die Auflistung wie oben gezeigt angelegt wird, allerdings nicht mit den kurzen Varianten-Nummern unter dem jeweiligen Artikel, sondern in der langen Version, also so:
11-17101-01
11-17101-07
11-23301-12
11-23301-14
11-23302-12
11-23302-17
11-24304-01

Ein Lösungsansatz, wie ich zum gewünschten Ergebnis komme, wäre schön, eventuell müsste ich meinen Code auch nur geringfügig ändern.
Sub import_new_csv()

Dim zeilen As String, stext() As String, form As String, variante As String, temp_artikel As String, artmat As String, check_artikel As String
Dim i As Integer, index_form As Integer, index_article As Integer, index_artmat As Integer, index_variant As Integer, next_row As Integer, nächster As Integer

pfad_artikelliste = ThisWorkbook.Path
name_artikelliste = ThisWorkbook.Name
Actual_File_Name = ActiveWorkbook.Name

pfad_csv = "C:\Dokumente\CSV\"
name_csv = "N0107619_ara_Fotobuch_Daten_Export.csv"
check_artikel = "check"

' Datei für Import öffnen
Open pfad_csv & name_csv For Input As #1
While Not EOF(1)
Line Input #1, zeilen

' erste Zeile
If Left(zeilen, 8) = "Position" Then
stext = Split(zeilen, ";")
For i = LBound(stext) To UBound(stext)
' Index für Form
If stext(i) = "Form" Then
index_form = i
End If

' Index für Artikel
If stext(i) = "article" Then
index_article = i
End If

' Index für Variante
If stext(i) = "variant" Then
index_variant = i
End If

' Index für Artmat
If stext(i) = "Artmat" Then
index_artmat = i
End If
Next i
End If

' alle weiteren Zeilen mit Daten
If Left(zeilen, 8) > "Position" Then
stext = Split(zeilen, ";")
temp_artikel = Replace(stext(index_article), """", "")

form = Replace(stext(index_form), """", "")
variante = Replace(stext(index_variant), """", "")
artmat = Replace(stext(index_artmat), """", "")
End If

Application.Windows(Actual_File_Name).Activate
next_row = 5

'Set finden = Cells.Find(what:=temp_artikel, after:=ActiveCell, LookIn:=xlFormulas, lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
Set finden = Cells.Find(what:=artmat, after:=ActiveCell, LookIn:=xlFormulas, lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)

If finden Is Nothing Then
nächster = 5

'Do While Tabelle1.Cells(nächster, 1) temp_artikel
Do While Tabelle1.Cells(nächster, 1) artmat
If Tabelle1.Cells(nächster, 1) = "" Then
Exit Do
End If

nächster = nächster + 1
Loop

Cells(nächster, 1).Activate
Tabelle1.Rows(nächster).Insert
'Range("A" & nächster).Value = temp_artikel
Range("A" & nächster).Value = artmat
If check_artikel > temp_artikel And check_artikel > "check" Then
' Rahmen
Range("A" & nächster, "L" & nächster).Borders(xlEdgeTop).LineStyle = xlContinuous
' With Selection.Borders(xlEdgeTop)
' .LineStyle = xlContinuous
' .ColorIndex = xlAutomatic
' .TintAndShade = 0
' .Weight = xlThin
' End With
End If
Else
nächster = 5


End If
If temp_artikel > "" Then
check_artikel = temp_artikel
End If
Wend
Close #1

Tabelle1.Range("date_last_import").Value = DateTime.Date
End Sub


Vielen Dank schonmal füe Eure Hilfe.

Grüße

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV-Import
27.03.2024 12:41:31
schauan
Hallöchen,

ein Ansatz wäre, zu prüfen, ob die "lange" Artikelnummer schon da ist.
Im Prinzip

If Worksheetfunction.CountIf(Range("A1:A"&aktuellezeile,langenummer)>1 then 

Cells(aktuellezeile,1).Value = left(langenummer,2)
Else
Cells(aktuellezeile,1).Value =langenummer
End If


Das wäre dann dort
Range("A" & nächster).Value = artmat
mit Deinen Variablen usw. umzusetzen.

AW: CSV-Import
27.03.2024 14:50:29
Yal
Hallo Makrus,

probiere mit Power Query: https://excelhero.de/power-query/power-query-ganz-einfach-erklaert/

Die Frage der tägliche Aktualisierung muss genauer gestellt werden: gibt es täglich Information die verloren gehen, wenn diese nicht übernommen wurden? Ansonsten braucht man eine Aktualisierung, nur wenn jemand auf die Daten zugreifen möchte.

VG
Yal
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige