Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1268to1272
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 mit Datumsabfrage in den Daten

CSV mit Datumsabfrage in den Daten
karl
Hallo miteinander,
mit nachfolgendem Code (gegoogelt) lese ich eine CSV Datei ein.(Kontodaten)
Könnte man beim einlesen diese Daten auf ein bestimmten Monat einschränken,
zb alle Daten von Monat Juli. Die Datumsangaben stehen in der CSV in Spalte B.
Und wenn dann bitte mit Code.
Vielen Dank für eure Hilfe
Karl

Private Sub CommandButton1_Click()
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:="CSV-Datei im Verzeichnis auswählen")
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:=1, _
DataType:=xlDelimited, ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=True, _
Comma:=False, _
Space:=False, _
Other:=False
Set wb = ActiveWorkbook
'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

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

Betreff
Benutzer
Anzeige
AW: CSV mit Datumsabfrage in den Daten
11.07.2012 22:56:51
fcs
Hallo Karl,
ich hab dein Makro mal entsprechend angepasst.
Testen konnte ich es bedingt, da ich ja keine entsprechenden Beispeldateien habe.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim wb As Workbook, wks As Worksheet, wbAktiv As Workbook, wksAktiv As Worksheet
Dim Zeile As Long, ZeileStart As Long, varMonat As Variant
Dim rngZelle As Range
Dim strVerzeichnis As String
Dim Dateiname As Variant, DateinameTXT As String
Eingabe:
'Einzulesenden Monat eingeben
varMonat = Application.InputBox(Prompt:="Bitte Nummer des Monats (Januar = 1) angeben, " _
& "dessen Daten eingelesen werden sollen?", _
Title:="Kontodaten Daten einlesen", _
Default:=Month(DateSerial(Year(Date), Month(Date) - 1, 1)), _
Type:=1)
If varMonat = False Then
GoTo Beenden
Else
If varMonat  12 Then
MsgBox "Unzulässiger Monat wurde eingegeben"
GoTo Eingabe
End If
End If
'Verzeichnis der CSV-Dateien wählen
Dateiname = Application.GetOpenFilename(FileFilter:="CSV (*.csv), *.csv", _
Title:="CSV-Datei im Verzeichnis auswählen")
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)
ZeileStart = rngZelle.Row
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:=1, _
DataType:=xlDelimited, ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=True, _
Comma:=False, _
Space:=False, _
Other:=False
Set wb = ActiveWorkbook
'Daten anderer Monate löschen
With wb.Sheets(1)
For Zeile = .Cells(.Rows.Count, 2).End(xlUp).Row To 1 Step -1
If IsDate(.Cells(Zeile, 2).Text) Then
If Month(CDate(.Cells(Zeile, 2).Text))  varMonat Then
'Zeile löschen
.Rows(Zeile).Delete Shift:=xlShiftUp
Else
'Datums-Text in Exceldatum umwandeln
.Cells(Zeile, 2).Value = CDate(.Cells(Zeile, 2).Text)
End If
End If
Next
'Daten kopieren
ZeileStart = .Cells(.Rows.Count, 2).End(xlUp).Row
If .Cells(ZeileStart, 1)  "" Then
.Range(.Cells(1, 1), .Cells(ZeileStart, 2) _
.Offset(0, UsedRange.Columns.Count)).Copy
rngZelle.PasteSpecial Paste:=xlPasteValues
'Nächste Einfügezelle setzen
Set rngZelle = rngZelle.Offset(ZeileStart, 0)
End If
End With
wb.Close savechanges:=False
'TXT-Kopie wieder löschen
VBA.Kill (DateinameTXT)
Dateiname = Dir
Loop
Beenden:
Application.ScreenUpdating = True
End Sub

Anzeige
AW: CSV mit Datumsabfrage in den Daten
13.07.2012 10:04:31
karl
Hallo Franz.
danke für die Codeanpassung.werds die tage ausprobieren.
Bin zzt nicht am pc zuhause
schönes Wochenende
karl

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige