CSV Editor zum löschen von Spalten
#21
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
Top
#22
(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.

Top
#23
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.
Top
#24
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 Modul1
Option 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:
  • Daniel Albert
Top
#25
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:
  • Daniel Albert
Top
#26
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
Top
#27
Hallo snb, dein Code ist auch cool aber es werden die "" entfernt :(
Top
#28
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:
  • Daniel Albert
Top
#29
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
Top
#30
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).
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste