CSV mit VBA öffnen, Problem mit Trennzeichen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: CSV mit VBA öffnen, Problem mit Trennzeichen
von: Klaus
Geschrieben am: 21.09.2015 09:50:41

Hallo
Ich versuche gerade mittels VBA eine CSV Datei zu öffnen, die aus einem Magento-Export stammt.
Hierbei habe ich das Problem, dass die Tabellen total verschoben sind weil die Separationszeichen nicht so erkannt werden wie ich das gerne möchte.
Wenn ich die csv vor dem VBA-Zugriff mit dem Windows Texteditor öffne und in die oberste Zeile sep=, schreibe, funktioniert alles tadellos.
Da das VBA Makro aber für Kollegen gedacht ist, die sich nicht so sehr mit dem Hintergrund des Ganzen beschäftigen, möchte ich diesen Schritt gerne mithilfe des VBA Codes vorwegnehmen.
Kann mir hierbei bitte jemand helfen?
Mein Code sieht so aus:


Dim varZielDatei As Variant
    Dim varMagento As Variant
    Dim WorkbookMagento As Workbook
    Dim WorkbookZiel As Workbook
    Dim WSMagento As Worksheet
    Dim WSMagentoZiel As Worksheet
Public Sub Magento_Export_bearbeiten()
    MsgBox ("Nun bitte die Magento-Exportdatei auswählen.")
    Application.ScreenUpdating = False
    
  'Open GetOpenFilename with the file filters.
    varMagento = Application.GetOpenFilename( _
            Title:="Magento-Exportdatei auswählen", _
            MultiSelect:=False)
    If varMagento = False Then
        MsgBox "Abbruch durch Benutzer. Es wurde keine Datei ausgewählt.", vbInformation
        Exit Sub
        Else
        MsgBox "Folgende Magento-Exportdatei wurde ausgewählt:" & vbCrLf & varMagento
    End If
    
    Workbooks.Open Filename:=varMagento
    Set WorkbookMagento = Workbooks.Open(varMagento)
    Set WSMagento = WorkbookMagento.Sheets(1)
    Set WSMagentoZiel = WorkbookZiel.Sheets(3)
    
   
    WSMagento.Cells.Select
    Selection.Copy
    WSMagentoZiel.Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
    WorkbookMagento.Close Savechanges:=False

Ich habe versucht

Set WorkbookMagento = Workbooks.Open(varMagento, , , , , , , , , , , , , True)

zu verwenden weil ich gelesen habe, dass Local = True helfen soll, aber leider trifft das bei meinem Problem (oder zumindest meiner Anwendung) nicht zu.
Könnt ihr mir bitte weiterhelfen?

Bild

Betrifft: AW: CSV mit VBA öffnen, Problem mit Trennzeichen
von: matthias
Geschrieben am: 21.09.2015 10:29:03
Hallo Klaus,
Daten mit Trennzeichen können einmal beim Importieren mit "Erterne Daten abrufen" oder wenn sie bereits im Dokument sind mit "Text in Spalten" zerlegt werden.
Hier ein Beispiel für letzteres:

    Range("A1:A30").TextToColumns _
        Destination:=Range("A1"), _
        DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=True, _
        Tab:=True, _
        Semicolon:=False, _
        Comma:=False, _
        Space:=True, _
        Other:=False, _
        FieldInfo:=Array(Array(1, 1), Array(2, 1)), _
        TrailingMinusNumbers:=True

Wie du siehst sind die Optionen dazu recht vielseitig, desshalb am besten den Assistenten verwenden und probieren bis es so aussieht wie du es haben willst, dabei den Makrorekorder mitlaufen lassen um die perfekten Einstellungen zu erhalten.
lg Matthias

Bild

Betrifft: AW: CSV mit VBA öffnen, Problem mit Trennzeichen
von: Klaus
Geschrieben am: 21.09.2015 15:07:29
Hallo Matthias,
zuerst: Vielen vielen Dank. Es funktioniert wunderbar.
Das mag jetzt vielleicht seltsam klingen, aber ich verstehe nicht ganz warum es funktioniert. Könntest du mir bitte noch zwei Fragen dazu beantworten damit ich es besser verstehe?
Der Range geht von A1 bis A30. Deshalb dachte ich erst, dass nur diese Zellen bearbeitet werden, aber in der Praxis wirkt sich das auf alle 1400 Zeilen aus, die ich habe.
Ich dachte, dass ich eigentlich Comma auf true setzen müsste weil ich ja auch Erfolg hatte als ich in die csv mittels Notepad ein "sep=," eingesetzt hatte. Kannst du mir noch bitte sagen warum es mit space funktioniert?

Bild

Betrifft: AW: CSV mit VBA öffnen, Problem mit Trennzeichen
von: matthias
Geschrieben am: 22.09.2015 10:06:12
Hallo Klaus,
das mit dem Bereich wundert mich, eine kurze Probe bewirkt bei mir, dass wirklich nur diese Zellen bearbeitet werden, nicht der Rest. Ich verwende Office2013, aber das sollte hier keinen Unterschied machen.
Um die komplette Spalte A zu zerlegen, würde ich normalerweise schreiben:
Range("A:A").TextToColumns _
...

Der Grund warum es mit Leerzeichen funktioniert liegt wahrscheinlich darin, dass auf dein Komma ein Leerzeichen folgt. Das Komma bleibt dann aber erhalten, was bei Zahlen unter Umständen nichts ausmacht, bei Text ist das jedoch nervig. Ohne deine Daten zu sehen, lässt sich leider nicht viel dazu sagen.
Da du weist, dass dein Trennzeichen ein Komma ist, würde ich dies auch auf True setzen, Leerzeichen auf False, um Eventualitäten vorzubeugen.
lg Matthias

 Bild

Beiträge aus den Excel-Beispielen zum Thema "CSV mit VBA öffnen, Problem mit Trennzeichen"