Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: FlorianF am August 02, 2017, 10:17:46 Vormittag

Titel: Office 2016 CSV-Export - Falsches Trennzeichen
Beitrag von: FlorianF am August 02, 2017, 10:17:46 Vormittag
Hi Leute,

kann mir jemand sagen, warum dieser Code als Trennzeichen ein Komma und kein Semikolon ausgibt? Ich raff es nicht...

Sub CSVExportieren(strExporttabelle As String, strTitel As String)

    Dim strDateiname As String
    Dim lngZeilen As Long, lngSpalten As Long
    Dim lngZeile As Long, lngSpalte As Long
    Dim Data
    Dim rngExportbereich As Range
   
    Set rngExportbereich = ThisWorkbook.Worksheets(strExporttabelle).UsedRange
    lngSpalten = rngExportbereich.Columns.Count
    lngZeilen = rngExportbereich.Rows.Count
    strDateiname = Application.GetSaveAsFilename(FileFilter:="csv-Dateien (*.csv), *.csv", Title:=strTitel)
   
    Open strDateiname For Output As #1
   
    For lngZeile = 1 To lngZeilen
        For lngSpalte = 1 To lngSpalten
            Data = rngExportbereich.Cells(lngZeile, lngSpalte).Value
            If IsDate(Data) Then
            Else: If IsNumeric(Data) Then Data = Val(Data)
            End If
            If IsEmpty(rngExportbereich.Cells(lngZeile, lngSpalte)) Then Data = ""
            If lngSpalte <> lngSpalten Then
                Write #1, Data;
            Else
                Write #1, Data
            End If
        Next lngSpalte
    Next lngZeile
    Close #1

End Sub

Danke euch!!
Titel: Antw:Office 2016 CSV-Export - Falsches Trennzeichen
Beitrag von: FlorianF am August 03, 2017, 14:00:30 Nachmittag
Hat hierzu jemand noch eine Idee? Finde im Internet null Anhaltspunkte woran es liegen könnte.  :-\
Titel: Antw:Office 2016 CSV-Export - Falsches Trennzeichen
Beitrag von: gmg-cc am August 03, 2017, 14:29:20 Nachmittag
Ich weiß, das hört sich sarkastisch an:, entspricht aber fast immer den Tatsachen:
Wenn ich irgendwelchen Code aus dem Internet abschreibe ohne ihn zu verstehen oder nachvollziehen zu können, dann kommt so etwas dabei heraus.
Umsonst ist nun ab und zu auch umsonst (im doppelten Sinne). Wenn ich mein Problem in fachkundige Hände (eines Dienstleisters) gebe, dann hat der a) mehr Wissen als ich (zumindest meistens) und b) hat der auch die Verantwortung. Klar, der kostet etwas, aber wenn dir (oder deinem Chef) deine Arbeit nichts Wert ist ...

Btw: VBA ist ein US-Produkt und da ist das Komma nun einmal das Trennzeichen für CSV, wie auch schon der Name sagt. Also hat das etwas mit den localen Gegebenheiten zu tun.
Titel: Antw:Office 2016 CSV-Export - Falsches Trennzeichen
Beitrag von: maninweb am August 03, 2017, 16:17:56 Nachmittag
Hallo,

anbei ein Code, wie man beispielsweise sowas machen kann. Anpassen an Deine Bedürfnisse musst Du es aber schon selber.
Der Code, den Du, wie von Günther vermutet, wohl irgendwo kopiert hast, ist zu umständlich.

Code: Visual Basic
  1.   Sub ExportAsCSV()
  2.    
  3.     Dim h As Long
  4.     Dim n As Long
  5.     Dim p As Long
  6.    
  7.     Dim f As String
  8.     Dim v As String
  9.    
  10.     Dim d As Variant
  11.    
  12. '   Array...
  13.    
  14.     d = ThisWorkbook.Worksheets(1).Range("B2:D6").Value
  15.    
  16. '   Datei...
  17.    
  18.     f = "E:\Temp\" & "Test-" & Format(Now, "yyyy.mm.dd-hh.mm.ss") & ".csv"
  19.    
  20. '   Loop...
  21.    
  22.     For n = LBound(d, 1) To UBound(d, 1)
  23.    
  24.       For p = LBound(d, 2) To UBound(d, 2)
  25.        
  26.         If p > LBound(d, 2) Then
  27.          
  28.           v = v & ";" & CStr(d(n, p))
  29.        
  30.         Else
  31.          
  32.           v = v & CStr(d(n, p))
  33.          
  34.         End If
  35.        
  36.       Next
  37.      
  38.       v = v & vbCrLf
  39.      
  40.     Next
  41.    
  42. '   Dateinummer...
  43.    
  44.     h = FreeFile
  45.    
  46. '   Schreiben...
  47.    
  48.     Open f For Binary Access Write As #h
  49.     Put #h, , v
  50.     Close #h
  51.    
  52.   End Sub

