Hab ein Makro, welches mir eine bzw mehrere CSV Datein einliest und in ein Excel speichert. Bei der Übertragung werden normalerweise alle Daten übertragen (Überschrift + Werte).
Jedoch wenn ein CSV File gleiche Werte hat, dann werden diese nicht übertragen.
Beispiel:
KONTO|DEPOT|KONTO_K|DEPOT_D|KON|DEP|LESS|PRIDE|...
45787|00001|3599887|EUREURI|300|300|1300|14000|...
45788|00002|3599889|EUREUIE|250|300|1300|14000|...
45790|00003|3599899|PERSILF|100|300|1300|14000|...
Dieses obige csv file wird ins excel eingespielt und sieht danach so aus:
KONTO|DEPOT|KONTO_K|DEPOT_D|KON|DEP|LESS|PRIDE|...
45787|00001|3599887|EUREURI|300| | | |
45788|00002|3599889|EUREUIE|250| | | |
45790|00003|3599899|PERSILF|100| | | |
(Im CSV File sind alle Werte durch ';' getrennt usw u ich benutze folgede Logik, welche einwandfrei funktioniert, wenn nicht solche teilweise gleiche Werte pro Spalte wärden..
'Dieses Makro kopiert ein einzelnes auswählbares CVS File ins Excel
Private Sub ImportiereCSVDatei()
Dim wbTarget As Workbook
Dim wbSource As Workbook
Dim ws As Worksheet
Dim fd As FileDialog
Dim fso
Dim fileCSV As Variant
Dim dateiname, tmp As String
Dim strNameSheet As String
Dim lngZaehler As Long
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Set fso = CreateObject("Scripting.Filesystemobject")
Set wbTarget = ActiveWorkbook
Application.DisplayAlerts = False
'Datei auswählen
With fd
.Title = "CSV-Datei suchen..."
.ButtonName = "Öffnen"
.AllowMultiSelect = False
.Filters.Add "CSV-Dateien", "*.csv", 1
.FilterIndex = 1
If .Show = -1 Then
'Schleife geht durch das ausgewählte File
For Each fileCSV In .SelectedItems
'Prüfung ob es wirklich ein CSV File ist
If LCase(Right(fileCSV, 3)) = "csv" Then
'Öffnen des CSV Files
Workbooks.OpenText Filename:=fileCSV
Set wbSource = ActiveWorkbook
On Error Resume Next
Set ws = wbTarget.Worksheets(fileCSV)
If Err 0 Then
'CSV File wird hinter den bereits bestehende Tabellenblätter angehängt
Set ws = wbTarget.Worksheets.Add(After:=wbTarget.Sheets(wbTarget.Sheets. _
Count))
Blattname:
'Eingabe des Blattnamens der einzulesened CSV Datei - verpflichtend!
strNameSheet = InputBox("Bitte verpflichtend einen Namen für das _
Tabellenblatt eingeben: ", _
Title:="CVS-Datei - Blattname", Default:=strNameSheet)
'Falls keine Angabe - Nochmalige Eingabe
If strNameSheet = "" Then
GoTo Blattname
Else
'Function - prüft auf Registerblattnamensgleichheit
If fncCheckSheetName(strSheetName:=strNameSheet, wkb:=wbTarget) = _
True Then
MsgBox ("Blatt """ & strNameSheet & """ ist schon vorhanden!")
GoTo Blattname
End If
End If
'Setzen des Namens ins Registerblatt
ws.Name = strNameSheet
ws.Range("A:ZZ").Clear
End If
'Der eigentliche Sinn des Makros => Kopieren
wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), _
DataType:=xlDelimited, Space:=True, ConsecutiveDelimiter:=False, Semicolon:=True
wbSource.Worksheets(1).Range("A:ZZ").Copy Destination:=ws.Range("A1")
wbSource.Close False
End If
Next fileCSV
End If
Application.DisplayAlerts = True
End With
Call MsgBox("Programm wurde beendet", vbExclamation, "E N D E")
End Sub
Bitte um Hilfe.
Danke