Clever-Excel-Forum

Normale Version: csv Import
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo clever - excel - forum,

da ich bisher sehr wenig Ahnung von VBA besitze, versuche ich mich gerade an einem Makro, welches mir csv-Daten in mein Tabellenblatt importiert. Folgendes Makro habe ich bisher gefunden und für mich angepasst.
Jetzt kommen meine Probleme:
  • 1. Die eingelesenen Daten löschen mir meine vorhandenen Daten und überschreiben mir diese immer ab Zeile 1. Die  importierten Daten sollen sich aber an die letzte beschriebene Zeile anhängen.
  • 2. Von meinen eingelesenen Daten (CSV-Daten) soll erst ab der 4. Zeile eingelesen werden. Zeile 1-3 werden nicht benötigt.
Wie können diese Probleme gelöst werden?

Hier mein Makrocode:


Code:
Sub Import
    Dim strFileName As String
    Dim letztespalte As String
    
    With Application.FileDialog(msoFileDialogFilePicker)
         .AllowMultiSelect = False
         .Title = "Datei wählen"
         .InitialFileName = "D.\Daten\*.csv"                                                                                                'Pfad anpassen
         .Filters.Add "CSV-Dateien", "*.csv"
       If .Show = -1 Then
       strFileName = .SelectedItems(1)
     End If
   End With

     With Workbooks.Open(strFileName, Local:=True)
     .Worksheets(1).UsedRange.Copy Destination:=ThisWorkbook.Worksheets("Tabelle1").Cells(1)          'Ziel-Blatt anpassen
     .Close SaveChanges:=False
    End With
Sub End

Ich bin für jede Unterstützung dankbar.

Grüße Peter
Hallo Peter,
Sub Import()
Dim strFileName As String
Dim letztespalte As String

With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Datei wählen"
.InitialFileName = "D:\Daten\*.csv" 'Pfad anpassen
.Filters.Add "CSV-Dateien", "*.csv"
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With

With Workbooks.Open(strFileName, Local:=True).Worksheets(1)
.UsedRange.Offset(3).Copy Destination:=ThisWorkbook.Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Offset(1) 'Ziel-Blatt anpassen
.Parent.Close SaveChanges:=False
End With
End Sub
Gruß Uwe
Hallo Uwe,

erstmal vielen Dank, die Importfunktion funktioniert jetzt.

Jedoch stimmen bei mir einige Spaltenzuordnungen nicht mit meiner Tabelle überein.
Wie kann beim Einlesen eine Spalte ausgelassen werden und wie kann eine Spalte verschoben werden?
Bsp. "Spalte C" der eingelesenen CSV-Datei nicht importieren, "Spalte F" soll in "Spalte G" amgezeigt werden.

Ich bin für jede Unterstützung dankbar.

Grüße Peter
Hallo Peter,

das nachträgliche Bearbeiten ist auch alles im temporären Worksheet möglich:
Sub Import()
Dim strFileName As String
Dim letztespalte As String

With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Datei wählen"
.InitialFileName = "D:\Daten\*.csv" 'Pfad anpassen
.Filters.Add "CSV-Dateien", "*.csv"
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With

With Workbooks.Open(strFileName, Local:=True).Worksheets(1).UsedRange
.Columns("G:G").Cut 'Spalte G wird ausgeschnitten
.Columns("F:F").Insert Shift:=xlToRight 'und als Spalte F eingefügt. Nachfolgende Spalten werden nach recht verschoben
.Columns("C:C").Delete Shift:=xlToLeft 'Spalte C wird gelöscht
.Offset(3).Copy Destination:=ThisWorkbook.Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Offset(1) 'Ziel-Blatt anpassen
.Parent.Parent.Close SaveChanges:=False
End With
End Sub
Gruß Uwe
Hallo Uwe,

Danke für deine Hilfe.

Also mit      Insert Shift:=xlToRight   wird die Spalte um eine Position nach rechts verschoben. Wie kann ich den mehrere Spalten nach rechts verschieben? Jetzt habe ich diesen Befehl mehrmals untereinander geschrieben, bis die Position passt. Aber da gibt es bestimmt auch einen Schalter für einen definierte (festgelegte) Anzahl oder?

Als weiteres müsste ich aus zwei Zellen eine machen. Also die Daten aus "Spalte F" mit den Daten aus "Spalte G" zusammenfassen in "Spalte F". Wie ist das zu realisieren?


Ich bin für jede Unterstützung dankbar.

Grüße Peter
Hallo Peter,

das hat jetzt ja nichts mehr mit dem ursprünglichen Thema CSV-Import zu tun.
Für mich ist dieser Thread erledigt.

Gruß Uwe
Hallöchen,

Zitat: Insert Shift:=xlToRight wird die Spalte um eine Position nach rechts verschoben. Wie kann ich den mehrere Spalten nach rechts verschieben?

bei mir werden alle Spalten die rechts daneben sind um eine Position nach rechts verschoben Smile Nur die letzte fällt "hinten runter" :20:
Hallo,

ich würde es zuerst einmal mit Power Query (Get & Transform) versuchen. Hängt aber auch davon ab, ob deine Excelversion dies schon hergibt.