Gruß
Titel: Antw:Office 2016 CSV-Export - Falsches Trennzeichen
Beitrag von: FlorianF am August 03, 2017, 16:52:27 Nachmittag
Ich weiß, das hört sich sarkastisch an:, entspricht aber fast immer den Tatsachen:
Wenn ich irgendwelchen Code aus dem Internet abschreibe ohne ihn zu verstehen oder nachvollziehen zu können, dann kommt so etwas dabei heraus.
Umsonst ist nun ab und zu auch umsonst (im doppelten Sinne). Wenn ich mein Problem in fachkundige Hände (eines Dienstleisters) gebe, dann hat der a) mehr Wissen als ich (zumindest meistens) und b) hat der auch die Verantwortung. Klar, der kostet etwas, aber wenn dir (oder deinem Chef) deine Arbeit nichts Wert ist ...

Btw: VBA ist ein US-Produkt und da ist das Komma nun einmal das Trennzeichen für CSV, wie auch schon der Name sagt. Also hat das etwas mit den localen Gegebenheiten zu tun.

Du liegst mit all deinen Annahmen falsch ;) Den Code habe ich nicht aus dem Internet kopiert sondern aus einem VBA-Buch abgeschrieben, dort ist er auch erläutert und ich verstehe ihn bis darauf, dass er nicht wie gewünscht das Semikolon sondern ein Komma setzt.
Das Problem liegt bei mir sozusagen in fachkundigen Händen, da ich im Rahmen meiner Beratungstätigkeit seit einigen Jahren Tools in VBA für meine Kunden entwickle. Ich verdiene also Geld damit und gebe keines dafür aus. Hin und wieder treten jedoch Probleme auf, für die ich keine Erklärung finde oder einen Fehler "übersehe". Ich denke, das geht jedem so.
Was die eigentliche Problemlösung angeht habe ich vermutet, dass es an den Local-Einstellungen liegt, habe auch alles was ich in Excel dazu gefunden habe geprüft und es entspricht den "deutschen Standards".
Ich wäre dir daher zutiefst dankbar, wenn Du mir die Lösung verrätst :)


Hallo,

anbei ein Code, wie man beispielsweise sowas machen kann. Anpassen an Deine Bedürfnisse musst Du es aber schon selber.
Der Code, den Du, wie von Günther vermutet, wohl irgendwo kopiert hast, ist zu umständlich.

Habe es mittlerweile auf ähnliche Weise wie du gebaut und es funktioniert. Hab nur anstatt der "Bounds" mit der UsedRange gearbeitet.

Danke euch!!
Titel: Antw:Office 2016 CSV-Export - Falsches Trennzeichen
Beitrag von: gmg-cc am August 03, 2017, 17:30:43 Nachmittag
Moin,
ich sage mal nichts dazu, Herr Kollege. Hier ein Link zu einem anderen Forum: http://www.herber.de/forum/archiv/636to640/636298_VBA_keine_laenderspez_Formate_beim_CSVSpeichern.html (http://www.herber.de/forum/archiv/636to640/636298_VBA_keine_laenderspez_Formate_beim_CSVSpeichern.html)
Und nun rate mal, warum ich "locales" mit "c" geschrieben hatte ...

Ich bin übrigens auch Autodidakt und habe recht oft lernen müssen, dass auch in dieser Branche einer von anderen abschreibt und das dann in Büchern veröffentlicht. Meist wird ein Code dadurch nicht besser. Leider gab es in meinen Anfangszeiten noch nicht das Internet in dieser Form (ich fing mit einem Akustikkoppler an  :o) und musste mich durch mehrere Quellen (Bücher) quälen, um zu tragbaren Ergebnissen zu kommen.