ich bins schon wieder.
könnte mir bitte jemand bei diesem problem helfen?
https://www.herber.de/forum/archiv/868to872/t871930.htm#871930
gruß marco
Sub XLS_aus_CSV_Alle()
'Erzeugt aus Daten in allen CSV-Dateien eines Verzeichnisses jeweils eine Excel-Datei
'Datensatzaufbau in CSV-Datei
'Datum Uhrzeit,Wert1,Wert2;;;;
'2004-05-26 12:44:50.178000,-3.2958979606628418,8392705;;;;
'2004-05-27 13:00:50.179000,-3.3569331169128418,8392705;;;;
Dim wbThis As Workbook, wbCSV As String, wbZiel As Workbook
Dim wksSteuer As Worksheet, wksZiel As Worksheet
Dim PfadCSV$, PfadXLS$, DateiCSV, NameCSV$, ExtCSV$, ExtXLS$
Dim Zeile As Long, Zeile1 As Long, Text$
Dim Datum As Double, strDatum$, strWert1$, Wert1 As Double, strWert2$, Wert2 As Double
' Basisdaten setzen/einlesen
Set wbThis = ThisWorkbook
Set wksSteuer = wbThis.Worksheets("Steuerung")
With wksSteuer
PfadCSV$ = .Cells(11, 4)
PfadXLS$ = .Cells(12, 4)
ExtCSV$ = .Cells(14, 6)
ExtXLS$ = .Cells(15, 6)
Zeile1 = .Cells(21, 4) 'Startzeile für das Eintragen der Daten im Blatt Muster
End With
'Daten aus CSV-Dateien in XLS-Dateien überführen
DateiCSV = Dir(PfadCSV$ & "\*." & ExtCSV$)
Do Until DateiCSV = ""
'Neue XLS-Datei auf Basis Blatt "Muster" anlegen
wbThis.Sheets("Muster").Copy
Set wbZiel = ActiveWorkbook
Set wksZiel = wbZiel.Worksheets(1)
'Blatt Muster umbenennen
NameCSV = Left(DateiCSV, Len(DateiCSV) - 4)
wksZiel.Name = NameCSV
'CSV-Datei zum einlesen vorbereiten
Open PfadCSV$ & "\" & DateiCSV For Input As #1
'Startzeile für Zieltabelle setzen
Zeile = Zeile1
'Daten Zeilenweise einlesen, Werte ermitteln und übertragen
Do Until EOF(1)
Line Input #1, Text$
'Datum auslesen und in Dezimalzahl verwandeln
'Datums-/Zeitformat in Mustertabelle einstellen!!!
If Text "" Then
Pos1 = InStr(1, Text$, ",")
strDatum$ = WorksheetFunction.Substitute(Left(Text, Pos1 - 1), ".", ",")
Datum = CDbl(CDate(Left(strDatum$, 10)) + CDate(Mid(strDatum$, 12, 8))) _
+ CDbl(Mid(strDatum$, 20)) / 24 / 60 / 60
'1. Wert auslesen
Pos2 = InStr(Pos1 + 1, Text$, ",")
strWert1$ = Mid(Text$, Pos1 + 1, Pos2 - Pos1 - 1)
Wert1 = CDbl(Application.WorksheetFunction.Substitute(strWert1$, ".", ","))
'2. Wert auslesen
Pos3 = InStr(Pos2 + 1, Text$, ";")
If Pos3 = 0 Then
strWert2$ = Mid(Text$, Pos2 + 1)
Else
strWert2$ = Mid(Text$, Pos2 + 1, Pos3 - Pos2 - 1)
End If
Wert2 = CDbl(Application.WorksheetFunction.Substitute(strWert2$, ".", ","))
'Werte in Tabelle eintragen
wksZiel.Cells(Zeile, 1) = Datum
wksZiel.Cells(Zeile, 2) = Wert1
wksZiel.Cells(Zeile, 3) = Wert2
'Zeilenzähler erhöhen
Zeile = Zeile + 1
End If
Loop
Close #1
'Daten nach der 1. Spalte (Datum/Uhrzeit) sortieren
With wksZiel
.Range(.Cells(Zeile1, 1), .Cells(.Rows.Count, 3).End(xlUp)).Sort _
Key1:=.Cells(Zeile1, 1), Order1:=xlAscending, Header:=xlNo
End With
wbZiel.SaveAs FileName:=PfadXLS$ & "\" & NameCSV & "." & ExtXLS
wbZiel.Close savechanges:=False
DateiCSV = Dir
Loop
End Sub
Sub XLS_aus_CSV_Alle_Variante()
'Erzeugt aus Daten in allen "sauberen" CSV-Dateien eines Verzeichnisses jeweils eine Excel- _
Datei
'Datensatzaufbau in CSV-Datei
'Datum Uhrzeit,Wert1,Wert2
'2004-05-26 12:44:50.178000,-3.2958979606628418,8392705
'2004-05-27 13:00:50.179000,-3.3569331169128418,8392705
Dim wbThis As Workbook, wbCSV As String, wbZiel As Workbook
Dim wksSteuer As Worksheet, wksZiel As Worksheet
Dim PfadCSV$, PfadXLS$, DateiCSV, NameCSV$, ExtCSV$, ExtXLS$
Dim Zeile As Long, Zeile1 As Long, Text$
Dim Datum As Double, strDatum$, Wert1 As Double, Wert2 As Double
' Basisdaten setzen/einlesen
Set wbThis = ThisWorkbook
Set wksSteuer = wbThis.Worksheets("Steuerung")
With wksSteuer
PfadCSV$ = .Cells(11, 4)
PfadXLS$ = .Cells(12, 4)
ExtCSV$ = .Cells(14, 6)
ExtXLS$ = .Cells(15, 6)
Zeile1 = .Cells(21, 4) 'Startzeile für das Eintragen der Daten im Blatt Muster
End With
'Daten aus CSV-Dateien in XLS-Dateien überführen
DateiCSV = Dir(PfadCSV$ & "\*." & ExtCSV$)
Do Until DateiCSV = ""
'Neue XLS-Datei auf Basis Blatt "Muster" anlegen
wbThis.Sheets("Muster").Copy
Set wbZiel = ActiveWorkbook
Set wksZiel = wbZiel.Worksheets(1)
'Blatt Muster umbenennen
NameCSV = Left(DateiCSV, Len(DateiCSV) - 4)
wksZiel.Name = NameCSV
'CSV-Datei zum einlesen vorbereiten
Open PfadCSV$ & "\" & DateiCSV For Input As #1
'Startzeile für Zieltabelle setzen
Zeile = Zeile1
'Daten Zeilenweise einlesen, Werte ermitteln und übertragen
Do Until EOF(1)
Input #1, strDatum, Wert1, Wert2
'Datum auslesen und in Dezimalzahl verwandeln
'Datums-/Zeitformat in Mustertabelle einstellen!!!
If strDatum "" Then
strDatum = WorksheetFunction.Substitute(strDatum, ".", ",")
Datum = CDbl(CDate(Left(strDatum, 10)) + CDate(Mid(strDatum, 12, 8))) _
+ CDbl(Mid(strDatum, 20)) / 24 / 60 / 60
'Werte in Tabelle eintragen
wksZiel.Cells(Zeile, 1) = Datum
wksZiel.Cells(Zeile, 2) = Wert1
wksZiel.Cells(Zeile, 3) = Wert2
'Zeilenzähler erhöhen
Zeile = Zeile + 1
End If
Loop
Close #1
'Daten nach der 1. Spalte (Datum/Uhrzeit) sortieren
With wksZiel
.Range(.Cells(Zeile1, 1), .Cells(.Rows.Count, 3).End(xlUp)).Sort _
Key1:=.Cells(Zeile1, 1), Order1:=xlAscending, Header:=xlNo
End With
wbZiel.SaveAs FileName:=PfadXLS$ & "\" & NameCSV & "." & ExtXLS
wbZiel.Close savechanges:=False
DateiCSV = Dir
Loop
End Sub