Registriert seit: 21.07.2016
Version(en): 2007
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
Registriert seit: 12.04.2014
Version(en): Office 365
(18.10.2016, 07: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?
Wir sehen uns! ... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 12.04.2014
Version(en): Office 2010/2013
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.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Daniel Albert
Registriert seit: 29.09.2015
Version(en): 2030,5
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
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Daniel Albert
Registriert seit: 12.04.2014
Version(en): Office 2010/2013
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
Registriert seit: 12.04.2014
Version(en): Office 2010/2013
Hallo snb, dein Code ist auch cool aber es werden die "" entfernt :(
Registriert seit: 29.09.2015
Version(en): 2030,5
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
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Daniel Albert
Registriert seit: 12.04.2014
Version(en): Office 2010/2013
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
Registriert seit: 29.09.2015
Version(en): 2030,5
18.10.2016, 21:41
(Dieser Beitrag wurde zuletzt bearbeitet: 18.10.2016, 21:41 von snb.)
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).
|