Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
872to876
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
872to876
872to876
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datei sortieren, formatieren, umwandeln

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei sortieren, formatieren, umwandeln
25.05.2007 08:42:27
fcs
Hallo Marco,
ich schau mir das heute Abend oder morgen an.
Die Schleifen-Struktur für das Abarbeiten der Dateien muss dann muss dann etwas anders aufgebaut werden.
Statt den Nummern-Bereich mit den Dateien abzuarbeiten, muss mit Methode Dir und Angabe von Suchkriterien die Liste der Dateien erzeugt werden und diese Liste wird dann in einer Do ... Loop Schleife abgearbeitet.
Gruß
Franz

AW: Datei sortieren, formatieren, umwandeln
25.05.2007 10:30:00
Marco
hallo franz!
ja leider hat sich die ausgangssituation ein wenig verändert und trotz deiner kommentarzeilen im makro, steige ich nicht dahinter was ich in diesem fall ändern müßte. daher freut es mich sehr, dass du dich wieder meinem problem annimmst.
ich danke dir vielmals im voraus für deine mühen!
gruß marco

Anzeige
AW: Datei sortieren, formatieren, umwandeln
25.05.2007 21:09:00
fcs
Hallo Marco,
hier der Code für de beiden Makro-Varianten, die alle CSV-Dateien eines Verzeichnisse mit dem vorgegebenen Spaltenaufbau in eine Excel-Datei umwandeln.
Die beiden Makros kopierst du der Übersichtlichkeit wegen einfach in ein neues Modul in der Steuerungsdatei.
Danach legst du dir 2 zusätzliche Buttons (aus der Symbolleiste "Steuerelement - Tolbox") im Tabellenblatt an und erstelltst anlog den vorhandenen Buttons im VBA-Code des Tabellenblatts 2 Prozeduren die die neuen Makros starten.
Du kannst dann wahlweise die beiden Varinten benutzen. Für die 2. Variante muss du nur das Verzeichnis auswählen und ggf. die Groß-/Kleinschreibung für "CSV" einstellen.
Gruß
Franz

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


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige