Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

csv Import
#1
Smile 
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top
#5
Smile 
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
Antworten Top
#6
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
Antworten Top
#7
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:
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
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.
VG, wisch
Wer Hilfe nimmt, sollte auch Hilfe geben! Auch wenn dies auf einem ganz anderem Gebiet geschieht.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste