Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1208to1212
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

Datei Import

Datei Import
Careem21
Hallo zusammen,
ich habe für ein kleines Projekt hier im Forum folgenden Code gefunden:


Sub einlesen()
Dim wb As Workbook, wks As Worksheet, wbAktiv As Workbook, wksAktiv As Worksheet
Dim rngZelle As Range
Dim strVerzeichnis As String
Dim Dateiname As Variant, DateinameTXT As String
Dateiname = Application.GetOpenFilename(FileFilter:="CSV (*.csv), *.csv", _
Title:="Daten")
If Dateiname = False Then Exit Sub
strVerzeichnis = VBA.CurDir
Set wbAktiv = ActiveWorkbook
Set wksAktiv = ActiveSheet
Set rngZelle = wksAktiv.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Dateiname = Dir(strVerzeichnis & Application.PathSeparator & "*.csv")
Application.ScreenUpdating = False
Do Until Dateiname = ""
'CSV-Datei temporär als txt-Datei kopieren
VBA.FileCopy Source:=Dateiname, Destination:=Left(Dateiname, Len(Dateiname) - 3) & "txt" _
DateinameTXT = Left(Dateiname, Len(Dateiname) - 3) & "txt"
'Umbenannte Kopie öffnen
Application.Workbooks.OpenText filename:=DateinameTXT, Origin:=xlWindows, _
StartRow:=2, _
DataType:=xlDelimited, ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=True, _
Comma:=False, _
Space:=False, _
Other:=False
Set wb = AktiveSheet
'Daten Kopieren
wb.Sheets(1).UsedRange.Copy
rngZelle.PasteSpecial Paste:=xlPasteValues
'Nächste Einfügezelle setzen
Set rngZelle = rngZelle.Offset(wb.Sheets(1).UsedRange.Rows.Count, 0)
wb.Close savechanges:=False
'TXT-Kopie wieder löschen
VBA.Kill (DateinameTXT)
Dateiname = Dir
Loop
Application.ScreenUpdating = True
End Sub


Dieser funktioniert soweit wunderbar, es fehlen allerdings noch ein paar Kleinigkeiten, die angepasst werden müssten.
1. Beim öffnen des Auswahlfenster möchte ich direkt in einen bestimmten Ordner verweisen (C:\Auswertung\Aktuell).
2. Die Daten aus der .csv Datei sollen in ein anderes Tabellenblatt geschrieben werden.
Meinen Button für das Einlesen der Daten befindet sich im Tabellenblatt "Einlesen", die Daten sollen aber im zweiten Tabellenbaltt "Auswertung" auftauchen.
Könnte mir diesbezüglich bitte jmd. helfen?
Vielen Dank schonmal!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datei Import
19.04.2011 11:55:05
Rudi
Hallo,
.....
ChDrive "c"
ChDir "C:\Auswertung\Aktuell"
Dateiname = Application.GetOpenFilename(FileFilter:="CSV (*.csv), *.csv", _
Title:="Daten")
If Dateiname = False Then Exit Sub
strVerzeichnis = VBA.CurDir
Set wbAktiv = ActiveWorkbook
Set wksAktiv = ActiveSheet
Set rngZelle = Worksheets("Auswertung").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Dateiname = Dir(strVerzeichnis & Application.PathSeparator & "*.csv")
.....

Gruß
Rudi
AW: Datei Import
19.04.2011 15:44:49
Careem21
Ich bin begeistert, Danke :)
Jetzt hab ich noch eine Sache, die ich ganz vergessen hatte.
Ist es möglich hier eine Prüfroutine einzubauen, welche eine Splate der .csv Datei überprüft (Spalte "ID") und doppelte Einträge (die ganze Zeile) löscht?
Anzeige
AW: Datei Import
20.04.2011 12:06:26
Rudi
Hallo,
sicher geht das.
ID in A
.....
'Umbenannte Kopie öffnen
Application.Workbooks.OpenText Filename:=DateinameTXT, Origin:=xlWindows, _
StartRow:=2, _
DataType:=xlDelimited, ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=True, _
Comma:=False, _
Space:=False, _
Other:=False
Set wb = ActiveWorkbook
With wb.Sheets(1)
For Each rngC In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)) 'ID in Spalte A,  _
anpassen
If Application.CountIf(.Range(.Cells(2, 1), rngC), rngC) > 1 Then
If rngDel Is Nothing Then
Set rngDel = rngC
Else
Set rngDel = Union(rngDel, rngC)
End If
End If
Next rngC
End With
If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
'Daten Kopieren
wb.Sheets(1).UsedRange.Copy
......

Gruß
Rudi
Wozu eigentlich die Kopiererei?
Anzeige
AW: Datei Import
21.04.2011 11:53:04
Careem21
Folgendes Szenario:
Ich habe einen Ordner ("Auswertung") wo täglich eine neue .csv-Datei hinzukommt. Ich möchte mit der Kopiergeschichte alle Rohdaten aus den einzelnen .csv-Dateien in einer .xls Datei haben.
Das hat mit diesem Code soweit gut funktioniert.
Nun musste ich feststellen, sobald ich die Daten von einer neuen .csv-Datei hinzufüge, werden die alten .csv-Dateien auch nochmal überprüft und die Daten in die .xls Datei geschrieben.
Meine vbs-Kenntnisse sind leider sher gering.
Sehen Sie evtl. den Fehler im Code?
Vielen Dank für die Hilfe!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige