Hallo Daniel,
hast Du vielleicht Access zur Hand?
Ich hatte das gestern noch mit der Beispieldatei getestet. Das Ergebnis sah sehr gut aus.
Gruß
Ich
(18.10.2016, 06:05)Daniel Albert schrieb: [ -> ]Die Datenbank ist glaube eine Mysql und wird von einem externen zur Verfügung gestellt. Problem ist das die Daten die wir als csv Datei erhalten so nicht von der Mysql Datenbank aufgenommen werden können. Daher wurde damals der Converter programmiert.
Also der Weg ist:
Programm X exportiert csv-Datei
Converter importiert csv-Datei
Converter prüft die Daten
Converter erstellt mehrere xls-Dateien
Mysql-Datebank importiert xls-Dateien
Und wenn ich das richtig verstehe dann gibt es weder für Programm X noch für den Converter noch für die Mysql-Datenbank Support um dieses Problem zu lösen?
Hallo, das ist unser Problem,
Programm X exportiert csv-Datei - ist ihre Datenschnittstelle und daran wollen sie auch nichts verändern
Converter importiert csv-Datei
Converter prüft die Daten
Converter erstellt mehrere xls-Dateien - wurde mal programmiert und hat bis heute gut funktioniert - jetzt leider nicht mehr
Mysql-Datebank importiert xls-Dateien - würden die schon machen kosten aber richtig viel Geld
Vielleicht ist ja Power Query die Lösung. Ich muss vorher erst einmal die Festlegung erfahren nach was der Converter die CSV aufsplittet. Sobald ich dieses weiß kann ich weiter daran arbeiten.
Hallo Daniel,
per VBA ließe sich die CSV so vorbereiten:
Modul mdlTextOperationen'http://www.online-excel.de/excel/singsel_vba.php?f=49
Option Explicit
Option Private Module
Public Function dat_ReadText(DerPfad As String) As String
Dim sText As String, iFrei As Integer, i As Long
On Error GoTo Fehler
sText = ""
iFrei = FreeFile
Open DerPfad For Binary Access Read As #iFrei
i = LOF(iFrei)
sText = String(i, 0)
Get #iFrei, , sText
Close #iFrei
dat_ReadText = sText
Exit Function
Fehler:
MsgBox Err.Description
End Function
Public Sub dat_WriteText(DerPfad As String, DerText As String)
Dim iFrei As Integer
On Error GoTo Fehler
iFrei = FreeFile
Open DerPfad For Output As #iFrei
Print #iFrei, DerText;
Close #iFrei
Exit Sub
Fehler:
MsgBox Err.Description
End Sub
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media
Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0
Modul Modul1Option Explicit
Public Sub CSV_Kuerzen()
Dim lngZ As Long
Dim sPfad As String, sTextRaus As String, sTextRein As String
Dim vText As Variant, vZeile As Variant
sPfad = "C:\Users\Kuwer\Eigene Dateien\Excel\Foren\Muster.csv" ' Pfad anpassen
'Einlesen der Datei
sTextRein = dat_ReadText(sPfad)
'Kontrolle
MsgBox sTextRein
'Text wird zeilenweise in Arrayvariable eingelesen
vText = Split(sTextRein, vbNewLine)
'alle Zeilen auf 33 Spalten kürzen
For lngZ = 0 To Ubound(vText) - 1
vZeile = Split(vText(lngZ), ";")
Redim Preserve vZeile(32)
vText(lngZ) = Join(vZeile, ";")
Next lngZ
'bearbeiteten Text in Datei zurückschreiben
sPfad = "C:\Users\Kuwer\Eigene Dateien\Excel\Foren\Muster_Neu.csv"
sTextRaus = Join(vText, vbNewLine)
dat_WriteText sPfad, sTextRaus
'Kontrolle
sTextRein = dat_ReadText(sPfad)
MsgBox sTextRein
End Sub
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media
Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0
Gruß Uwe
Code:
Sub M_snb()
With CreateObject("scripting.filesystemobject")
sn = Filter(Split(Replace(.opentextfile("J:\temp\muster.csv").readall, ",", "."), vbCrLf), ";")
For j = 0 To UBound(sn)
sp = Split(sn(j), ";")
sp(UBound(sp) - 1) = "~"
sp(UBound(sp)) = "~"
sn(j) = Join(Filter(sp, "~", 0), ",")
Next
.createtextfile("J:\temp\muster_001.csv").write Replace(Join(sn, vbCrLf), Chr(34), "") & vbCrLf
End With
Workbooks.Open "J:\temp\muster_001.csv"
End Sub
Hallo Kuwer,
Ich habe beides jeweils in ein Modul gepackt und den Pfad für die Muster.csv geändert. Der Code funktioniert super Danke. Kann der Pfad vorher aber abgefragt werden ? Der ändert sich ständig nach Kalenderwoche. So wie ich es verstehe werden die beiden letzten spalten entfernt und feritg, sehr schön
Hallo snb, dein Code ist auch cool aber es werden die "" entfernt :(
Wenn du das nicht möchtest:
Code:
Sub M_snb()
With CreateObject("scripting.filesystemobject")
sn = Filter(Split(Replace(.opentextfile("J:\temp\muster.csv").readall, ",", "."), vbCrLf), ";")
For j = 0 To UBound(sn)
sp = Split(sn(j), ";")
sp(UBound(sp) - 1) = "~"
sp(UBound(sp)) = "~"
sn(j) = Join(Filter(sp, "~", 0), ",")
Next
.createtextfile("J:\temp\muster_001.csv").write Join(sn, vbCrLf) & vbCrLf
End With
Workbooks.Open "J:\temp\muster_001.csv"
End Sub
Servus snb, ok aber es wird aus ; dann , gemacht. Kannst du das noch umstellen - würde es gern selbst verstehe aber nicht wie. Kann man noch den Pfad wo die Muster.csv liegt vorher abfragen ? und der Speicherort soll dann genau diesen Pfad annehmen?
Gruß Daniel
Es wäre sowieso besser die ganze Code zu verstehen bevor sie zu verwenden.
Es gibt im Code nicht viele Orten wo ; auftaucht.
Kannst du selbst einfach anpasssen (davon lernt man am meisten).